読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

s2robotを使ってみました

java seasar

そういえばtree-tipsのサイトマップxmlを作ってなかったので、作る事にしました。
まだページも少ないので手動で作ろうかとも思いましたが、
せっかくなのでlocalhostをクロールしてリンクを収集しようとしました。

Seasar2 - S2Robot 概要
同じくseasarプロダクののFess は、
内部でsolrとs2robotを組み合わせて使ってるそうです。Fess凄い。

以下、ざっくり使ったみた感想です。

  • diconファイルで設定できるし、javaでも設定できる、一体どっちで設定するのがいいか迷う。
  • デフォルトのXPathTransFormerは機能が足りなすぎて使えない。
  • 標準で並列処理できるのは素晴らしい。

本当は負荷かけても全く構わない自分のサイトのlocalhostに向けて、
1ページだけクロールし、そのページからアンカーリンクを取得してhrefの値を収集。
それをサイトマップxmlとして使用、という事を標準機能だけでやりたかったんですが、
XPathでaタグの「ラベル」は取得できますが、
属性であるhrefが取得できず。。。(単に取得方法を知らないだけかも)

あと、クロールするページのURL(localhost)のフィルタ(正規表現で可能)はできても、
クロールしたページ内のパース処理のフィルタ(headタグは無視とか)はできないようです。
処理的に激しく無駄なので省きたいです。

結局XPathTransFormerを参考に、HtmlTransformerを継承したSitemapTransformerを作りました。

なんか本来のクロールの使い道とは違う気がしますが、
初めてのクローラ作成と、サイトマップxmlの自動生成+ping送信までできました。