s2robot-exampleを追加

wget的なサンプルの方がいいような気もしたけど、簡単に使えることを目指しているので、シンプルなexampleプロジェクトを追加。URLと深さを引数に渡すとカレントディレクトリに保存する感じ。ご利用のプロジェクトで利用するための設定は、

  • S2Robot の DB をコピー
  • s2robot.dicon を include する
  • s2robot_jdbc.dicon を作成して、S2Robot の DB のパスを設定
  • Maven2 プロジェクトなら、s2-robot を pom に記述

という感じで、あとは

S2Robot s2Robot = (S2Robot) container.getComponent(S2Robot.class);
// add url
s2Robot.addUrl(url);
// depth
s2Robot.getRobotConfig().setMaxDepth(depth);
// run s2robot
String sessionId = s2Robot.execute();
// clean up
s2Robot.cleanup(sessionId);

というように使えます。S2Robotのインスタンスを得て、クロールするURLを追加して(デフォルトではひたすらクロールするので深さを指定)、そんで executeすれば実行されます。戻り値のsessionIdをキーとして情報が保存されているので、続きから再実行も可能です。exampleでは、別に再実行する必要がないので、cleanup して DB からデータを消してます。

という感じで、ドキュメントを書いていかないとな・・・。

ひとまずコミット

現状をひとまずコミットしておく。ドキュメントも書かなきゃなっと言うのもあるけど、デフォルトの動作として、簡単に使えるというところに力を入れたいところ。簡単に使えるというのは、pom.xml に s2robot を書いて、s2robot_jdbc.dicon と DB(H2) を置けば、使えるようなイメージ。まぁ、デフォルトの動きとしては、指定された場所にファイルで書き込みが良いのかな(FileTransformerみたいのを作ろう)。そんな感じで進めてます。

S2Robot

ここ数日取り組んでいたことなのだけど、方向性が見えたのでSeasarにプロジェクト追加申請をしてみました。S2RobotとはWeb巡回ロボット(クローラー、スパイダー)を構築するためのフレームワーク(ライブラリに近いかも)です。

今まで、ポータル案件で話を進めると、全文検索の話もよくされて、対応に悩んでいたので、そのうち、Solr ベースで何か作ろうと思って、1 年以上経過している気がする。近頃は、Solr まわりにも触れる機会があったり、そんでもって、Apache の Droid を調べてみたりと(これはまだ使える気がしないのだけど)、いろいろと模索しながら経験値を上げていた。そんで、この手のロボットって、たとえば、作ったサイトのリンク切れチェックとか、サイト内のデータ収集とか、画像など特定データファイルの収集とか、いろいろな用途がありえるのだよね。つまり、これらのことが簡単にできれば、結構、いろんな場面で使うことが可能かと(Webでやることって多いし)。というわけで、それらのことができるようなWebロボットのフレームワークを作ってみた(まだ、完成はしてないけど、GWが終わる頃にはできるかと)。

仕組み的には、dicon に S2Robot を書いて実行すれば指定したURLから辿っていく感じ。アクセスしたURLは指定した Transformer インタフェースのインスタンスで処理する。つまり、Transformer を実装したクラスを用意すれば、HTMLだろうが画像だろうがその URL のデータを自由に処理できる感じ。あとは、DB も URL の保存とかに使うから、DBFluteも使っておく。DBFlute の Maven プラグインも使っているけど、pom に情報を書いておけば Maven でダウンロードからソースの生成までできるので楽チンだ。そんな感じのものですので、よろしくお願いします~。