ごあいさつ、私は新しいプロジェクトのアイデアをいじっていましたが、Kayak.comのようなサービスが非常に多くのソースからデータを非常に迅速かつ正確に集約できる方法についてだれかご存知かと思いまして。より具体的には、Kayak.comはAPIとやり取りしているのでしょうか、それともユーザーの要求を満たすために航空会社やホテルのWebサイトをクロール/スクレイピングしているのでしょうか?私はこの種のことに対する正しい答えは1つではないことを知っていますが、他の人がこれについて良い方法だと思うことを知りたいです。それが役立つ場合、明日kayak.comを作成するつもりです...あなたのデータはどこから来ますか?
私は旅行業界で、ソフトウェアアーキテクト/プロジェクトリーダーとして、あなたが説明している正確な種類のプロジェクトに取り組んでいます。
あなたの質問に答えるために...あなたが持っているデータ、さまざまな方法で得られたデータ、そして告白するまで拷問とねじりをしなければならないものがあります。
あなたがしなければならない質問は...カヤックのような広告を売りたいですか、エクスペディアのようなカットを取りますか?検索や旅行サービスの販売に興味がありますか?ニッチ(たとえば、単なる空の旅)またはすべて(宿泊、航空会社、レンタカー、輸送/観光/会議などの追加サービス)をターゲットにしていますか?地域(米国または米国の一部)または世界をターゲットにしていますか?深さ-単一の画面に複数のサイトを表示するだけですか、異なるサービスをまとめて動的にパッケージ化しますか?
カヤックのビジネスモデルを使用する場合、技術的にはサイトの許可は必要ありませんが、多くのサイトには、IFrameまたは他の簡単な方法で顧客をサイトに誘導するアフィリエイトプログラムがあります。プラス面では、支払い/苦情や旅行者自身で対処する必要はありません。短所については、自分で価格を比較して最も安いオプションをユーザーに提示する場合、より深いレベルで統合する必要があります。つまり、APIとWebスクレイピングを意味します。
Webスクレイピングについては...それを避けてください。それは吸う。本当に。しないでください。これを信じて。たとえば、Webスクレイピングなしでは手に入らないローコストのようなものがあります。低コストの航空会社は付加価値サービスを利用しています。ユーザーがウェブサイトを表示しない場合、余分なものを販売したり、何も獲得したりしません。したがって、彼らにはアフィリエイトがなく、APIを提供せず、サイトレイアウトをほぼ絶えず変更します。ただし、lowcosterのサイトをWebスクレイピングし、それらをNice APIにラップすることで生計を立てている企業があります。余裕があれば、低コストのフライトのコスト比較をユーザーに提供できますが、これは膨大です。
一方、APIを提供する「通常の」キャリアがあります。すべての航空会社が [〜#〜] iata [〜#〜] の下に統合されているため、航空会社に着くのはそれほど大きな問題ではありません。基本的に、あなたはIATAから購入し、IATAはそのお金を運送業者に分配します。ただし、おそらくキャリアネットワークに直接接続する必要はありません。 WebサービスとSOAP=最近ですが、SOAPテキストの周りのめちゃくちゃ薄いラッパーであるプロトコルがあります。 80esスタイルのプロトコルでメインフレームとやり取りできます(コマンドごとに課金されるUnixプロンプトを考えてください。1回の検索には約20コマンドが必要です)。より良いAPIを使用して、食物連鎖をさらに下っていきます。
したがって、航空会社はガウス曲線の両極端にあります。一方には個々のサプライヤがあり、もう一方には高度に集中化されたシステムがあり、1つのAPIを実装して、世界中どこでも飛行できます。宿泊施設とその他の旅行商品はその間にあります。ホテルを集約するいくつかの大手企業と、スペクトルの一部のみをカバーするアグリゲータが多数ある小規模サプライヤーが多数存在します。たとえば、灯台を借りることはできますが、それほど高価ではありませんが、1つの場所で異なる灯台の価格を比較することはできません。
カヤックのビジネスモデルに興味があるなら、おそらくウェブサイトをスクレイピングすることになるでしょう。異なるプロバイダーを統合する場合は、多くの場合APIを使用します。APIの一部は非常に優れており、ほとんどは許容範囲です。 RSSを扱ったことはありませんが、RSSとWebスクレイピングの間に大きな違いはありません。また、ジェフの回答に記載されていない4番目のオプションもあります。たとえば、FTPなどを介して.CSVファイルを使用して、夜間にデータを取得するオプションです。
そして複雑さがあります。追加する価値が高いほど、処理する必要のある複雑さが増します。ペットを許可している宿泊施設を検索できますか?町の中心部から5 km未満の場所にあるホステルの場合フライトを組み合わせて、旅行者が空港間を移動するのに十分な時間があることを保証できますか?事前に交通機関を販売できますか?有名なチェロ奏者は、彼の貴重な18世紀のチェロから離れたくありません。彼にチェロの別の席を売ることができますか(そうです、これを作りません)。
価格を比較したいですか?確かに、部屋は1泊30ユーロです。ただし、30のダブルを1つ、20のシングルを1つ入手するか、ダブルで1つのエキストラベッドを取得し、3人目が70%オフになります。ただし、それが12歳未満の子供の場合のみです。エキストラベッドは大人用ではありません。また、検索結果にエキストラベッドの価格は表示されません-最終価格を計算する場合のみです。
そして、動的なパッケージングを始めさせないでください。宿泊施設+レンタカーを販売したいですか?問題ない; 2つの異なるプロバイダーと統合し、外出先...市内の場所のリストを手動で更新し(レンタカープロバイダーから)、ホテル(各ホテルの都市のみを提供する宿泊施設プロバイダーから)に一致させます。もちろん、都市コードには国際標準がないため、2つの都市のリストに既に一致していることを条件とします。
多くの製品を持つ他の多くの産業とは異なり、旅行業界には非常に複雑な製品が数多くあります。 Amazonは簡単です。本の販売とジャガイモの販売は同じです。同じ箱に入れて発送することもできます。それらは容易に結合し、多くの部品から組み立てられません。 :)
追伸フライトに関するいくつかの インサイダー情報を含むHacker Newsの興味深い最近のスレッドへのリンク 。 P.P.S.最近、 IATAのNDCプロトコルに関するかなり古いブログ投稿につまずきました。旅行業界がどのように接続されているかの概要と、これがどのようになったのかという歴史の教訓です 。
彼らは ITA Software のようなソフトウェアパッケージを使用しています。これは、Googleが採用を進めている会社の1つです。
ウェブサイトからデータを取得する方法は3つしかありません。
RSSフィード-既存のサイトのデータをアプリに統合するために、私の会社ではrssフィードを頻繁に使用しています。高速で、ほとんどのサイトですでにRSSフィードを利用できます。これに関する問題は、すべてのサイトがRSS標準を適切に実装しているわけではないため、多くのサイトの多くのRSSフィードからデータをプルする場合は、例外とフィルターを簡単に追加できるようにコードを作成してください。
API-適切に設計され、必要な情報がすべて揃っている場合は素晴らしいですが、常にそうとは限りません。さらに、サイトが標準のAPI形式を使用していない場合は、複数のAPIをサポートする必要があります。
Webスクレイピング-この方法は、最も信頼性が低く、維持費が最も高くなります。しかし、他に何も残されていない場合は、それを行うことができます。
Travelportは、フライトやホテル、レンタカー会社に接続し、パッケージ取引や税金や為替レートに関するさまざまな複雑な問題に対処する「ユニバーサルAPI」と呼ばれる製品を提供しています。
https://developer.travelport.com/app/developer-network/resource-centre-uapi
私はそれを使い始めたばかりで、今のところうまくいくようです。クエリは少し遅いですが、すべてのOTA(オンライン旅行代理店)のサイトのすべてのクエリも同様です。
この記事 は、カヤックが特定の航空会社のページの廃棄を停止するように求められたことを示しています。そのため、おそらく関係のないサイト(およびその関係に付随するデータフィード)をスクレイピングしていると思われます。
最近、フライト比較ウェブサイトで見つけた2つの優れたAPIがあります
Wego からの1つと Skyscanner からの1つがあります。両方とも、多くの航空会社からのデータの範囲と幅が広く、ドキュメントも充実しているようです。
ユーザーがアプリから予約ウェブサイトにクリックするたびにWegoが支払い、スカイスキャナーが「収益」の50%をアフィリエイトに支払います(航空会社からのコミッションを意味します)
これは古い投稿ですが、追加したいと思いました。私はこれらの旅行サイトにコンテンツを提供する会社で働くデータアーキテクトです。この会社は、多くのホテルブランド、個々のホテル、その他のコンテンツプロバイダーと契約を結んでいます。この情報を集約して、別のチャネルに渡します。その後、再びシステムに集約されます。大規模なGDSシステムもコンテンツプロバイダーです。集約は、アルゴリズム(社内)とキーのマッチングなど、多くの方法で行われます。集約サービスであるため、クライアントレベルで通信する必要があります。
お役に立てれば!乾杯!