用語
Webスクレイピング
Webスクレイピングは、HTMLの解析、ヘッドレスブラウザによる描画、視覚的な記録の撮影などを通じ、分析、監視、保管に使うデータや内容をWebサイトからプログラムで取得することです。対象へのアクセス権と利用条件を確認して行います。
スクレイピング、クローリング、スクリーンショット撮影の違い
3つは重なる部分がありますが、目的が異なります。
Webクローリングは、リンクをたどってWebサイトを規則的に移動する処理です。開始URLからリンク先を見つけ、繰り返し訪れます。目的は、サイト構造の把握または索引化です。検索エンジンが代表的なクローラーです。
Webスクレイピングは、見つけたページから特定のデータを取り出します。商品価格、記事本文、連絡先、メタデータなどをHTML要素から抽出し、CSV、JSON、データベース行などの構造化データにします。
スクリーンショット撮影は、ある時点のページの見た目を保存します。スクレイピングのように構造化データを取り出すのではなく、描画結果を画像にします。視覚状態が元データと同じくらい重要な保管、ビジュアルリグレッションテスト、適切な権限のある競合調査、コンプライアンス記録などに使われます。
これらを組み合わせることもできます。たとえば監視処理で、商品ページから価格を抽出し、視覚的な記録として画像を撮り、定期的なクロールで新しいページを見つけます。
Webスクレイピングが使われる場面
- 価格監視: 小売業者や調査担当者が、許可された範囲で競合価格の変化やセールを追い、戦略の資料にします
- コンテンツ集約: ニュースサービスや調査ツールが、複数の出典から記事、見出し、要約を取得し、1つの画面に表示します。ライセンスと利用条件の確認が必要です
- 見込み顧客の調査: 公開ディレクトリ、求人サイト、SNSプロフィールから連絡先や企業情報を収集する用途があります。個人データの取得と連絡には、法令、同意、サービス規約が適用されます
- 研究と学術: 公開データを分析、感情分析、傾向調査のため取得します。研究倫理とデータ利用条件に従います
- コンプライアンスと保管: 組織が、公開情報の記録を法務または規制上の目的で撮影、取得します。必要な証跡手順は用途ごとに確認します
Webスクレイピングの仕組み
単純な方法では、HTTPリクエストでページのHTMLを取得し、PythonのBeautifulSoupやNode.jsのCheerioなどで解析します。CSSセレクターまたはXPath式で対象要素を探し、文字、属性、構造を取り出します。
現代のWebサイトはJavaScriptで内容を動的に読み込むことがあり、生のHTMLだけでは足りない場合があります。このようなサイトでは、Puppeteer、Playwright、Seleniumなどからヘッドレスブラウザを動かし、ページを描画してJavaScriptを実行し、結果のDOMから抽出します。
データ抽出と視覚撮影を組み合わせる処理もあります。ヘッドレスブラウザで描画した後、DOMから構造化データを取り出し、同時に見た目の記録を撮ります。データとその表示状況の両方が重要な監視で役立ちます。
スクリーンショット製品でも、この違いは重要です。ある時点でページがどう見えたかを記録するなら、構造化データを抽出しなくても、画像が適した成果物になる場合があります。項目、価格、文章を大量に集めるなら、画像は補足記録であり、主な出力ではありません。
よくある失敗
- 利用規約を無視する: 自動アクセスを禁止するサイトもあります。公開表示されるデータでも、規約違反が法的問題につながる場合があります。サイト規約とrobots.txtを確認し、必要な許可を得ます
- レート制限なしで取得する: 短時間にリクエストを送りすぎると、サーバーへ負荷をかけ、IP制限を受け、サービス妨害と見なされる可能性があります。リクエスト間に間隔を設け、サイトの指示と容量を尊重します
- JavaScript描画ページを静的取得だけで扱う: 必要な内容が初期読み込み後にJavaScriptから追加される場合、単純なHTTPリクエストでは空または不完全になります。必要に応じてヘッドレスブラウザで読み込みを待ちます
- スクリーンショットを構造化データとして扱う: 画像から機械可読な項目を直接得ることはできません。文字を取り出すにはOCRが必要で、誤認識も入ります。構造化データが目的なら、利用可能なAPIまたはHTMLを直接使います
よくある質問
Webスクレイピングは合法ですか?
取得する内容、利用方法、法域、サイト規約によります。公開データでも、規約違反、認証の回避、個人データの収集などは法的責任につながる場合があります。米国の2022年hiQ対LinkedIn判決は公開データの取得に関する判断を示しましたが、国や事案で法律は異なります。具体的な実施前に専門家へ確認してください。
スクレイピングとクローリングの違いは?
クローリングはリンクをたどってページを見つけ、URLを集めます。スクレイピングは、そのページから特定のデータを抽出します。クローラーがページを見つけ、スクレイパーが内容を取り出します。両方を行うツールもあります。
スクリーンショットでWebサイトをスクレイピングできますか?
スクリーンショットはページの見た目を保存しますが、構造化データを抽出しません。保管、監視、画像比較には使えます。文字や価格などの構造化情報が必要なら、権限のあるAPIまたはHTML解析のほうが効率的です。
スクレイピングにはヘッドレスブラウザが必要ですか?
必ずしも必要ではありません。静的ページなら、HTTPクライアントでHTMLを直接取得できます。JavaScriptで内容を描画するサイトでは、取得可能になるまでページを実行するため、PuppeteerやPlaywrightなどのヘッドレスブラウザが必要な場合があります。
WebスクレイピングとWebサイト監視はどう関係しますか?
監視では、一定間隔でページを読み込み、価格、状態、内容などを抽出し、前回と比較するスクレイピング手法を使う場合があります。視覚監視ではスクリーンショットも撮り、データだけでは分からないレイアウト変更を確認します。
出典
- robots.txtの概要 — Google Search Central
- Scrapyの概要 — Scrapy