Googlebotはリンクをたどってクロールしたりはしない、人間のユーザーとは違う

[対象: 中〜上級]

ナイスアイディアを思いついたGooglebotくん
Googlebotがどのようにしてウェブページへのクロールを開始するかが今日のトピックです。

Googlebotに限らず検索エンジンのロボットはリンクをたどってリンク先のページへ訪問すると言われます。
しかし正確に言うと、少なくともGooglebotにおいてはこれは正しくありません。

Googlebotは、僕たち人間のユーザーとは違って文字どおりリンクをたどってその先にあるページにアクセスしたりはしないのです。

では実際にどうやっているかというと次のようなプロセスなります。

  1. ページをクロールした際にそのページにあるリンク(URL)を発見する
  2. サイトマップで送信されたURLの情報を参照する
  3. 上の2つの情報をもとにクロールするURLのリストを作成する
  4. そのURLリストに従ってクロールを開始する

端的に言うとクロール対象のURLのリストを作成して、そのリストにあるURLに対して順番に新たにクロールを始めるのです。
僕らがよく言うように、本当にそのままリンクをたどってリンク先をクロールしたりはしていません。

GooglebotがReferrer(リファラー)を記録しない理由がここにあります。
言ってみれば直接アクセスしているわけですね。

基本的にURLを発見するのは1番目のリンクによってです。

2番目のサイトマップはURLの発見を手助けするものでクロールとインデックスを保証するものではありません。
よくご存知のとおりです。

URLの発見にはほかには、RSSフィードURLのサイテーション(ハイパーリンクなしのURLの記述)なども使われます。
PageRankとアンカーテキストは渡さないけれどnofollowの付いたリンクもURLの発見には使われます。
簡単なものであればフォームでさえ送信してしまいます。
ときには、rel=”canonical”で指定したURLも発見に使われることがあると聞いています。

このようにリンクを中心にサイトマップなどありとあらゆる手段を使ってGooglebotは貪欲にURLを見つけてリスト化します。

リストに載ったURLにはクロールの優先度が与えられます。

さまざまなアルゴリズムが複雑に働いていると思われますが優先度にいちばん大きな影響を与えるのはPageRankのはずです。
PageRankが高いURLがより優先的にクロールされるでしょう。

ほかにはそのページの更新頻度も比較的大きな要因になっていそうです。
更新頻度が高いほうがクローラが回ってくる頻度も高いでしょう。

以上のようなプロセスでGooglebotはクロールを実行します。

最初にも書いたように、リンクを発見したとしても人間のユーザーがクリックして移動するようにはその場で直接リンク先を訪れるわけではないんですね。

どこから得た情報? という疑問が出てくるかもしれません。

Googleのヘルプにきちんと書いてあります。

クロールを開始する際は、前回のクロールで生成され、ウェブマスターから提供されたサイトマップによって補強された、ウェブページの URL リストを使用します。Googlebot はこれらのウェブサイトすべてにアクセスし、各ページのリンクを検出してクロール対象ページのリストに追加します。

ヘルプの説明と、あとは僕が今までに学んできた情報をプラスして今日の記事を書きました。

ウェブサイトの日々の運用のなかでは知らなくてもまったく問題にならないことですが、SEOに取り組んでいる人なら持っていてもいい豆知識ですよね?