• 検索結果がありません。

処理の概要

ドキュメント内 WISDOM Web (ページ 47-50)

第 5 章 クローラ 33

5.2 WISDOM のクローラ

5.2.1 処理の概要

WISDOMのクローラはその種別により細部の動作は異なるものの,その基本的な処理は共通してい

る.WISDOMのクローラの基本的な処理の概要を図 5.3に示す.なお,WISDOMクローラでは基本処

理を構成するDNS名前解決,ページ収集,ページ解析などの各モジュールについて,東京大学の田浦健 次朗氏が開発したexCrawlerを利用している.exCrawlerはPythonで実装されたクローラで,非同期 並列名前解決,非同期HTTPリクエスト発行,robots.txtの処理,同一ホスト/IPに対するアクセス頻 度に対する制約を守った形でのクロールスケジューリング,リンク抽出,フィルタ等,クローラに必要 とされる基本的な機能が一通り実現されている.WISDOMのクローラはexCralwerを核として,大規 模なページデータの管理,特定の重要サイトの再帰的な収集(深度クローラ),RSS フィードによる収集 (RSSクローラ)といった特殊な機能を追加したものとなっている.

クローラはまずURL DBから収集対象のURLを選択する(図 5.3(1)).URL DBとはURLに関す る情報を管理するデータベースであり,正規化されたURL毎に最終クロール時刻,最終更新時刻,累計

5.2 WISDOMのクローラ 35







 

   

5.2 クローラの種別毎の1日あたりの取得ページ数の割合







  

 



 





















5.3 クローラの処理の概要

更新回数,平均更新間隔などの情報を持っている(URL DBについては付録5.A.2に,URLの正規化に ついては付録5.Cに詳細を記す).クローラはこれらの情報を元に,クロールすべき対象を選択する.例 えば,更新クローラでは最終更新時刻と平均更新間隔の値から現時点でそのページが更新されている確率 を計算し,その確率に応じて収集対象を選択している(詳細は後述).

クローラは収集対象を選択した後,URLに含まれるホスト名から名前解決のためにDNSサーバに問 い合わせて,クロール対象ページを提供するHTTPサーバのIPアドレスを取得する(図5.3(2)).名前

解決処理の高速化のために,各クローラではadns ライブラリを利用して非同期に名前解決を実行し,さ らに複数のDNSキャッシュサーバを設置してDNS解決処理の負荷を分散させている.

名前解決によりIPアドレスが得られた後,IPアドレスで指定されるホストに接続をして,HTTPリ クエストを発行し,ページを取得する(図5.3(3)).ページ収集プロセスは同時に最大で数100から1000 の接続を管理しながら,複数のサーバに並列でアクセスをおこない,効率よくページを収集する.また,

さらに収集効率を高めるためにページ収集は複数のプロセスに分散され実行される.

ページ収集に際して,アクセス先のサイトが定めるポリシーを遵守し,またサイトに対して負荷をか けすぎないようにすることが求められる.一点目のサーバのポリシーについては,robots.txtというファ イルに記述する*2か,Webページ内にHTMLのMETAタグにより記述することが慣例となっている.

robots.txtやMETAタグではクローラによる収集を禁止するページを指定したり,リンクをたどること

を禁止したりすることが出来る.WISDOMのクローラではサイトのポリシーを遵守するために,ページ 収集プロセスが初めてアクセスするサイトについてはrobots.txtをまず取得した上でポリシーを確認し,

クローラによる収集が禁止されているページは取得しない.

ページ収集プロセスはサイトに対する負荷を制御するために,同一ホストあるいは同一IPアドレスで 指定されるサーバに対して,一定以上の間隔を空けてアクセスするよう制御されている.さらに二重の チェックをするために,クローラの通信は全てプロキシサーバを経由するようになっている.このプロキ シサーバではIPアドレス毎に接続頻度を監視し, 一定時間内に設定を上回る頻度でのアクセスが検出さ れた場合には,一時的にそのIPアドレスへの接続を遮断する.クローリングは相手のあることなので,

このように相手のポリシーを尊重したり,負荷をかけないように気をつけたりすることはクローラを継続 して運用する上では重要なことである.

ページ解析では,収集されたページに対して,フィルタリング,リンク抽出,チェックサム計算などの 処理を実行する(図 5.3(4)).フィルタリング処理(付録5.B)では,エンコーディングや使用されている 文字から言語を推定し,日本語以外のページをフィルタする言語フィルタ,アダルト語辞書に含まれる語 が一定頻度以上出現するページをフィルタするアダルトフィルタなどの各種フィルタを実行し,それらの 結果に応じてページを出力する.リンク抽出処理では,HTMLをパースし,Aタグで記述される他ペー ジへのURLおよびアンカーテキストを抽出しリンク情報として出力する.チェックサム計算では,取得 されたページの更新判定に用いられるMD5チェックサムを計算する.ページ解析もページ収集と同様,

高速化のために処理を並列化して実行する.ページ解析で出力されたページデータはクロールデータプー ルに登録される(クロールデータプールの詳細については6章「Webデータ管理」を参照のこと).

DB更新では,クロール対象の収集結果のURL DBへの反映と,収集されたページから抽出されたリ ンク情報のURL DBへの登録をおこなう.クロール対象の収集結果には,HTTPのステータス情報,ク ロール時刻,更新の有無,フィルタ適用の有無などのページ収集やページ解析の結果の内容をURL DB に反映する.収集ページから抽出されたリンク情報に対しては,URLベースのフィルタを適用した後,

URL DBに登録済みのURLかどうかを確認した上で,未登録であればURL DBに登録をする.

*1 http://www.chiark.greenend.org.uk/ian/adns/

*2 http://www.robotstxt.org/

5.2 WISDOMのクローラ 37

ドキュメント内 WISDOM Web (ページ 47-50)