用語
Webクローラー
Webクローラーは、リンクをたどり、内容を読み込み、必要に応じてスクリーンショット撮影やデータ抽出を行いながら、Webページを規則的に訪れるプログラムです。
Webクローラーの仕組み
クローラーは、1つ以上の開始URLから動きます。各ページのHTMLを取得してリンクを解析し、見つけたURLをキューへ加えます。次にキュー内のURLを訪れ、新しいリンクを探す処理を繰り返し、サイト構造の地図を作ります。
処理範囲はいくつかの設定で制御します。深さの上限は、開始URLから何階層までリンクをたどるかを決めます。URLフィルターは、対象のドメイン、サブドメイン、パスパターンを絞ります。レート制限は、同時リクエストを送りすぎて対象サーバーへ負荷をかけないようにします。
単純なクローラーはHTTPクライアントで生のHTMLを取得します。より高度なものはヘッドレスブラウザを動かし、JavaScriptを描画し、動的な内容の読み込みを待ってから処理します。初期HTMLの後に多くの内容を読み込むシングルページアプリでは、この違いが重要です。
同じURLを2回処理しないよう訪問済み集合を持ち、通常は、自動エージェントがアクセスしてよいパスを示すrobots.txtを確認します。robots.txtだけで法的な許可が決まるわけではないため、利用規約、認証、権利、プライバシーも別途確認します。
クローリングとスクレイピングの違い
関連する作業ですが、目的は異なります。クローラーの主な役割は発見です。ページを見つけ、Webサイトの構造を把握します。スクレイパーの役割は抽出です。各ページから文字、価格、画像、メタデータなど特定のデータを取り出します。
実際には組み合わせて使われます。クローラーがECサイトの商品ページを見つけ、スクレイパーが各ページから商品名、価格、在庫状況を抽出します。同じように、マーケティングサイトのページを見つけ、撮影処理で各ページの見た目を保存できます。実行には対象サイトの許可や規約の確認が必要です。
違いを簡潔に言えば、クローリングは「どのページがあるか」、スクレイピングは「各ページに何があるか」を扱います。
スクリーンショット作業では、多くの場合、クローリングは成果物ではなく発見の段階です。撮るべきURLを探し、そのURL一覧から視覚的な記録、監査、アーカイブを作ります。
Webクローラーが使われる場面
- 検索エンジン: GoogleやBingなどは、Googlebot、Bingbotといった大規模クローラーでWebページを見つけ、索引へ登録します
- サイト監査とSEO: サイト全体から、リンク切れ、メタタグの不足、リダイレクトの連鎖、アクセシビリティ上の問題を調べます
- 視覚的な監視: URL一覧やクロールで見つけたページを撮影するツールなら、手作業で移動せず、多数のページを視覚的に確認できます
- アーカイブとコンプライアンス: 組織が、自社サイトまたは適切な権限のあるページをクロールし、規制や法務向けの視覚記録とデータ記録を作ります
- 競合情報の調査: 許可された範囲で競合サイトの価格、新製品、内容更新を追う用途があります。利用規約、著作権、データ保護法などを確認します
よくある失敗
- robots.txtを無視する: 避けるべきパスを示す指示を無視すると、IP制限、サーバー負荷、規約・法的問題につながる場合があります。内容を確認し、尊重します
- レート制限なしでクロールする: 数百の同時リクエストはサーバーへ負荷をかけ、ボット対策やIP制限を引き起こします。リクエスト間に間隔を設け、同時接続数を制限します
- 重複URLを処理する: 末尾スラッシュ、クエリパラメーター、フラグメントなどの違いから、同じページへ複数のURLで到達できます。URLを正規化し、訪問済み集合で重複を避けます
- JavaScript描画を省く: React、Vue、Angularなどで動的に内容を読み込むサイトでは、生のHTMLだけでは必要な情報がない場合があります。JavaScript中心の対象にはヘッドレスブラウザを使います
- 対象範囲を決めない: 深さやURLフィルターがないと、無限ページング、外部ドメイン、動的生成URLへ広がる場合があります。開始前に明確な境界を決めます
よくある質問
WebクローラーとWebスクレイパーの違いは?
クローラーはリンクをたどってページを見つけ、URLを集めます。スクレイパーは、見つけたページから特定のデータを抽出します。クローラーがページを探し、スクレイパーまたは撮影処理が各ページを扱うように、両方を組み合わせるツールもあります。
WebクローラーはJavaScriptを実行しますか?
従来型クローラーはJavaScriptを実行せず、生のHTMLを取得します。現代的なクローラーは、ヘッドレスブラウザでJavaScript中心のページを描画できます。シングルページアプリや動的に読み込む内容に必要な場合があります。
クローラーが訪れるページを制限するには?
深さの上限で、たどるリンクの階層数を制限します。URLの許可・拒否パターンから、対象のパスを絞れます。robots.txt、サイト規約、アクセス権を確認し、対象サーバーへ負荷をかけない設定にします。
訪れたすべてのページをスクリーンショットにできますか?
ページを見つけるたび自動撮影する、クローラー付きのスクリーンショットツールもあります。自分が権限を持つサイトの視覚監査、保管、監視などに使えます。
Webクローリングは合法ですか?
法域、取得対象、方法、サイト規約によって異なります。公開ページでも、robots.txtと利用規約を確認し、短時間の大量リクエストを避けます。認証後のページや個人データを扱う場合は追加の法的・プライバシー上の問題があるため、必要に応じて専門家へ相談してください。
出典
- Googleのクロールとインデックス登録 — Google Search Central
- Robots.txt — MDN