ウェブクローラーとは?

1 min read
What is a web crawler featured image

ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。この記事では、以下の事項を説明します。

ウェブクローラーの定義

ウェブクローラーとは、インターネットをスキャンして、見つけたデータをダウンロードするソフトウェアロボットです。大半のウェブクローラーは、Google、Bing、Baidu、DuckDuckGoなどの検索エンジンによって運用されています。検索エンジンは、収集したデータに検索アルゴリズムを適用して、検索エンジンインデックスを作成します。このインデックスにより、検索エンジンはユーザーの検索クエリに基づいて、関連するリンクを提供できます。

過去の特定の時点のウェブサイトのスナップショットを提供するWay Back Machineのように、検索エンジンとは別の目的で使用されるウェブクローラーもあります。  

ウェブクローラーの仕組み

GoogleのGooglebotのようなウェブクローラーは、毎日、クローリングしたいウェブサイトのリストを作成して作業を開始します。これはクロールバジェットと呼ばれます。バジェットには、ページのインデックス作成に対する需要が反映されます。クロールバジェットに影響する2つの主な要因は、人気と陳腐化です。インターネット上で人気のあるURLは、インデックス内で最新の状態を保つために、より頻繁にクローリングされる傾向があります。また、ウェブクローラーはURLのインデックスが陳腐化するのを防ごうとします。

ウェブクローラーがサイトに接続すると、まずrobots.txtファイルをダウンロードして読み込みます。robots.txtファイルは、ロボットがウェブをクローリングし、コンテンツにアクセスしてインデックスを作成し、そのコンテンツをユーザーに提供する方法を規制するウェブ標準群であるロボット排除プロトコル(REP)の一部です。ウェブサイトの所有者は、サイト上でアクセスできるユーザーエージェントとアクセスできないユーザーエージェントを定義できます。また、robots.txtには、クローラーがウェブサイトに対して行うリクエストのペースを抑制するためのcrawl-delayディレクティブを定義することもできます。また、robots.txtには、サイトに関連するサイトマップも記載されているため、クローラーはすべてのページとその最終更新日時も確認できます。前回のクローラー訪問以降に変更がないページは、今回スキップされます。

ウェブクローラーは、クローリング対象のページに最終的に到達すると、そのページをブラウザーでレンダリングし、すべてのHTML、サードパーティーのコード、JavaScript、CSSを読み込みます。この情報は検索エンジンのデータベースに保存され、後でページのインデックス作成とランク付けに使用されます。また、ページ上のすべてのリンクもダウンロードします。検索エンジンのインデックスにまだ登録されていないリンクは、後でクロールするためのリストに追加されます。

robots.txtファイルに記載されているディレクティブへの準拠は任意です。ほとんどの主要な検索エンジンはrobots.txtディレクティブに従っていますが、そうでないものもあります。スパマーやボットネットなどの悪質業者は、robots.txtディレクティブを無視します。Internet Archiveのような合法的なウェブクローラーでさえ、robots.txtを無視しています。

ウェブクローラーの例

検索エンジンには複数の種類のウェブクローラーがあります。たとえば、Googleには17種類のボットがあります。

  • APIs-Google
  • AdSense
  • AdsBot Mobile Web Android
  • AdsBot Mobile Web
  • Googlebot Image
  • Googlebot News
  • Googlebot Video
  • Googlebot Desktop
  • Googlebot Smartphone
  • Mobile Apps Android
  • Mobile AdSense
  • Feedfetcher
  • Google Read Aloud
  • Duplex on the web
  • Google Favicon
  • Web Light
  • Google StoreBot

SEO対策にウェブクローラーが重要な理由

SEOの目標は、ユーザーが関連する検索語を検索したときに、自社のコンテンツが簡単に見つかるようにすることです。Googleは、コンテンツがクローリングおよびインデックス化されていない場合、コンテンツをどこにランク付けしたらよいかを知ることができません。

ウェブクローラーは、他の分野でも役立つことがあります。Eコマースサイトでは、競合他社のサイトをクローリングして、製品の品揃えや価格を分析することがよくあります。通常、この種のデータ収集は「ウェブクローリングではなくウェブスクレイピング」として知られています。ウェブスクレイピングは、特定のHTMLデータ要素に焦点を当てます。ウェブスクレイパーは非常に集中的であるのに対し、ウェブクローラーは広く網を張ってあらゆるコンテンツを収集します。ユーザーの側には、SERPデータのクローリングやスクレイピングを支援するSERP APIツールもあります。

ウェブクローラーが直面する課題

ウェブクローラーが直面する課題はいくつもあります。

課題説明
robots.txtの制限ウェブクローラがrobots.txtの制限に従う場合、特定のウェブページにアクセスできなかったり、任意の制限を超えるリクエストを送信できなかったりすることがあります。
IPの禁止ウェブクローラーの中には、robots.txtの制限に従わないものもあるため、それらが他のさまざまなツールを実装してウェブクローリングを制限することがあります。ウェブサイトは、詐欺師が使用する無料データプロキシや特定のデータセンターのIPアドレスなど、悪意があることがわかっているIPアドレスを禁止することができます。
ジオロケーションの制限一部のウェブサイトでは、ウェブサイトコンテンツにアクセスするために、特定の地域に居住していることを条件としています。たとえば、米国以外の地域からNetflix USAのコンテンツにアクセスしようとする場合です。地理的な制限の大半は、レジデンシャルプロキシネットワークを使用することで克服できます。
CAPTCHA一部のウェブサイトでは、不審なソースからの大量のアクティビティを検出すると、リクエストの背後にいるのが本物の人間かどうかを確認するためにCAPTCHAを表示します。CAPTCHAはウェブクローラーの活動を阻害する可能性があります。多くのウェブスクレイピングソリューションは、この種のブロックを克服するためのツールや技術を備えています。これらのブロック解除ツールは、多くの場合、CAPTCHA解決ソリューションを利用します。

まとめ

ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。これにより、検索エンジンは検索インデックスを作成するために必要なデータを収集し、ユーザーのクエリに対して検索結果を提供できます。多くの企業は、調査を支援する役割としてのウェブクローラーに注目しています。実際には、多くの場合、Amazon、Adidas、Airbnbのリスティングのように、1つか2つのサイトに集中しています。このようなユースケースでは、Bright DataのウェブスクレイパーIDEのようなツールが、よりニーズに適しています。

あなたは下記にもご興味がおありかもしれません

各種ご利用方法

Node.js でプロキシサーバーを使用する方法

データ収集の手法である Web スクレイピングは、IP の禁止、ジオブロッキング、プライバシーの問題など、さまざまな障害によって妨げられることがよくあります。幸い、これらの課題を乗り越えるのにプロキシサーバーが有効です。プロキシサーバーはユーザーのコンピューターとインターネットの間の仲介役となり、独自の IP アドレスで要求を処理します。この機能は、IP 関連の制限や禁止を回避するだけでなく、地理的に制限されたコンテンツへのアクセスも容易になります。さらに、プロキシサーバーは Web スクレイピング中に匿名性を維持し、プライバシーの保護にも役立ちます。 また、プロキシサーバーを利用することで、Web スクレイピングのパフォーマンスと信頼性を向上させることもできます。要求を複数のサーバーに分散させることで、1 台のサーバーに過剰な負荷がかからないようにし、プロセスを最適化します。 このチュートリアルでは、Web スクレイピングプロジェクト向けに Node.js でプロキシサーバーを使用する方法を解説します。 前提条件 このチュートリアルを始める前に、JavaScript と Node.js についてある程度理解しておくことをお勧めします。Node.js がコンピューターにまだインストールされていない場合は、 今すぐインストールする必要があります。 適切なテキストエディターも必要です。Sublime Text など、いくつかの選択肢があります。このチュートリアルでは、Visual Studio Code (VS Code) を使用します。このエディターは使いやすく、コーディングを容易にする機能が満載です。 はじめに、web-scraping-proxy という名前の新しいディレクトリを作成し、Node.js プロジェクトを初期化します。ターミナルまたはシェルを開き、次のコマンドを使用して新しいディレクトリに移動します。 次に、HTTP 要求を処理して HTML を解析するために、Node.js パッケージをいくつかインストールする必要があります。 プロジェクトディレクトリにいることを確認し、次のコマンドを実行します。 HTTP 要求で Web コンテンツを取得するには、axios を使用します。Playwright と Puppeteer は、動的な Web サイトのスクレイピングに不可欠なブラウザの操作を自動化します。Playwright はさまざまなブラウザをサポートしており、Puppeteer は Chrome または Chromium […]
4 min read
How to Set Proxy in AIOHTTP
各種ご利用方法

AIOHTTPのプロキシ設定方法

このガイドではAIOHTTPのプロキシ設定方法を段階的に説明
3 min read
Invoke-Webrequest With a Proxy
各種ご利用方法

プロキシで PowerShell Invoke-WebRequest を使用する方法

PowerShell の Invoke-WebRequest コマンドレットは、ウェブサイトに HTTP 要求を行うのに便利なツールです。Bright Data のプロキシサービスを使用している場合は、-Proxy パラメーターの後にプロキシの詳細を指定することで、このコマンドレットをプロキシで使用できます。
3 min read