2017年9月15日金曜日

ojizoのWebクローラーは3種に分類しています

Webは常に変わり続けるため、適切な間隔でクローリングを続ける必要があります。
これが難しい。
昔は更新頻度を見て、ページを再訪する間隔を調整できました。
今は動的生成が多いので、ページの主たるコンテンツが変わっていないか判断しないとなりません。
アルゴリズムで主コンテンツを見抜くのは大変です。

ここはojizoらしく、おおよそで調整することにしました。
いろいろなクロール設定を試してきましたが、およそ3種類に分けられることが分かりました。

・大半のページは3階層目まで
・更新頻度が高いページは特製の正規表現で1階層目まで
・良質なコンテンツを多数保有するサイトは深くまで

ojizoのDefault Crawlerは、主ページから3階層目までを巡回するようにしています。
現在は3日で500万ページを巡回するため、2週間以内に全件をクロールできる設計です。
Fessでは「状態」を「有効」にしておきます。

続いて、更新頻度が高いページ。
報道なんかが該当します。
これはサイトごとに正規表現を駆使して、頻度が高い有用なページだけを巡回します。
Fessでは「状態」を「無効」にして、Webクローラーを新しく作成して対応します。

最後に深いクローラー。
これも、コンテンツに関連するページだけを巡回するよう、サイトごとに正規表現を調整します。
これも「状態」を「無効」にして、Default Crawlerと分離して管理します。

サイトの全件をくまなくクロールさせるのは困難です。
ある程度、割り切りをうまくつけてゆきたいと思います。