问候,我一直在想一个新项目,并且想知道是否有人对像Kayak.com这样的服务如何能够如此快速,准确地聚合来自许多来源的数据有任何想法。更具体地说,您认为Kayak.com正在与API进行交互还是为了满足用户请求而爬行/抓取了航空公司和酒店网站?我知道对这种事情没有一个正确的答案,但我很好奇知道别人认为这是解决此问题的好方法。如果有帮助,请假装明天创建kayak.com ...您的数据来自哪里?
Answers:
我在旅游行业工作,是您所描述的确切项目的软件架构师/项目负责人-在我们所在的地区,我们直接与供应商合作,但是对于支出,我们要连接到多个聚合器。
要回答您的问题……您拥有一些数据,有些是以各种方式获得的,有些则必须折磨和扭曲,直到它承认为止。
您要问的问题是...您想出售像皮划艇这样的广告还是要像Expedia这样大刀阔斧?您是搜索还是销售旅行服务?您是针对小众市场(例如,仅乘飞机旅行)还是所有目标(住宿,航空公司,租车,运输/观光/会议等附加服务)?您定位到区域(美国或美国部分地区)还是世界?您有多深入?您是在单个屏幕上显示几个网站,还是将不同的服务捆绑在一起并动态打包?
如果您使用的是Kayak商业模式,从技术上讲,您不需要网站的许可...但是,许多网站都有带有IFrames的联盟计划或其他将客户定向到其网站的简单方法。从好的方面来说,您不必处理付款/投诉和旅行者本身。至于缺点...如果您想自己比较价格并为用户提供最便宜的选择,则必须进行更深层次的集成,这意味着API和Web抓取。
至于网页抓取...避免使用。糟透了 真。只是不要这样做。相信我这一点。例如,有些东西,例如低成本的东西,如果没有网络抓取就无法获得。低成本航空公司依靠增值服务为生。如果用户没有看到他们的网站,则他们不会出售多余的东西,也不会赚到任何东西。因此,他们没有会员,不提供API,并且几乎不断更改网站布局。但是,有些公司靠网络抓取低成本者的网站并将其包装成漂亮的API来谋生。如果您负担得起,则可以为您的用户提供低成本航班的成本比较,这是巨大的。
另一方面,有提供API的“普通”运营商。对于航空公司而言,这并不是什么大问题,因为它们都隶属于IATA;基本上,您是从IATA购买的,然后IATA将这些钱分配给承运人。但是,您可能不想直接连接到运营商网络。如今,他们拥有Web服务和SOAP,但是当我说有一些SOAP协议时,请相信我,它们只是文本提示周围的薄薄包装,通过它们您可以与具有80es样式协议的大型机进行交互(以Unix为例)提示您按命令向您付款的地方;一次搜索大约需要20条命令)。这就是为什么您可能想通过更好的API与食物链中的其他人建立联系。
因此,航空公司处于高斯曲线的两个极端。一方面是单独的供应商,另一方面是高度集中的系统,您可以在其中实施一个API,并且可以飞往世界任何地方。住宿和其他旅行产品介于两者之间。有几家大型酒店聚集酒店,还有许多小型供应商,聚集着很多聚合器,这些聚合器仅覆盖一部分频谱。例如,您可以租用一座灯塔,它甚至不那么贵-但您将无法在一个地方比较不同灯塔的价格。
如果您进入Kayak商业模式,则可能最终会抓取网站。如果要集成不同的提供程序,则通常会使用API,其中一些API相当不错,并且大多数都是可以忍受的。我没有使用RSS,但是RSS和网络抓取之间并没有太大区别。Jeff的答案中还没有提到第四个选项……您可以每晚获取数据的一个选项,例如通过FTP和类似文件的.CSV文件。
然后就是复杂性。您想要增加的价值越多,您将不得不处理的复杂性就越大。您可以搜索允许携带宠物的住宿吗?距离市中心不到5公里的旅馆吗?您是否在组合航班,并且能够保证旅客有足够的时间从一个机场到达另一个机场...您可以提前出售交通工具吗?一位著名的大提琴手不想离开他的18世纪珍贵的大提琴;您能卖给他另一个大提琴座位吗(是的,不给这个大提琴)?
要比较价格吗?当然,房间是每晚30欧元。但是,您可以花30美元购买一张双人床,而花20美元购买一张单人床,或者您可以在一张双人床中再加一张床,并为第三人获得70%的折扣。但仅限于12岁以下的儿童;我们的加床不适合成人使用。而且,只有在计算最终价格时,您才不会在搜索结果中获得加床的价格。
而且甚至不让我开始进行动态包装。想要出售住宿+租车?没问题; 与两个不同的提供商集成,然后您就可以离开...手动更新城市中的位置列表(来自汽车租赁提供商)以与酒店匹配(来自住宿提供商,后者仅为您提供每个酒店的城市信息)。当然,前提是您已经匹配了两个城市的列表,因为没有国际标准的城市代码。
与许多其他具有许多产品的行业不同,旅游业具有许多非常复杂的产品。亚马逊很容易;卖书和卖土豆,是同一回事。您甚至可以将它们放在同一个盒子中。它们很容易结合,并且不是由很多零件组装而成。:)
PS链接到Hacker News上最近有趣的话题,并提供有关航班的一些内部信息。PPS最近偶然发现了一个关于IATA的NDC协议的相当古老的博客文章,其中概述了旅游业的联系方式以及历史教训。
他们使用ITA Software之类的软件包,这是Google收购的公司之一。
Travelport提供了一种称为“通用API”的产品,该产品可与航班,酒店和租车公司连接,并应对打包交易以及与税费和汇率有关的所有各种复杂问题:
https://developer.travelport.com/app/developer-network/resource-centre-uapi
我刚刚开始使用它,到目前为止看起来还不错。查询有些慢,但是每个OTA(在线旅行社)站点上的每个查询也是如此。
我最近在航班比较网站上找到了两个不错的API
有一个来自Wego,一个来自Skyscanner。两家公司似乎都拥有许多航空公司提供的数据范围和广度,并且文档也不错。
用户每次点击您的应用程序到预订网站时,Wego都会付款,而Skyscanner会向联盟会员支付50%的“收入”(我认为这是他们从航空公司获得的佣金)