SEOの学習帳

SEOで学んだことを書きます。

クローラーとは?なぜ重要なのかどんな仕組みなのか

クローラーとは?

クローラーとはウェブ上にあるテキストや画像などを取得し検索エンジンのデータベースへ登録させるために用いられるプログラムです。

クローラーもボットもスパイダーも同じ意味で呼ばれます。

クローラーの仕組みと重要性を理解するためには、検索したときに検索結果が表示されるまでを知る必要があります。

検索結果が表示されるまでにGoogle検索の流れは3つポイントがあります。

  1. クロールクローラーと呼ばれる自動プログラムを使用して、ウェブ上で見つけたページからテキスト・画像・動画などをダウンロードする。
  2. インデックス登録:ダウンロードしたテキスト・画像・動画ファイルを解析して検索エンジンのデータベースへ保存します。
  3. 検索結果の表示:ユーザーがGoogleで検索すると検索クエリに関連したコンテンツを返します。

新規ページを作ったとしてもページを変更したとしてもGoogleクローラーがページに訪れてくれない限りGoogleの検索結果に表示されませんし、ページは再評価されず検索順位は変わりません。

流入を増やすためにはいかにクローラーが訪れてくれてページをたくさんインデックス登録してくれるかが重要になります。

もう少しGoogle検索の仕組みを理解したい方は、Google検索セントラルのページがおすすめです。

developers.google.com

今更ですがこれからの話はすべてGooglebotを対象にしています。

BingのBingbotやappleのApplebotなどありますが世界でも日本でも一番使われている検索エンジンはGoogeなのでここを押さえておけば間違いないかと思います。

クローラーの処理構造

クローラーの処理

クローラーの処理
  1. クロールキューXMLサイトマップや過去のクロールによって得られたURLをリスト化します。
  2. クローラ:クロールキューからURLを取得して、クロールが許可されているのかrobots.txtを読み込んで確認します。もし禁止されていた場合はHTTPリクエストをせずスキップします。
  3. 処理→レンダリング:ユーザーと同じようにコンテンツを確認するためページをレンダリングします。
    1. HTTPレスポンスした際にnoindexがあった場合はレンダリングを行わず終了します。
    2. noindexがなければ、レンダリングキューにいれられレンダリングを行います。
    3. サーバーサイドレンダリングのようにHTMLにすべてのコンテンツがある場合は問題ないですが、フロント側でJavaScriptを使用してHTMLを生成するような場合はJavaScriptを実行します。
    4. HTMLにリンクがあった場合はURLをクロールキューに追加します。
  4. インデックスレンダリングをして得られたテキスト・画像・動画を検索エンジンのデータベースに保存します。

こんな感じでクローラーは処理を行います。

この後クローラビリティというクロールの効率化について話す際にこの処理を理解しておくと何のためにやるのかがはっきりします。

クローラーで抑えておくべきポイント

クローラーには限られたリソース(制限時間と制限容量と考えると分かりやすい)があり、すべてのページをクロールしてくれるわけではありません。

サイトに訪れてもページがたくさんあれば途中でやめてしまうことだってあります。

せっかくリライトしたのに中々インデックスされないなんてこともあります。

新規ページを公開したらインデックス登録してほしいし、更新したページも評価してもらわないと検索結果の順位は上がりませんよね。

どのくらい自分のサイトにリソースを割いてくれるか、効率化させてページをクロールしてもらうことが大切です。

 

クロールバジェットは限られている

Googleがサイトのクロールに費やす時間やリソースはクロールバジェットと呼ばれクロール能力とクロールの必要性の2つによって決められます。

サイトのクロールできる時間を決める要素と思ってもらってOKです。

クロール能力の上限

クロール能力とはクロールの頻度と言ってもよいかと思います。

クロール頻度とはサイトにやってきたクローラーがクロール時に行う1秒間当たりのリクエストの上限です。

リクエストを行えば必然的にサーバーはレスポンスするために処理をするため負担がかかりますが、Googleはサーバに負担をかけないようにクロールをしたいという考えがあるため以下の要素でクロール頻度を定めます。

  1. サーバーの対応能力:リクエストに対して迅速に応答してくれている場合は、接続数を上げ頻度を上げますが、応答が遅くなった場合やサーバーエラーが返ってきた場合は接続数を少なくして頻度を下げます。
  2. Search Consoleでの設定:Search Consoleでクロール頻度を減らすことができます。しかしクロール頻度を高めることはできません。
  3. Googleのクロール上限:Googleのクロールに使うマシンによって上限が決まります。

つまり、サーバーの強さやSearch Consoleの設定、マシンの上限によってクロールの頻度を調整します。

クロールの頻度が高ければ高いほどたくさんのページを素早く読み込んでくれるわけです。

ちなみに余談ですがクロール頻度をサイトにやってきてくれる回数と勘違いしないように気を付けてください。

クロールの必要性

他のサイトと比較して、クロールする時間・更新頻度・ページの品質・関連性を考慮してクロールに必要な時間を費やしています。

クロールの必要性は3つの要素できまります。

  1. 検出されたURLの数:クローラーはサイト上の認知しているURLすべてをクロールしようとします。
  2. 人気度:インターネット上で人気の高いURLほど情報の鮮度を保とうと頻繁にクロールされます。(人気度は被リンクの多さで決まる※自分の考え)
  3. 古さ:変更の反映に十分な頻度でクロールしようとします。

これはそのサイトをクロールする必要性があるのかを判断しています。

URLの数が多ければたくさんクロールしないとすべて把握するのは難しいと考えればURLが少なければそんなにクロールしなくてもいいと思えます。

人気がなければ必要性は低いですし、頻繁に更新しないのも必要性は低そうですよね。

クロールバジェットまとめ

クロールの能力が上限に達していなくても、クロールの必要性が小さければサイトのクロールは少なくなります。

クロールバジェットを増やす方法としてGoogleはこのようにアドバイスしています。

クロール バジェットを増やす方法
Google では、人気、ユーザー価値、一意性、配信容量に基づいて、各サイトに対するクロール リソースの量を決定します。クロール バジェットを増やす唯一の方法は、クロールの処理能力を高めること、そして何よりも検索ユーザーにとってのサイト コンテンツの価値を高めることです。

クロールの処理能力を高めるというのはサーバーが強くないと難しそうです。

ただ限られた時間・リソースでもクロール効率を上げることでたくさんのページをクロールしてもらうことが可能です。

これをクローラビリティと呼びます。

クローラビリティを高める方法がいくつかあるので紹介します。

※私のようにページ数が少なく更新もあまりされないようなサイトはクローラビリティを高める必要はありません。

更新したらインデックスリクエストが手動でできますし、すぐにインデックスされるからです。

大規模サイトや更新が頻繁に行われるサイトでは、時間・リソースの上限によりインデックスがなかなかされないこともあるのでクローラビリティを上げる必要があります。

クローラビリティを高める方法

クロール処理構造で紹介したフローの中でどこに時間・リソースがかかるかを理解すれば改善するべきところがわかるかと思います。

ポイントは、HTTPリクエストをしてレンダリングすることに時間やリソースの無駄を削減することと、クローラーが手広くページを巡回できるようにサイト内構造を適切にしてあげることです。

※リソースといったり時間といったりするとややこしいのでこれ以降はクロールバジェットとまとめます。

無駄なクロール時間を削減する

  • 重複コンテンツをまとめる
    • クローラーは認知しているURLをすべてクロールするため重複コンテンツであってもクロールバジェットを消費します。
    • 重複コンテンツは301リダイレクト設定し正規化することでクロールバジェットを減らせることができます。
  • robots.txtでURLのクロールをブロックする
    • noindexの場合、HTTPレスポンスされた際にnoindexを確認するためクロールバジェットが無駄になります。
    • 検索結果に表示させたくないようなページはrobots.txtでブロックすることで無駄が減ります
  • 削除したページは404, 410ステータスコードを返す
    • クローラーは認知しているURLをすべてクロールします。
    • 404は対象URLを再度クロールしないように強く求めるので無駄を削減できます
  • soft404エラーをなくす
    • soft404エラーとはURLにアクセスしたときにページがないのに200ステータスコードを返すことです。
    • この状況だと永遠にクロールされるため404ステータスを返すなどしてクロールされないようにしましょう。
  • URLを簡潔にする
    • 過度に複雑な URL(特に、複数のパラメータを含む URL など)は、サイト上の同じまたは同様のコンテンツを表す多数の URL が不必要に作成される原因となることがあります。その結果、クロールの際に問題が発生し、Googlebot が必要以上に帯域幅を消費したり、サイトのすべてのコンテンツがインデックスに登録されない状態を招いたりする可能性があります。

      Google の URL 構造ガイドライン | Google 検索セントラル  |  ドキュメント  |  Google for Developers

       

    • Google公式より上記の記載があるので、簡潔なURLにすることをおすすめします。 

  • ページの読み込み効率を上げる
    • クローラはレンダリングをするため画像や動画, CSS, JavaScriptなども読み込みます。
    • できる限り早くレンダリングできるようにすることでクロールバジェットを削減できクロールされるページを多くすることができます。

サイト内構造を適切にする

  • サイトマップを最新状態に保つ
  • 内部リンクの最適化
    • サイトマップと考え方は同じでクローラーがページを見つけやすくするためです。
    • 低品質のコンテンツの内部リンクよりも高品質のコンテンツへの内部リンクを意識しクロールが使うリソースの最適化する

番外編

  • 外部リンクをもらう
    • クロールキューに入れられるのは自分のサイトだけではありません。
    • 外部ページに自分のURLがある場合もクロールされるので訪れる頻度が増えます
  • サーバーを最強にする
    • サーバーが弱いと結局クロール頻度が低くされます。
    • なのでつよつよサーバーを持っておけばその影響はないし、レスポンスも早いのでクロールバジェットの削減にもつながるのでは?と思っています。

まとめ

クローラとクローラビリティについてご説明いたしました。

更新しても新規ページを追加してもインデックス登録がされないと検索結果にあがってきませんし順位が上がることもございません。

大規模なサイトや更新頻度の高いサイトを運用しているのであれば一度チェックしてみてはどうでしょうか。