使用酒店价格比较 API 使用 Python 查找酒店价格

2025年1月11日 | 阅读 4 分钟

在本教程中,我们将使用Python编程语言通过酒店价格比较API来编写查找酒店价格的程序。我们将使用Makcorps酒店API。

此API用于获取JSON数据,并有助于比较来自1500多个网站(如oyo.com、Hotels.com、Agoda.com、Expedia等)的酒店价格、评分和评论。它有助于检索有关任何酒店或任何城市的有关价格、评分、评论、历史价格以及许多其他方面的信息。

我们需要获取API密钥才能在本地计算机上使用它,可以从https://www.makcorps.com/获取。

注意-用户必须在makcorps.com上创建,然后,只有注册用户才能使用API。

我们已注册,并将使用登录凭据连接API。

所需模块

我们需要requests模块来处理makcorps API。如果您没有requests模块,请在终端中键入以下命令。

pip install requests

开始使用MakCorps API

此API旨在提供来自200多个供应商(如Booking.com、Agoda.com、Expedia和Hotels.com)的评论、价格、评分等数据。在实施之前,我们需要记住以下步骤-

  • 每个请求都应包含一个JWT令牌。JWT令牌将帮助我们识别账户。
  • 如果您超出计划的连接限制,API将响应429状态码,这可以通过再次订阅来解决。
  • 如果您是免费计划用户,则可以在30天内发起420次请求。如果超出限制,您将收到403错误。
  • 每个GET请求都将返回一个具有200响应代码的JSON响应。
  • 您也可以订阅高级计划。

如何获取JWT令牌?

要获取JWT令牌,API会暴露/auth端点。我们需要在请求体中传递用户名和密码。

实施

我们需要向API提供城市名称来搜索酒店价格。假设我们搜索城市德里,输出的JSON将是该城市不同酒店来自不同供应商的价格比较以及它们的名称。以下是代码实现。

示例 -

输出

price comparison data for a random date of city london is:        
{'comparison':
  [
    {
     'vendor1-price': 'US$217',
     'vendor3-price': 'US$246',
     'vendor2-price': 'US$217',
     'vendor3': 'travelup.com',
     'vendor1': 'Travelocity',
     'Hotel': 'Park Plaza Westminster Bridge London',
     'Best-price': 'US$\xa0246US$\xa0215Booking.com',
     'vendor2': 'Orbitz.com'
    }, 

    {
     'vendor1-price': '',
     'vendor3-price': '',
     'vendor2-price': '',
     'vendor3': 'Travelocity',
     'vendor1': 'Expedia.com',
     'Hotel': 'Travelodge London Covent Garden',
     'Best-price': 'US$\xa074Travelodge',
     'vendor2': 'Hotels.com'
    }, 

    {
     'vendor1-price': 'US$167',
     'vendor3-price': 'US$183',
     'vendor2-price': 'US$171',
     'vendor3': 'Nustay.com', 
     'vendor1': 'ParkGrandLondon',
     'Hotel': 'Park Grand London Kensington',
     'Best-price': 'US$\xa0170Booking.com', 
     'vendor2': 'Travelocity'
    }, 

    {
     'vendor1-price': '',
     'vendor3-price': '',
     'vendor2-price': '',
     'vendor3': 'Orbitz.com',
     'vendor1': 'Expedia.com',
     'Hotel': 'Travelodge London City hotel',
     'Best-price': 'US$\xa056Travelodge',
     'vendor2': 'Nustay.com'
    }, 

    {
     'vendor1-price': 'US$205',
     'vendor3-price': 'US$232',
     'vendor2-price': 'US$185',
     'vendor3': 'ZenHotels.com', 
     'vendor1': 'Booking.com',
     'Hotel': 'The Tower Hotel',
     'Best-price': 'US$\xa0206Orbitz.com',
     'vendor2': 'Trip.com'
    },

    {
     'vendor1-price': 'US$77',
     'vendor3-price': 'US$94',
     'vendor2-price': 'US$87',
     'vendor3': 'Nustay.com', 
     'vendor1': 'Official Site',
     'Hotel': 'Point A Hotel, London Kings Cross St Pancras',
     'Best-price': 'US$\xa087Orbitz.com',
     'vendor2': 'Booking.com'
    },

    {
     'vendor1-price': 'US$224',
     'vendor3-price': 'US$242',
     'vendor2-price': 'US$217',
     'vendor3': 'travelup.com', 
     'vendor1': 'Orbitz.com',
     'Hotel': 'Strand Palace Hotel',
     'Best-price': 'US$\xa0223Booking.com',
     'vendor2': 'ZenHotels.com'
    }
  ]
}

解释 -

在上面的代码中,我们导入了requests模块,并将请求URL赋值给req_url变量。我们还为city变量赋值了要搜索的城市名称。然后我们完成URL地址并将其存储在complete_url变量中。我们调用给定URL上的get方法并传递header。header必须包含我们从/auth API获取的JWT令牌。API返回响应,我们将其JSON格式数据转换为Python格式代码。现在我们检查状态码的值是否等于200,如果相等则表示记录已找到,否则表示记录未找到。因此,我们返回了获取的结果。

结论

在本教程中,我们学习了如何获取酒店价格并进行比较。Makcorps API将帮助选择所搜索城市中价格最低的酒店。