TripAdvisorレビューをスクレイピングしてホスピタリティインテリジェンスを得る方法

TripAdvisorはレビューをページ上に表示されるよりも豊富な隠れたJSONとして保存しています。サブレーティング、レビュアーの在籍期間、オーナーの応答率などが含まれます。ブロックされずにこれを読み取り、ページネーションし、地理的にターゲットする方法を紹介します。

TripAdvisorはホスピタリティインテリジェンスの宝庫ですが、正しい方法で読む必要があります。レンダリングされたページをスクレイピングすると、星評価とレビューのテキストが得られますが、それ以上はありません。TripAdvisorは各レビューを豊富なJSONオブジェクトとして保存しており、カテゴリーごとのサブレーティング、レビュアーの全寄稿履歴、レビューが投稿されたデバイス、機械翻訳フラグ、ビジネスオーナーが応答したかどうかなど、はるかに多くのシグナルを含んでいます。このガイドでは、その隠れたデータからTripAdvisorレビューをスクレイピングする方法、URL構造がどのプロパティや日付範囲でもターゲットできるようにする方法、クロールが生き残るかどうかを決定する出口IPの重要性について説明します。市場分析のための公開レビューのデータであり、個人のプロファイリングではありません。

レンダリングされたページではなく隠れたJSONを読む

TripAdvisorは動的なサイトです。表示されるレビューはページに埋め込まれたJSONドキュメントから生成され、そのドキュメントに実際の詳細が含まれています。各レビューについて、スキーマはratinghelpfulVotestravelDatepublishedDatepublishedPlatform(モバイルまたはデスクトップ—書かれたデバイス)、レビューのlangoriginalLanguageisMachineTranslatedフラグ、ビジネスが応答した場合のownerResponseオブジェクト、1〜5のスケールで評価されるValue、Location、Serviceなどのsubratingsの内訳を持っています。JSONの塊を解析すると、構造化されたフィールドとしてすべてが得られます。見えるHTMLをスクレイピングすると、そのほとんどを捨てることになります。

URL構造は地図です

TripAdvisorのURLは、正確に何を見ているかをエンコードしています。ホテルレビューのページはHotel_Review-g60763-d208453-Reviews-Name.htmlのように読まれ、g60763は地理(ここではニューヨーク市)、d208453はプロパティ、単一のレビューにはr IDが追加されます。それらをデコードすると、任意の場所、都市、特定のレビューのURLをプログラムで構築でき、開始前にジョブのサイズを決定できます。多忙なプロパティは何千ものレビューを持つことができるため、常にページネーションが必要です。

import re

# Hotel_Review-g60763-d208453-Reviews-Name-City.html
def decode(url):
    geo = re.search(r"-g(\d+)-", url)
    place = re.search(r"-d(\d+)-", url)
    review = re.search(r"-r(\d+)-", url)
    return {
        "geo_id": geo.group(1) if geo else None,
        "place_id": place.group(1) if place else None,
        "review_id": review.group(1) if review else None,
    }
TripAdvisorのURLを地理、プロパティ、レビューIDにデコードし、住宅プロキシを経由して隠れたJSONを抽出する方法を示す図
URLのg/d/r IDは地理、プロパティ、レビューに対応しており、それらをデコードすると任意の場所や日付範囲をターゲットにできます。

ページネーションとインクリメンタルプル

スケールを決定する2つの事実があります。まず、レビューはページごとに表示されるため、完全なプロパティはすべてのページを歩き、各ページからレビューオブジェクトを収集することを意味します。次に、これが継続的なモニタリングを安価にする理由ですが、開始日でフィルタリングし、前回の実行以降に公開されたレビューのみを取得できます。最新のpublishedDateを保存し、各後続のクロールは履歴全体を再スクレイピングするのではなく、デルタのみを取得します。これにより、一度限りのダンプが新しいゲストの感情のライブフィードに変わります。

1つの正直な制限: TripAdvisorは単一の結果セットがどれだけ深くなるかを制限しているため、非常に大きなプロパティは1回の線形ウォークで過去のすべてのレビューを提供しません。日付ウィンドウやサブページでスライスしてその制限内で作業し、完全性を保証ではなくサンプリングの問題として扱います。

追加フィールドの実際の価値

隠れたスキーマは、レビューのダンプを本当のインテリジェンスに変えるものです:

地理的な違いとIPが重要な理由

TripAdvisorはコンテンツをローカライズします—通貨、ランキングのコンテキスト、時にはどのレビューや翻訳が表示されるか—リクエストがどこから来ているように見えるかに基づいています。ホテルが米国の旅行者にどのように表示されるかとドイツの旅行者にどのように表示されるかを比較する場合、出口IPがテストする変数です。ターゲット市場で住宅プロキシを経由して、そこにいる本物の旅行者が見るものを確認します。データセンターIPもレビューが多いクロールで速くフラグされるため、住宅は地理的な正確さだけでなく、完了するまでブロックされないことも重要です。プロキシを使用した大規模な製品レビューのスクレイピングに関するガイドでは、その衛生についてさらに詳しく説明しています。

レビューのスクレイピングのための住宅プロキシを取得する

レビュークロールでブロックされないようにする

レビューのページはリクエストが多く、プロパティごとに多くのページ、都市ごとに多くのプロパティがあるため、アンチボットの姿勢がすぐに影響します。他の場所で機能する同じ規律が適用されます: 住宅プール全体で回転させ、単一のIPが負荷を負わないようにし、ジッター付きの遅延でリクエストをペースし、一貫したブラウザヘッダーを送信し、各応答が実際にレビューJSONを含んでいることを検証します。データがレンダリングされたDOMではなく隠れたJSONの塊にあるため、完全なヘッドレスブラウザは必要ないことが多く、ページを取得し、埋め込まれたドキュメントを抽出して解析するだけで済みます。これはレンダリングよりもはるかに安価です。当社のヘッドレス対HTTPコストの内訳は、そのショートカットが有効な場合をカバーしています。

隠れたTripAdvisor JSONがレビューごとに提供するものを示す統計パネル: 6つのサブレーティング軸、役立つ投票付きの星評価、オーナーの応答、マルチロケールテキスト
隠れたJSONは、レンダリングされたページが決して表示しないサブレーティング、レビュアーの在籍期間、オーナーの応答を持っています。

管理されたAPIがより理にかなう場合

自分でTripAdvisorクローラーを実行することは非常に可能ですが、メンテナンスが伴います: スキーマの変化、ページネーションの制限、回転と地理的固定がすべて必要です。レビューのデータが一度限りの研究ではなく、製品やクライアントへの提供物を供給する場合、ページを取得し、回転を処理し、クリーンな構造化データを返すScraper APIはその維持を取り除きます。スキーマをマッピングしている間に自分で構築し、クロールが監視しなければならない配管になるときにそれを引き渡します。

よくある質問

PythonでTripAdvisorレビューをスクレイピングする方法は?

レビューのページを取得し、埋め込まれた隠れたJSONドキュメントを抽出します。レンダリングされたHTMLを解析するのではなく、そのJSONには各レビューの評価、サブレーティング、日付、オーナーの応答、レビュアーの詳細が構造化されたフィールドとして含まれています。URLのg/d IDをデコードしてプロパティをターゲットにし、結果をページングし、住宅プロキシを経由してクロールがブロックされないようにします。

TripAdvisorレビューをスクレイピングすることは合法ですか?

公開されているレビューを分析のために収集することは、コンテンツを丸ごとコピーしたり、個人データをスクレイピングすることとは異なりますが、TripAdvisorの利用規約は自動アクセスを制限しており、法的位置は管轄区域や目的によって異なります。これは一般的な情報であり、法的助言ではありません—公開されている非個人データに従い、レート制限を尊重し、商業利用のためには適切な助言を受けてください。

TripAdvisorレビューはスクレイパーに追跡されることがありますか?

TripAdvisorはリクエストパターンとIPの評判を記録しているため、迅速な単一IPクロールは簡単にフラグされてブロックされます。レビュー自体は公開されていますが、積極的なスクレイピングは目立ちます。回転する住宅プール全体でリクエストを分散し、それらをペースし、一貫したヘッダーを使用することで、トラフィックが通常のブラウジングのように見え、明らかなボットバーストのようには見えません。

TripAdvisorレビューからどのようなデータを取得できますか?

隠れたJSONから: 星評価、カテゴリーごとのサブレーティング(価値、サービス、ロケーションなど)、旅行日と公開日、投稿されたデバイス、言語と機械翻訳フラグ、オーナーの応答、レビュアーの寄稿履歴。それはレンダリングされたページが表示する星評価とテキストよりもはるかに豊富です。

TripAdvisorは、見えるページではなく隠れたJSONを読むスクレイパーに報酬を与えます: サブレーティング、オーナーの応答、レビュアーの在籍期間が、星の山を本物の競争インテリジェンスに変えます。URL IDをデコードし、日付ごとにインクリメンタルに取得し、住宅IPで地理的にターゲットし、プラットフォームの制限内でページングします。これを行うことで、競合他社が見逃しているホスピタリティシグナルを得ることができます。

QuantumProxies Scraper APIでレビューのデータを抽出する