像kayak.com这样的网站如何汇总内容?[关闭]


82

问候,我一直在想一个新项目,并且想知道是否有人对像Kayak.com这样的服务如何能够如此快速,准确地聚合来自许多来源的数据有任何想法。更具体地说,您认为Kayak.com正在与API进行交互还是为了满足用户请求而爬行/抓取了航空公司和酒店网站?我知道对这种事情没有一个正确的答案,但我很好奇知道别人认为这是解决此问题的好方法。如果有帮助,请假装明天创建kayak.com ...您的数据来自哪里?

Answers:


146

我在旅游行业工作,是您所描述的确切项目的软件架构师/项目负责人-在我们所在的地区,我们直接与供应商合作,但是对于支出,我们要连接到多个聚合器。

要回答您的问题……您拥有一些数据,有些是以各种方式获得的,有些则必须折磨和扭曲,直到它承认为止。

你的角度是多少?

您要问的问题是...您想出售像皮划艇这样的广告还是要像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协议的相当古老的博客文章,其中概述了旅游业的联系方式以及历史教训


堂奇(Domchi),今年情况发生了很大变化吗?现在有其他可用的API吗?
Rizwan Kassim

不,不是很多;市场是零散的,这不可能很快改变,即​​使有的话。值得注意的事件是Google进入了航班市场(通过ITA软件,请参见mavrcks答案);他们有资源来巩固市场并提供API,但是我怀疑这是他们打算/能够做到的。在初创企业中,最有趣的竞争者可能是airbnb.com,但到目前为止,他们还不提供API。这个领域的API并不难找到,但很少免费。请查看programmableweb.com/apitag/bookingprogrammableweb.com/apitag/travel,以获取良好的API列表。
Domchi 2012年

您是说Kayak.com只是在刮擦航空公司网站上的内容,而不必为此付费吗?他们的商业模式允许他们这样做吗?主要航空公司的使用条款似乎表明,一个人不能从其网站上抓取内容/数据以在另一网站上使用。
瑞安·巴尔斯

@Ryan我无法说出Kayak的作用,但是我知道大多数低成本航空公司不提供任何API来专门通过其网站进行销售并尽可能多地加售。因此,聚合商又会抓取其网站并模拟用户互动。作为回应,航空公司经常更改网站结构,并且猫和老鼠的游戏还在继续。我想,运营商很难证明这种情况持续下去,但是他们知道这一点,并且可能不想完全阻止它,因为他们确实希望获得他们原本不会得到的流量。
Domchi

@Domchi您对法律的描述如何?据我了解,在涉及航空公司数据,ebay列表等(尤其是用于上述数据的商业用途)的各种法院案件中,网络抓取被视为非法。
贾斯汀·斯基尔斯


7

我知道只有3种方法可以从网站获取数据。

RSS提要-我们公司经常使用rss提要来将现有站点的数据与我们的应用程序集成。它的速度很快,并且大多数站点已经提供了RSS feed。这样做的问题是,并非所有站点都正确实施RSS标准,因此,如果您要从许多站点的许多RSS提要中提取数据,请确保编写代码,以便可以轻松添加异常和过滤器。

API-如果它们设计合理并具有您所需的所有信息,那么这些API很好,但是并非总是如此,此外,如果网站未使用标准API格式,则您必须支持多个API。

Web爬网-这种方法维护起来最不可靠,也最昂贵。但是,如果您一无所有,那就可以做到。


4

Travelport提供了一种称为“通用API”的产品,该产品可与航班,酒店和租车公司连接,并应对打包交易以及与税费和汇率有关的所有各种复杂问题:

https://developer.travelport.com/app/developer-network/resource-centre-uapi

我刚刚开始使用它,到目前为止看起来还不错。查询有些慢,但是每个OTA(在线旅行社)站点上的每个查询也是如此。


使用通用API的成本是多少?
阿米特(Amit)

1
我忘了。我认为一笔过的费用少了几千美元,再加上一笔年费低了几千美元。
蒂姆·库珀

通用API是否可用于移动设备?
iSrinivasan27 2016年

3

这篇文章说,皮划艇被要求停止报废某些航空公司的页面。这使我相信,他们可能会在与它们没有关系的网站(以及与此关系附带的数据源)上进行抓取。


2

我最近在航班比较网站上找到了两个不错的API

有一个来自Wego,一个来自Skyscanner。两家公司似乎都拥有许多航空公司提供的数据范围和广度,并且文档也不错。

用户每次点击您的应用程序到预订网站时,Wego都会付款,而Skyscanner会向联盟会员支付50%的“收入”(我认为这是他们从航空公司获得的佣金)


4
FYI Wego还针对使用其API的特权每年收取$ 1000 USD。
Sk446 2014年

正确。此外,在我发帖的后面(据我所知,现在),Skyscanner以与Wego相同的方式为每次退出点击支付费用。
Jonathon Blok

您是否知道Skyscanner是否有任何酒店搜索计划,因为他们现在似乎只是在进行航班/汽车旅行。
Sk446 2014年

2
您好,Skyscanner API小组在这里。酒店正在建设中。如果您想讨论使用我们的任何API(机票,租车,酒店),请访问business.skyscanner.net
Skyscanner

刚刚检查了SkyScanner。新开发者对他们毫无价值。除非您的网站每月至少产生200,000次独立访问,否则您不能使用他们的Flights API!可悲!
Hajjat​​ 2015年

0

这是一篇旧文章,但我想我会补充一下。我是一位数据架构师,曾在一家为这些旅行网站提供内容的公司工作。该公司与许多酒店品牌,单个酒店和其他内容提供商签订了合同。我们汇总这些信息,然后将其传递到不同的渠道。然后,它们再次聚合到其系统中。大型GDS系统也是内容提供者。聚合可以通过多种方法完成...匹配算法(内部)和密钥。作为聚合服务,我们需要在客户端级别进行通信。

希望这可以帮助!干杯!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.