[解決済み] kayak.comのようなサイトは、どのようにコンテンツを集約しているのでしょうか?[クローズド]
質問
はじめまして。 Kayak.comのようなサービスが、どのようにして非常に多くのソースからすばやく正確にデータを収集することができるかについて、どなたかご存じないでしょうか?具体的には、Kayak.comはAPIとやりとりしているのか、それともユーザーのリクエストを満たすために航空会社やホテルのウェブサイトをクロール/スクレイピングしているのでしょうか?この種のことに1つの正しい答えがないことは分かっていますが、他の人がこれを行う良い方法だと思うことを知りたいと思います。もしそれが役に立つなら、あなたが明日kayak.comを作成しようとしているふりをしてください...あなたのデータはどこから来るのでしょうか?
どのように解決するのですか?
私は旅行業界でソフトウェアアーキテクト/プロジェクトリードとして働いており、まさにおっしゃるようなプロジェクトに取り組んでいます。私たちの地域では、サプライヤーと直接仕事をしていますが、外出については、いくつかのアグリゲーターに接続しています。
あなたの質問に答えるために...あなたが持っているデータもあれば、さまざまな方法で手に入れたデータもありますし、白状するまで拷問してねじ曲げなければならないものもあります。
どのような角度からですか?
あなたが尋ねなければならない質問は... カヤックのように広告を売りたいのか、エクスペディアのようにカットするのか?あなたは、検索に、または旅行サービスを販売することにありますか?ニッチ(例えば、航空旅行だけ)またはすべて(宿泊施設、航空会社、レンタカー、交通/観光/会議などの付加サービス)をターゲットにするか? 地域(米国または米国の一部)または世界をターゲットとしますか?どの程度深く掘り下げるのか - 複数のサイトを 1 つの画面に表示するだけなのか、それとも異なるサービスを束ねて動的にパッケージ化するのか?
データを取得する
もしあなたがカヤックのビジネスモデルで行くなら、技術的にはサイトの許可は必要ありません...しかし、多くのサイトはIFrameや他の簡単な方法で顧客をサイトに誘導するアフィリエイトプログラムを持っています。プラス面では、支払い/苦情や旅行者自身に対処する必要がないことです。短所としては...自分で価格を比較し、ユーザーに最も安いオプションを提示したい場合、より深いレベルで統合する必要があり、それはAPIやウェブスクレイピングを意味します。
ウェブスクレイピングに関しては...避けましょう。最悪です。本当に。ただ、それをしないでください。この点については、私を信じてください。例えば、格安航空会社のようなものは、ウェブスクレイピングなしでは手に入らない。格安航空会社は、付加価値サービスで生きています。ユーザーが彼らのウェブサイトを見なければ、彼らは余計なものを売らないし、何の収入も得られない。だから、アフィリエイトもやらないし、APIも提供しないし、サイトのレイアウトもほとんど変えません。しかし、lowcosterのサイトをウェブスクレイピングして、素敵なAPIにラッピングすることで生計を立てている会社があります。しかし、LowcosterのサイトをWebスクレイピングし、素敵なAPIにラッピングすることで生計を立てている会社があります。
一方、APIを提供している普通の航空会社もあります。航空会社であれば、以下のように統一されているので、それほど大きな問題ではありません。 IATA 基本的に、あなたはIATAから購入し、IATAはキャリアにお金を分配します。しかし、おそらくあなたは航空会社のネットワークに直接接続したいとは思わないでしょう。最近はウェブサービスやSOAPがありますが、80年代スタイルのプロトコルでメインフレームとやりとりするためのテキストプロンプトを、ものすごく薄く包んだだけのSOAPプロトコルもあるんです(コマンドごとに課金されるUnixプロンプトを思い浮かべてみてください。) そういうわけで、おそらくあなたは、もう少し食物連鎖の下の、より良いAPIを持つ誰かに接続したいと思うでしょう。
航空会社は、ガウス曲線の両極端にあります。一方は個々のサプライヤーで、もう一方は高度に集中化されたシステムで、1つのAPIを実装すれば、世界中のどこにでも飛ぶことができるようになるのです。宿泊施設やその他の旅行商品は、その中間に位置する。ホテルをアグリゲートする大手企業が数社あるかと思えば、小さなサプライヤーが大量に存在し、その一部だけをカバーするアグリゲーターもある。例えば、灯台を借りることができ、しかもそれほど高くない。しかし、1つの場所で異なる灯台の価格を比較することはできない。
もしあなたがカヤックのビジネスモデルに夢中なら、おそらくウェブサイトをスクラップすることになるでしょう。さまざまなプロバイダーを統合するのであれば、多くの場合、API で作業することになりますが、その中にはかなり良いものもあれば、許容範囲内のものもあります。私はRSSを扱ったことはありませんが、RSSとWebスクレイピングの間に大きな違いはありません。また、Jeff の回答では言及されていない第 4 の選択肢もあります...たとえば、FTP などを通じて .CSV ファイルを毎晩入手する方法です。
人生は最悪だ (ミニ戯言)
そして、複雑さです。付加価値を高めようとすればするほど、より多くの複雑さを処理しなければならなくなります。ペットの同伴が可能な宿泊施設を検索できますか? 町の中心から 5 km 未満の場所にあるホステルについては?フライトを組み合わせて、旅行者がある空港から別の空港に移動するのに十分な時間があることを保証できますか...輸送手段を事前に販売できますか?有名なチェロ奏者が大切な18世紀のチェロを手放したくない。チェロのための別の座席を売ってくれないか(そうだ、これは作り話ではない)?
価格を比較したいですか?もちろん、部屋は1泊30ユーロです。しかし、ダブルを30で、シングルを20で取るか、ダブルにエキストラベッドを一つ入れて、3人目は70%引きにするか、どちらかです。ただし、12歳以下の子供であれば、です。私たちのエキストラベッドは大人用ではありません。また、検索結果ではエキストラベッドの価格は表示されず、最終的な価格を計算するときにのみ表示されます。
そして、ダイナミックパッケージングについても触れないようにしましょう。宿泊施設とレンタカーを販売したいですか?2 つの異なるプロバイダーと統合して、ホテル (各ホテルの都市名のみを提供する宿泊施設プロバイダー) と一致するように、都市の場所のリスト (レンタカー プロバイダー) を手動で更新してください。もちろん、都市コードに国際的な標準がないため、2 つの都市のリストをすでに照合していることが前提です。
多くの製品を持つ他の多くの業界とは異なり、旅行業界は非常に複雑な製品を多く持っています。Amazonは簡単です。本を売るのもポテトを売るのも同じことで、同じ箱で発送することさえできます。簡単に組み合わせることができ、多くの部品から組み立てられるわけではありません。)
追伸:Hacker News の最近の興味深いスレッドにリンクして、いくつかの フライトに関するインサイダー情報 . P.P.S. 最近、かなり古いけれども素晴らしいブログ記事を見つけました。 IATAのNDCプロトコル、旅行業界とのつながりの概要、そしてNDCがどのように生まれたかの歴史的な教訓。 .
関連
-
[解決済み] MySQLでGROUP BYを使って文字列を連結する方法とは?
-
[解決済み】変数をグループ別に合計する方法
-
[解決済み】pandasのgroupbyでデータフレームの行をリストにグループ化する方法
-
[解決済み] ウェブサイトからデータをスクレイピングする一番良い方法は何ですか?[クローズド]
-
[解決済み] PhantomJS が HTTPS サイトを開くのに失敗する。
-
[解決済み] GB英語、それともUS英語?
-
[解決済み] Swagger UIでリクエストと一緒にカスタムヘッダを送信するにはどうすればよいですか?
-
[解決済み] ティッカーシンボル検索API [終了しました]。
-
[解決済み] Google+のウォールに投稿する方法
-
[解決済み] GitLab APIのプロジェクトIDはどこにあるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] APIキーとは何ですか?[クローズド]
-
[解決済み] Rest APIサーバーのためのScalaフレームワーク?[クローズド]
-
[解決済み] GB英語、それともUS英語?
-
[解決済み] Wiktionaryの単語コンテンツを取得するにはどうすればよいですか?
-
[解決済み] ティッカーシンボル検索API [終了しました]。
-
[解決済み] Laravel 5.3でのAPIルーティングの使い方
-
[解決済み] Google+のウォールに投稿する方法
-
[解決済み] Spring-Bootで自分のサーバーから別のrest apiを呼び出す
-
[解決済み] LinkedInの共有ボタンの作り方
-
[解決済み] GitLab APIのプロジェクトIDはどこにあるのですか?