これこそ計画の土台にすべき発見です。当社の実行のうち2件は、ある通貨の価格とマイル表記の距離で返りました。3件目は別の通貨で、距離はキロメートル表記でした。ここまでは見た目の問題です。見た目の問題ではないのは、3つの列が一緒に動いたことです。2つ目の通貨で返った実行はすべての行に税の行を持ち、ほとんどの行に星の項目を持ち、そして値引き前の価格をまったく持ちませんでした。1つ目の通貨で返った2件はその正確な鏡像です。一部の行に値引き前の価格があり、税の行も星の項目もどこにもありません。同じサイト、同じ都市でです。
90行を通じて、この項目は6種類の値しか取りませんでした。半数以上は空で、残りは4、8、12、16、20 - 常に4の倍数で、1も2も3も5もありません。最大値を持つ2件はこの集合のなかの高級ホテル2軒、最小値を持つのは低価格帯のホテルです。つまりこの列は1から5までの評価を4倍したものと矛盾しません。ただし当社はそれを事実として述べません。実際の掲載ページで確かめられなかったからです - 下のアクセスに関する注記をご覧ください。
どの行も価格を持ち、どの行も日付を持ちません。その価格が適用されるチェックインとチェックアウトはリンクの中、クエリ文字列に入っており、当社の実行ではいずれも実行日のおよそ2週間後に当たりました。ですから2つのエクスポート間で価格の列を比べることは、先にアドレスから日付を取り出さないかぎり、異なる2つの夜を比べていることになります。人数の列も助けにはなりません。90行すべてで同じ値でした。ホテルではなく検索の初期設定を反映しているからです。
同一の検索を4日あけて実行したところ、2つの結果集合はホテルのページをひとつも共有しませんでした。3件目との共有は4件です。都市のホテルを一覧するのではなく、特定の夜の空室を並べ替えるページなら当然のことですが、それはこのエクスポートが台帳ではなく瞬間の記録だという意味でもあります。ここから安定したホテル一覧を作らないでください。時系列を作り、追跡用のパラメーターを取り除いたホテルページのアドレスをキーにしてください。
5件の実行のうち2件は何も返しませんでした - 空のファイル、行なし、説明なし。当社が運用するカタログ系サービスはいずれも、遮断や不適切な入力を記録する行ごとの目印を書きます。このサービスにはその列がないため、実行が空で返ってきたとき、理由の置き場所がありません。それを織り込んでください。行数はご自身で確認し、ゼロは答えではなく再試行の合図として扱ってください。
ほとんどの列は、報告するものがないとき空の文字列を使います。ところが2つ - 税の行と割引の表示 - はその代わりに JSON の null を使い、空の文字列は決して使いません。片方だけを判定する読み込み処理は、もう片方を静かに取り違えます。しかもこの2つこそ、割引のある部屋を探すときに絞り込む項目です。小さなことですが、遅くに出会うと半日を失います。
実際のエクスポートから、シートの並び順で読み取ったもので、充足数は保有する90行すべてに対して測っています。ある列が「ときどき欠ける」と書かれている箇所では、注記が何によって決まるのかを述べています。このサービスでは、たいていホテルではなく実行のほうが要因だからです。
rating と並べて読む価値があります。当社のデータでもっとも低い評価は、3件のレビューの上に載っています。taxes と同じく、値がない場合は空の文字列ではなく JSON の null です。1行あたり16列 · 3つのファイル形式
ここでは、どの列の注記よりも上位に来る構造的な事実が2つあります。ひとつめは、このエクスポートに status の列がないことです。当社が運用する他のすべてのサービスは、取得が成功したのか、拒否されたのか、入力の種類が違ったのかを記録する行ごとの目印を書きます。5件のうち2件の実行は、まさにそれで自らを説明したはずでした。それらはゼロ行だけを返し、他には何も返しませんでした。ですからファイルは、検索が空だったのか、ページが読み込まれなかったのか、その中間なのかを教えられません。行数はご自身の処理で確認し、ゼロは再試行として扱ってください。ふたつめは、3つの列が施設ではなく表示形式に依存することです。2つ目の通貨で配信された実行は、すべての行に税の行を、ほとんどの行に星の値を持ち、値引き前の価格はまったく持ちませんでした。1つ目の通貨で配信された2件はその正確な鏡像です。距離の単位も一緒に切り替わりました。つまり2つのエクスポートを素朴に突き合わせると、ホテルが属性を得たり失ったりしたと報告されますが、ホテルには何も起きていません。どの通貨で返ってきた実行かを記録し、同じもの同士で比べてください。それ以外は普通です。9つの列は90行すべてに届き、評価とそのレビュー件数は1行を除くすべてに届き、残る項目は想定どおりに任意です。
同じ目的地を定期実行し、リンクからチェックイン日を取り出せば、実行単位ではなく夜単位の料金推移が得られます。追跡用のパラメーターを取り除いた施設ページをキーにし、隣に通貨も記録してください。この2つがそろって、はじめて2つの実行が比較可能になります。
元価格と割引ラベルを合わせれば、どの掲載が料金を下げていて、どれが名称の付いたキャンペーンを打っているのかが分かります。どちらも任意で、当社の行のひとつはラベルなしで値引きされていました。ラベルだけを信じず、2つの価格列から差を計算してください。
ひとつの都市についての90行から、評価は1点台から9点台半ばまで、レビュー件数は1件から数千件までが得られました。市場の輪郭を描くには十分です。ただし、描いているのは都市のホテル総数ではなく、ある1泊に空いていた掲載だということは覚えておいてください。
どの行も、その価格が対応する具体的な部屋を名指ししています。ですから2つの施設の比較は、実際には2つの部屋タイプの比較です。まずその列を整えてください - 一部の値には余計なベッドのラベルが付いています - そうすれば、単なるホテル別の価格一覧よりはるかに誠実な表になります。
LIVESCRAPER10 をご利用ください。同じ問いを別の市場に投げたものです。宿泊の検索結果をデータとして扱い、検索ページに何が分かって何が分からないかについて、独自の但し書きを備えています。
検索のエクスポートが評価と件数を返すのに対し、こちらはその背後にあるレビューを返します。候補が固まったあとの、自然な次の一歩です。
同じ施設について、別の利用者層からのもうひとつの見方です。あるプラットフォームでの評価と、別の場所での評判が食い違うときに役立ちます。
行の隣に、日付入りの検索結果ページの画像を。ここでは普段以上に意味があります - 同じ検索が、週が変われば違うホテルを返すからです。
公開された検索結果ページ上の料金、評価、部屋名は、ごく普通の商取引上の事実です。ここで注意を要するのはサイトの手前にある層であり、そして当社自身がそれを越えられなかったという事実です。
1泊の料金、施設名、部屋タイプは、販売に供された宿泊についての事実であり、訪問者の誰にでも配信されるページから読み取ったものです。16列のどこにも宿泊者を記述するものはありません - 氏名も、メールアドレスも、電話番号も、予約番号もありません。レビュー件数と評価は、サイトが掲載自体に公表している集計値であり、特定の個人に結びついた個々のレビューではありません。ですから当社の個人データ系サービスを形づくっているプライバシー上の論点は、このページには関わりません。ただしエクスポートが持つものとして、提携識別子とセッション用のトークンで装飾されたリンクがあります。行を共有の場所に保存する前に、それは取り除いておく価値があります。
サイトが表明している方針は、このサービスが使う経路について寛容です。robots.txt は2026年8月12日、通常のリクエストに HTTP 200 で応答し、正しいグループ判定で読むと汎用の指定は71のルールを含み、全体を締め出す記述はありません。検索結果の経路も、当社の行がリンクする施設ページも、いずれも許可されています。そのファイルにある全体的な除外は、名指しされた少数のクローラーに向けたものであって、一般的なものに向けたものではありません。実行時は別の話であり、すんなり入れたかのように書くより率直に述べます。施設ページと検索の経路の両方について当社が通常のリクエストを送ったところ、いずれも内容ではなく中間ページが返り、1行たりとも実際の掲載ページで裏づけることができませんでした。したがってこのページの記述はすべてエクスポート自体に由来します。当社のカタログはこのサービスに有料のレジデンシャルプロキシが必要だと記録し、当社の調べが出会ったものとは別の防御事業者を名指ししています。当社は両方を報告し、どちらも選びません。
当社側の条件は、ここにある他のサービスと同じです。公開されているページのみ、ログインの先には立ち入らず、データ層でサードパーティのトラッカーは一切動かさず、エクスポートは30日後に自動削除されます。最初の500行は無料で、クレジットカードも不要です。
CSV、JSON、Excel です。16の列と並び順は3つとも同じです。なお上で述べた null と空文字の区別は JSON では見えますが、表計算向けの形式では平らになります。Booking.com は世界最大級の宿泊予約の市場であり、このサービスはその検索結果ページのひとつを表に変えます。掲載1件につき1行、16列。施設名、宿泊者評価とレビュー件数、地区、中心部からの距離、提示価格が対応する具体的な部屋、1泊の料金、取り消し線付きの元価格があればそれ、税の行があればそれ、販促のラベルがあればそれ、リンク、そしてサムネイルです。当社はひとつの都市について5件の実行を保有しており、うち3件が行を返し - 5行、43行、42行 - 2件は何も返しませんでした。90行は、このエクスポートがどのようなものかを述べる根拠として妥当であり、このページのすべての数値はそこから測っています。
もっとも有用だった発見は、ホテルについてのものではありません。当社の実行のうち2件は、ある通貨の料金とマイル表記の距離で返りました。3件目は別の通貨で、距離はキロメートル表記でした。ここまでは見た目の問題です。見た目の問題ではないのは、3つの列が表示形式と一緒に動いたことです。2つ目の通貨の実行はすべての行に税の行を、ほとんどの行に星の値を持ち、値引き前の価格はどこにも持ちませんでした。1つ目の通貨の2件はその正確な鏡像で、一部の行に値引き前の価格があり、税の項目も星の項目もありませんでした。それらの実行のあいだに、施設側では何も変わっていません。どちらの表示形式で返ってきたかを記録せずに2つのエクスポートを突き合わせると、ホテルが属性を得たり失ったりしたと告げられます。そしてそれは誤りです。
読み込み処理を書く前に知っておきたい構造的な点が、あと2つあります。ひとつは星の列で、これは星の数を保持していません。90行すべてを通じて、4、8、12、16、20 のいずれか、あるいは何もなしだけを取り、1も2も3も5もありませんでした。最大値の施設は集合のなかの高級ホテルで、最小値のものは低価格帯です。ですからこの項目は、通常の1から5までの評価を4倍したものと矛盾しません。事実として述べるところまでは踏み込みません。理由は次の段落に記します。もうひとつは、価格に日付が添えられていないことです。どの行も料金を持ち、どの行も夜を持ちません。その料金が適用されるチェックインとチェックアウトはリンクのクエリ文字列にあり、ほかのどこにもありません。人数の列は90行すべてで同一ですが、それは掲載ではなく検索の初期設定を反映しているからです。先に日付を取り出さずに比べた2つの価格は、異なる2つの夜のものです。
このページにはもうひとつ、覆い隠すより述べておきたい限界があります。2026年8月12日、サイトの robots.txt は通常のリクエストに応答し、このサービスが使う経路について寛容でした。汎用の指定に71のルールがあり、全体を締め出す記述はなく、検索の経路も施設ページも許可されています。しかし実際の内容を求める通常のリクエストは、施設ページでも検索の経路でも、ページではなく中間ページとして返ってきました。ですから当社のカタログ系ページの大半とは違い、ここでは実際の掲載ページで裏づけられた行がひとつもありません。すべてエクスポートから測ったものです。当社自身のサービスカタログはこのスクレイパーに有料のレジデンシャルプロキシが必要だと記録し、サイトについてある防御事業者を名指ししていますが、当社自身の調べは別の事業者に出会いました。同じ層に対する2つの名前であり、両方を報告してどちらも選びません。最後に、エクスポートは台帳ではなく瞬間の記録として扱ってください。同一の検索を4日あけて実行したところ、2つの結果集合は施設ページをひとつも共有しませんでした。ある1泊の空室を並べ替えるページとは、そういうものです。公開されているページのみ、データ層でサードパーティのトラッカーは動かさず、エクスポートは30日後に自動削除、そして最初の500行はクレジットカードなしで無料です。