ウェブクローラーとは何ですか?
Scrapeless Crawlは、制御されたクロールとダウンストリーム抽出ワークフローのために承認された公開ページを発見し、キャプチャします。
TL;DR
- ウェブクローラーは、スケジューリングポリシーに従ってページを発見し、訪れます。 それはシードURLから始まり、リンクを見つけ、正規化し、適格なURLをキューに追加します。
- クロールはコンテンツをマッピングし、スクレイピングはフィールドを抽出します。 クローラーは、ページをビジネスデータセットに変換せずに保存することがあります。
- 良いクローラーはスコープと負荷を管理します。 ホスト制限、正規URL、重複検出、ロボットルール、明確な識別により無駄を防ぎ、サイトへの圧力を軽減します。
- JavaScriptは、クローラーが見るものを変更することがあります。 いくつかのリンクは初期HTMLに現れますが、他のリンクはレンダリング後にのみ追加されます。
ウェブクローラーは、ページを発見し、リクエストし、リンクを抽出し、新しいURLを後で訪れるためにスケジュールする自動化されたクライアントです。検索エンジンは、インデックス作成のためにコンテンツを見つけるためにクローラーを使用し、組織はドキュメントをマッピングしたり、公開サイトを監視したり、後で抽出するためのページのコレクションを構成したりするためにフォーカスクローラーを使用します。
ウェブクローラーはどのように機能しますか?
ウェブクローラーは、小さなセットのシードURLを制御されたグラフトラバーサルに変えます。
- フロンティアをシードします。 承認された開始URL、サイトマップ、または既知のフィードをキューに追加します。
- ポリシーをチェックします。 ドメインスコープ、ロボットルール、ホワイトリスト、除外、ホストレベルのリクエスト制限を適用します。
- URLを取得します。 応答ステータス、コンテンツタイプ、最終URL、および正規ヒントを記録します。
- リンクを抽出します。 適格なリンクを解析し、相対URLを解決し、フラグメントを削除し、重複を正規化します。
- 次の訪問をスケジュールします。 未見の有用なURLを優先し、スコープまたは予算が完了したときに停止します。
その GoogleのJavaScriptクロールワークフロー は、クロール、レンダリング、およびリンク処理を分離し、取得したページとレンダリングされたページが異なるリンクを露出させる理由を理解するのに役立つモデルです。
より広範な Googleのクロールとインデックス作成のドキュメント は、URL発見、ロボット制御、正規化、メタデータ、レンダリングの懸念も分離します。
クローラーのコア部分
クローラーはフロンティア、フェッチャー、パーサー、重複排除レイヤー、ポリシーエンジン、およびストレージパスを必要とします。
| コンポーネント | 責任 |
|---|---|
| URLフロンティア | 適格なURLを格納し、訪問順序を決定します。 |
| フェッチャーまたはレンダラー | 応答を取得するか、レンダリングされたドキュメントを構築します。 |
| リンク抽出器 | HTML、ヘッダー、フィード、または構造化された応答の中でナビゲート可能なURLを見つけます。 |
| 正規化器 | URLを正規化し、同等のバリアントをグループ化します。 |
| ポリシーエンジン | ロボットルール、スコープ、ホスト制限、および除外パターンを適用します。 |
| 状態ストア | 訪問、失敗、コンテンツハッシュ、およびスケジューリングメタデータを記録します。 |
ウェブクローラーは何に使用されますか?
ウェブクローラーは、システムが変化する接続されたページのセットを発見しなければならない場所で使用されます。
検索インデックス作成
新しいページや更新されたページを発見し、それらのコンテンツをインデックスパイプラインに渡します。
サイト監査
ドメイン全体の内部リンク、リダイレクト、壊れたページ、カノニカルタグ、見出し、およびメタデータをマッピングします。
知識収集
検索システムにパースする前に、承認された文書または公共の知識ベースを横断します。
変更モニタリング
選択したURLをスケジュールに従って再訪し、コンテンツハッシュまたは抽出フィールドを比較します。
クローラーはどのように重複した無限パスを回避しますか?
クローラーは、URLの正規化、訪問済みリソースの追跡、そしてどのパスがフロンティアに入れるかを制限することで重複作業を避けます。
一般的な制御には、フラグメントの削除、非必須のクエリパラメータのソートまたは削除、カノニカルヒントの尊重、コンテンツハッシュの比較、最大深度またはページ数の設定が含まれます。カレンダーページ、ファセットナビゲーション、およびセッションパラメータは、そうでないと大量のほぼ重複したURLを作成する可能性があります。
クローラーはどのように責任を持って行動すべきですか?
責任あるクローラーは、自分自身を特定し、公開されたアクセスの好みを観察し、ホストごとの負荷を制限し、アクセスの境界で停止します。
RFC 9309 自動クライアントのためにrobots.txtのルールを標準化します。このプロトコルはクローラーの好みを伝えますが、保護されたコンテンツにアクセスする権限は与えません。サイトの利用規約、プライバシー義務、著作権、データベースの権利、およびローカル法は、別途確認が必要です。
URLフロンティアはどのように設計されていますか?
URLフロンティアはクローラーの作業セットです:訪問を待っているURLとそれらをスケジュールするために必要な情報を含みます。役立つフロンティアは、単なる文字列以上のものを保存します。ソースページ、発見時間、深度、ホスト、優先順位、予想されるページタイプ、URLを受け入れたポリシー決定などを含むことができます。そのコンテキストにより、クローリングが説明可能になり、スコープを超えた偶発的な拡張を防ぐのに役立ちます。
スケジューリングは関連性と公正さのバランスを取る必要があります。フォーカスされたクローラーは、ナビゲーションフィルターよりも製品詳細ページを優先するかもしれませんが、文書クローラーはサイト構造を明らかにするために目次ページを最初に訪れるかもしれません。ホスト認識スケジューリングは1つのドメインがワーカー全体を消費するのを防ぎ、リクエスト予算を強制できるようにします。
フロンティアには明示的な完了ルールも必要です。例としては、承認されたページの制限に達すること、対象となるURLを使い果たすこと、既知のサイトマップを完成させること、または定義されたページタイプのカバレッジ目標を満たすことが含まれます。停止条件がなければ、クローラーはカレンダー、検索の組み合わせ、役に立たないコンテンツを追加するパラメータの変種を見つけ続けることができます。
URLはどのように正規化され、重複を解消されますか?
URLの正規化は、フロンティアに入る前に異なる表現を一貫したアイデンティティに変換します。一般的な手順には、相対リンクの解決、ホストの小文字化、フラグメントの削除、デフォルトポートの正規化、およびサイトの動作に従った末尾のスラッシュの処理が含まれます。クエリパラメータには注意が必要です。なぜなら、一部はコンテンツを変更し、他の一部はナビゲーションのみを追跡するからです。
カノニカルタグとリダイレクトは役立つシグナルを提供しますが、盲目的に受け入れるべきではありません。クローラーは、要求されたURL、最終URL、宣言されたカノニカルURL、およびコンテンツハッシュを別々のフィールドとして記録できます。これにより、サイトが一貫性のないカノニカを宣言したり、複数のパスを通じて同じコンテンツを提供したりする際に証拠が保存されます。
重複排除は複数のレイヤーで行われる可能性があります。URLの重複排除は、同じ正規化されたアドレスの繰り返し取得を防ぎます。コンテンツハッシュは、同等の文書を返す異なるURLを特定します。レコードレベルの重複排除は、いくつかのページが同じエンティティを説明する場合、下流の段階で行われます。これらのレイヤーを分けておくことで、すべての重複ページを重複ビジネス記録として扱うことを避けることができます。
焦点を当てたクローラーは何を追跡するかをどのように決定しますか?
焦点を当てたクローラーは、承認されたコンテンツクラスに繋がる可能性のあるリンクを追跡します。URLパターン、リンク属性、周辺テキスト、ページテンプレート、サイトマップのメンバーシップ、または構造化されたナビゲーションデータを使用することができます。この決定は、レビュー可能な観察可能な特徴に基づくべきであり、すべての内部リンクが価値があるという不透明な仮定に基づくべきではありません。
許可ルールは意図された領域を定義し、拒否ルールはアカウントページ、検索の組み合わせ、カレンダーのループ、ダウンロード可能なバイナリ、または破壊的なアクションなどの既知のトラップを除去します。ポジティブなスコープは、常に増加するブロックリストに依存するよりも安全です。クローラーが特定の文書セクションのために設計されている場合、レビューされたルールが拡張しない限り、そのホストとパス階層のみを許可します。
ページの分類は、スケジューリングと抽出の両方を改善します。リストページはより多くの候補リンクを生成することができ、詳細ページはスクレーパーにデータを供給し、エラーページはブランチを終了させることがあります。分類はレスポンス内の耐久性のあるマーカーを使用し、未知の状態を含めるべきですので、新しいテンプレートが間違ったパイプラインに静かに入ってこないようにします。
再クローリングはどのようにスケジュールされますか?
再クローリングは、変更検出の問題です。クローラーは、ページの価値、観察された変更率、およびソース制約に応じてページを再訪する必要があります。すべてのサイトに単一の間隔を適用するのではなく。そのため、頻繁に更新されるリストページは、安定したポリシー文書よりも早めのチェックが必要かもしれません。繰り返し変更されないページは、頻度を減らして同じスケジュールを持つことができます。
条件付きHTTPリクエストは、サイトがバリデーターを提供する場合に不要な転送を削減できますが、クローラーは欠如や不一致のバリデーターに対するポリシーを必要とします。コンテンツハッシュは、取得後にアプリケーションレベルのシグナルを提供します。テンプレートノイズ、回転する推奨、またはセッション固有のマークアップなどの意味のあるコンテンツ変更を区別するために十分な履歴を保存します。
再クロールキューは削除も処理する必要があります。見つからない応答、リダイレクト、アクセス境界、または空のページは、正当なライフサイクルイベントを示す可能性があります。観察結果を記録し、以前のデータを即座に削除するのではなく、レビューされた状態遷移を適用してください。
クローラーの品質をどのように観察しますか?
クローラーの品質は、有用なカバレッジとコントロールされた動作によって測定されます。発見したURL、許可されたURL、取得したページ、ユニークコンテンツ、ページタイプ、リダイレクト、除外されたパス、および抽出準備が整ったページを追跡してください。発見数が増えても、追加が重複や範囲外のパラメータである場合、成功とは言えません。
運用診断は、すべての取得をそのフロンティアレコードとポリシー決定に接続する必要があります。クローラーがページを見逃した場合、レビュアーはリンクが見たこともないものだったのか、範囲によって拒否されたのか、不正に重複されたのか、取得問題でブロックされたのか、間違ったタイプとして分類されたのかを知る必要があります。
最後に、カバレッジとともにサーバーの影響とコンプライアンス信号をレビューします。ホストレベルのリクエスト量、応答パターン、および公開されたクロールの好みは、スケジューリングに影響を与えるべきです。範囲やソース負荷を無視しながら正しいページをマッピングするクローラーは、健全なクローラーではありません。
結論
ウェブクローラーは、URLを中心に構築された発見とスケジューリングシステムです。品質は、追跡できるリンクの数よりも、範囲、重複、レンダリング、再訪ポリシー、およびサーバー負荷をどれだけ注意深く制御するかに依存します。
ウェブデータワークフローを構築する準備はできていますか?
Scrapelessを使用して公共のウェブコンテンツを取得し、その後、データセットに合った発見と抽出パターンを適用してください。
無料で始める →よくある質問
ウェブクローラーはボットですか?
はい。ウェブクローラーは、リソースを自動的に訪問し、定義されたポリシーの下で追加のURLを発見するために設計されたソフトウェアボットです。
クローラーはデータを抽出しますか?
クローラーはリンクとメタデータを抽出できますが、構造化フィールドの抽出は通常、スクレイパーの仕事です。1つのシステムに両方のコンポーネントが含まれる場合があります。
robots.txtはアクセスをブロックしますか?
いいえ。robots.txtは協調的なクローラーにルールを伝えます。それは認証やアクセスコントロールメカニズムではありません。
クローラーはJavaScriptでレンダリングされたリンクを読み取ることができますか?
はい、クローラーにレンダリングステージが含まれている場合。取得のみのクローラーは、取得された応答に存在するリンクのみを確認します。