本記事では、webページ巡回ツール、通称「クローラ」について紹介します。
クローラと言えば、検索エンジンのBOTというイメージが強いと思いますが、それだけじゃありません。専門分野に特化して情報収取をしたり、企業のマーケティング活動で利用されていたりします。 実現する技術基盤なども加えて、もろもろを紹介します。
クローラとは?
webクローラの定義についてはe-Wordsにて詳しく解説されていますが、簡単に説明すると「指定されたURL(そこからリンクする関連URLも)を、システムが自動で巡回して、サイトの情報を収集してくる」だけのツールです。
よって、クローラという単体ツールだけでは、なんら特徴のあるものではありません。
「検索エンジン用クローラ」「市場調査用クローラ」といった、特別な機能は、指定URLをクロールする方法(ルール)だったり、クロールした後の機能を独自に拡張されることで産みだされています。
どのようなクローラがあるの?
クローラ自体、非常に単純な技術ですので、独自拡張された機能をもとに分類すると、キリがありません。
そこで、代表的なものを4つほどピックアップします。
1.検索エンジン用クローラ
もっとも知れている利用方法ですね。
サイトを巡回して、そのサイト内の文字や画像を収集して、検索用元データとして蓄積するためのクローラです。
2.定点観測クローラ
クローラと言えば、大量にさまざまなサイトの情報を集めるものというイメージがありますが、そうではありません。実は、決まったサイトの、決まったページのみを定期的に巡回して、サイトの新着情報、更新情報を取得するという使い方が、主流です。
一時期、有名になった事件(岡崎図書館事件)のシステムも、このクローラの一種ですね。
3.掲示板・口コミ系サイトのキーワードクローラ
企業が、掲示板の書き込みや、口コミサイトの書き込みをマーケティングに利用する際に、クロールして収集します。
商品名だったり、特定のキーワードにひっかかるようにして、代表的なサイトを回ったり、そこからの関連サイトを自動で探したりもします。この際、ログインが必要なサイト(SNS系)なども、自動ログインして情報収集するクローラもあったりします。
4.SEO対策クローラ
SEOにとってもっとも大切なのは被リンクです。その被リンクの状況把握、制御を行うために、自サイトや関連サイトを定期的に監視したりします。
上手くすれば、どういったサイトのどの辺りに被リンクを増やせば、効果的なのか?といった分析もできます。
どのような技術でできているの?
大体、クローラの使い方は分かってもらったかと思います。
そこで、このクローラがどのような技術でできているかも、簡単に触れておきます。
1.wget
クローラのベース技術であるwgetについて、綺麗にまとめられたサイトがありました。
wgetの詳細な技術情報はこちらをご確認ください。
wgetが超絶便利なwebクローラー、クローリングツールだとは知らなかった・・・!|girigiribauer.com
もっとも簡単に作るのであれば、wgetで十分でしょう。
2.Rubyライブラリ
Rubyのオープンソースで非常にいいツールがあります。
以下のサイトで紹介されているので、サクッと利用してみても面白いかもしれません。
オープンソースのRubyのwebクローラー”Anemone”を使ってみる - プログラマになりたい
3.ブラウザーコンポーネント
何でもできるクローラを作ろうとする場合、ブラウザーの積んでいる解析エンジンコンポーネントを内部に取りいれたクローラを作る必要があります。
Trident、Gecko、webKitなど、コンポーネントもさまざまあるので、それらの挙動の違いなどを実現しようとすると、大変、ファットなツールになります。
クローラを活用する場合の注意点
クローラを運用するには、注意すべき点があるので、そちらも合わせてご説明しておきます。「一時期、有名になった事件」のようなことを避けるためにも重要なことです。
1.紳士協定の順守
metaタグのnoindex/nofollow、robot.txtで、クロール制限をかけているにもかかわらず、無視するクローラがいます。特別な場合を除き、守るようにしましょう。
また、クロールの回数ですが、常識的には、1日に数回程度に抑えるのが通常でしょう。上記事件で取り上げられている「1秒間に1回のアクセス」は、システム的には大したアクセス数ではなくても、企業のマーケティングデータ(PV数など)を意味のないものにしてしまう脅威です。
2.user-agentの明示
クロールの際、IPアドレスを複数用意して、user-agentを明示していないと、サイト側がコントロールすることができなくなります。サイト運営者からは、嫌われますので、注意してください。
3.無駄なクロールはしない
HTTPヘッダ情報のみを取得して無駄なクロールは避けるようにしましょう。クロール先のためにも、クロールものとリソース的にも、意味があることです。
まとめ
いかがでしたか?クローラについてご理解いただけたでしょうか?
EVERRISEではクローラをはじめとした各種アドテク関連ツールの作成を承っています。