サイトマップとは?XML構造、発見、および制限
Scrapeless Scraping Browserは、JavaScriptが実行された後にのみ内部リンクが表示されるページをレンダリングすることで、サイトマップベースの発見を補完します。
要点
- サイトマップは、ウェブページやウェブシステムがどのように動作するかの観察可能な部分を説明します。 有用な定義は、コンセプトをデータ、状態、およびワークフローが検証できるリクエストに結びつけます。
- レスポンスHTMLとブラウザ状態は互換性がありません。 一部の値は即座に利用可能ですが、他はレンダリング、インタラクション、または後の構造化されたレスポンスを必要とします。
- 完全なデータを返す最も軽量な方法を選択してください。 HTMLは十分な場合に解析し、適切な場合には構造化されたリクエストを検査し、ブラウザの実行が不可欠な場合にはブラウザを使用します。
- 完了はコンテンツ証拠で証明されなければなりません。 安定した識別子、明示的な終了状態、およびソース特有の準備条件は、固定遅延よりも安全です。
- 責任ある収集は、公開されたアクセスルールと容量を尊重します。 公的可視性は、条件、法的義務、ロボット指示、またはレート制御を取り除くことはありません。
サイトマップとは何ですか?
サイトマップは、サイト所有者がクローラーに発見してほしいURLを宣言する機械可読ファイルです。XMLは最も表現力豊かな一般的な形式ですが、テキストファイルやフィードも検索エンジンによって使用される可能性があります。サイトマップは発見を助けますが、リストされたすべてのURLがクローリングされ、インデックスされ、ランク付けされ、または正規のものとして扱われることを保証するものではありません。
XMLプロトコルでは、サイトマップはリソースごとに1つのURLエントリを持つURLセットを含みます。各エントリには場所が必要で、最後の重要な変更時間などのオプションのメタデータを含むことができます。画像、動画、ニュースおよび言語の代替拡張は、受信クローラーによってサポートされている場合に専門的な情報を追加できます。
サイトマップインデックスは、複数のサイトマップファイルを指します。大規模なサイトは、コンテンツの種類、日付、ロケール、または運用オーナーによってインベントリを分割できます。インデックスはサイトマップファイルのディレクトリであり、内部のURLエントリの代替物ではありません。クローラーは、修正メタデータが正確な場合にのみ変更された子ファイルを取得することがあります。
重要な違いは実用的であり、データワークフローはターゲット値を所有するレイヤーを特定する必要があります。そのレイヤーは、ドキュメントレスポンス、ブラウザメモリ、レンダリングされたノード、バックグラウンドレスポンス、またはサーバーサイドポリシーである可能性があります。レイヤーが特定されると、ワークフローは仮定を減らして値を収集し、ユーザーが実際に受け取るページ動作と照らし合わせて検証できます。
サイトマップの仕組み
サイトマップを考えやすくするためには、プロセスを観察可能な段階に分割することが重要です。各ステージは、レスポンス、ブラウザ、ネットワークログ、または抽出されたレコードセットで確認できる証拠を作成します。
パブリッシャーはファイルを生成します。
CMS、ビルドプロセス、または専用のジョブが正規の公開URLを選択し、サポートされている形式で直列化します。生成は、ライブサイトで使用されるのと同じURLルールを反映すべきです。
ファイルは公開されます。
サイトは一般的に安定した公開URLでサイトマップまたはインデックスをホストし、その場所をrobots.txtで宣伝するか、検索エンジンツールを通じて提出できます。
クローラーはそれを取得して解析します。
消費者は、エントリを発見キューに追加する前に、エンコーディング、XML構造、ホスト範囲、絶対URLを検証します。
URLの動作は別々にチェックされます。
URLをリストすることは、パブリッシャーがそれを発見されたいと望んでいることを示します。クローラーは、ステータスコード、リダイレクト、正規信号、コンテンツ、およびアクセスルールを依然として評価します。
新鮮さは有用性に影響します。
古いエントリはクローリングの注意を無駄にし、欠落したエントリは発見を遅延させます。正確な修正タイムスタンプは、意味のあるページ変更を表すときだけ有用です。
これらのステージは重複したり、繰り返されたり、異なるシステムによって処理されたりすることがあります。したがって、抽出計画は、1つのページ読み込みイベントがライフサイクル全体を表すと仮定するのではなく、実際のリクエストと状態のシーケンスに従うべきです。ブラウザ開発者ツールは、ドキュメント、ネットワーク、ストレージ、ランタイムビューを並べて表示するため便利です。
重要な形式と関連概念
以下の区別は、一般的なカテゴリエラーを防ぎます。また、チームが仕事に適したパーサー、HTTPクライアント、ブラウザ、スケジューラー、またはクローリングポリシーを選択するのにも役立ちます。
| コンセプト | それが表すもの | 典型的な使用 |
|---|---|---|
| XMLサイトマップ | URLプラスオプションのメタデータと拡張 | 一般的な検索発見と大規模なインベントリ |
| サイトマップインデックス | 複数のサイトマップファイルを参照 | 分割された大規模なサイト |
| テキストサイトマップ | 行ごとに1つの絶対URL | メタデータなしのシンプルなインベントリ |
| HTML サイトマップ | 内部リンクの人間向けページ | XML プロトコルではなく、ナビゲーション補助 |
ラベルは行動を予測する場合にのみ有用です。同じサイトの 2 つのルートが異なるレイヤーを通じてデータを返す場合、プロダクトチームが 1 つのアーキテクチャ用語で説明しても、それらを異なる抽出面として扱います。ルートレベルの観察はドメイン全体の仮定に勝ります。
ウェブスクレイピングとデータ収集にとって重要な理由
誤ったレイヤーを読み込むと、ウェブ収集は静かに失敗します。パーサーは、ターゲットレコードが欠落している有効な HTML を返すことがあります。ブラウザは、必要なリクエストが拒否されている間、説得力のあるシェルをレンダリングできます。シーケンスは、同じレコードを繰り返しながらフルバッチを返すことがあります。以下のチェックは、サイトマップをツールの好みではなくデータ品質に結びつけます。
シード URL インベントリ
クローラーは、サイトリンクをたどる前にサイトマップツリーを解析できます。これにより、ナビゲーションでは公開されない深いページがすぐに表面化します。
宣言と現実を比較する
ライブクロールに対してサイトマップの URL を比較して、孤立したページ、未掲載のページ、リダイレクト、または古いエントリを見つけます。
セグメント処理
別々のサイトマップファイルは、製品、記事、場所、画像、または言語バリエーションなどの有用な運用グループを示すことがあります。
レンダリングされた発見を追加する
サイトマップは不完全な場合があります。JavaScript が多く含まれるナビゲーションをレンダリングし、公開リンクをたどることは、宣言されたインベントリで省略された URL を追加します。
ブラウザはその決定木の中の一つの選択肢です。 Scrapeless Scraping Browser プロダクトページ は管理されたブラウザの表面について説明しており、 Scraping Browser の入門文書 は接続とセッションパラメータをカバーしています。ブラウザのレンダリングは、ブラウザの実行が必要な状態にのみ使用し、応答で既に利用可能なコンテンツにはより簡単なフェッチとパースの経路を保持してください。
実用的な診断ワークフロー
信頼できる診断は、自動化コードではなく比較から始まります。最初の応答を保存し、ライブインターフェースを観察し、各ターゲットフィールドをそれを作成するイベントまたはリソースに接続します。
- すべてのサイトマップディレクティブについて robots.txt を確認し、一般的なルートロケーションをフォールバックとしてのみ検査します。サイトは複数のファイルまたはクロスホストインデックスを公開できます。
- 取得したファイルが URL セットなのかサイトマップインデックスなのかを検出します。サイクルと重複ダウンロードを防ぎながら、子サイトマップロケーションを再帰的に処理します。
- ロケーションが絶対的で、正しくエスケープされ、サイトマップのロケーションの許可されたホストまたはパス範囲内にあることを検証します。
- URL を慎重に正規化しますが、サイトが標準として扱う区別を保持します。証拠なしに意味のある大文字、小文字、パス、ロケール、またはクエリの違いを消去しないでください。
- リストされている URL をサンプリングし、最終ステータス、リダイレクト先、標準ターゲット、およびコンテンツを確認します。構文的に有効なサイトマップには、依然として運用上悪いエントリが含まれている可能性があります。
結果を小さな抽出契約として文書化します: ターゲット URL パターン、公の文脈、ソースレイヤー、準備条件、セレクタまたは応答フィールド、一意のキー、継続ルール、終了ルール、および検証チェック。この契約は、それらを名前に指定せずに同じ仮定を含むスクリプトよりも耐久性があります。
契約を定義するときに、主要な技術文書からの証拠を使用します。このトピックに関連する基盤には、 サイトマップ XML プロトコル Google サイトマップ作成ガイダンスが含まれます。これらの情報源は、プラットフォームとプロトコルの動作を説明します; ターゲットサイトのライブ動作には、独自の観察が必要です。
一般的な間違い
サイトマップに関するほとんどの失敗は、ワークフローが必要とする実際の状態に便利な信号を置き換えることから生じます。以下の間違いは、もっと危険な明白なエラーよりも、もっと信頼できる出力を返すことがあります。
- サイトマップを完全なサイトインベントリとして扱うと、未掲載のページや JavaScript によって検出されたページを見逃します。
- リストされたすべての URL をインデックス可能とみなすことは、アクセス規則、noindex ディレクティブ、標準信号、および応答ステータスを無視します。
- すべての URL に対してファイルの修正日時を使用すると、新鮮さメタデータがノイジーであまり役に立たなくなります。
- サイトマップインデックスを忘れると、クローラーが実際のコンテンツの URL ではなく、子ファイルの URL を収集する原因となります。
- ホストを混合したり無効な相対 URL を使用すると、エントリがプロトコルの期待される範囲外に押し出される可能性があります。
これらの失敗をコンテンツレベルの主張で防ぎます。結果が期待されるときは、既知のコンテナ、少なくとも 1 つの安定したキーの要求、バッチ内の重複キーなし、一貫した順序、認識された空または終了状態を要求します。資格情報やプライベートデータを記録せずに疑わしい結果を再現するための十分なコンテキストを保存します。
維持可能なワークフローのベストプラクティス
視覚的な位置よりも安定した意味を好みます。 セレクタとルールは、値の一時的な位置ではなく、値の役割を説明するべきです。構造化された応答がページで使用される権威ある公のソースである場合、関連するフィールドマッピングを保持し、レンダリングされたラベルに対して検証してください。
状態を明示にします。 ロケール、ビューポート、ルート、公のセッション仮定、フィルタ、ソート順、および継続値を記録します。状態なしでの値は、後のキャプチャと比較することが不可能になります。
発見、取得、レンダリング、および抽出を分けます。 各ステージには異なるコストと失敗モードがあります。分離することで、ジョブは必要な URL のみにレンダリングでき、保存された応答を新しいトラフィックなしで再処理でき、不完全なレコードがダウンストリームシステムに入る前に検査できます。
制限された作業を使用します。 最大ページ数、スクロールアクション、アクティブリクエスト、および各実行のレコードを定義します。境界は、次の制御ループ、カーソルの繰り返し、またはページによって予期しないクロールスペースが作成されるときに、ターゲットサービスと収集システムの両方を保護します。
発行者とユーザーを尊重してください。 該当する場合はrobots.txtを確認し、条件と法律に従い、定義された目的に必要な公開フィールドのみを収集し、プライベートまたは制限されたエリアを避け、リクエストの量を保守的な範囲内に保ちます。技術的なアクセスは、すべての使用に対する承認とは異なります。
結論
サイトマップは運用モデルとして最も便利です:データが存在する場所を特定し、その状態がどのように生成されるかを観察し、それを再現できる最小の収集方法を選択します。最も強力なワークフローは、ソースとレンダリングされた状態を比較し、明示的な継続信号に従い、耐久性のあるキーでレコードを検証します。
1つの代表的なURLから始めて、スケーリングする前に抽出契約を書いてください。その小さなステップは、隠れたタイミング、ルーティング、ページネーション、およびポリシーの仮定を明らかにし、それらがまだ修正するのに安価なときに行います。ワークフローが各レコードが完了している理由と各フィールドがどこから来たのかを説明できるようになってからスケールしてください。
JavaScript駆動ページを検査する準備はできましたか?
公開ページがブラウザの実行、相互作用、またはレンダリングされた状態の検査を必要とする場合は、Scrapeless Scraping Browserを使用してください。
無料開始 →FAQ
簡単な言葉で言うと、サイトマップとは何ですか?
サイトマップは、サイトの所有者がクローラーに発見してほしいURLをリストしたファイルであり、ページが変更されたときのオプションのメタデータを含むことがよくあります。
サイトマップはインデックスを保証しますか?
いいえ。サイトマップは発見のヒントです。検索エンジンは、アクセス、品質、重複、およびその他の信号に基づいて、各URLをクロールおよびインデックスするかどうかを決定します。
サイトマップとサイトマップインデックスの違いは何ですか?
サイトマップはコンテンツURLをリストしますが、サイトマップインデックスはそれらのURLを含む別のサイトマップファイルをリストします。
ウェブクローラーはサイトマップのみを使用すべきですか?
いいえ。サイトマップの解析とリンククロールおよびレンダリングされた発見を組み合わせてください。サイトマップは古くなっているか、不完全な場合や存在しない場合があります。