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 からデータを消してます。
という感じで、ドキュメントを書いていかないとな・・・。
はじめまして.S2Robot を拝見しています.クローラのフレームワーク(?)というのはおもしろそうですね.
ソースをながめているのですが,S2Robot は RDBMS 以外のデータベースをサポートする予定はありますか?(DataService 以下が RDBMS を前提としているように見えるので)
Heritrix は Berkeley DB がデフォルトだったりしますね.私も過去にクローラを作ったことがあるのですが,そのときはデータベースに Tokyo Tyrant(Cabinet) を使いました.
このようなアプリケーションですと複雑なスキーマが必要でない場合もあると思いますので,key-value のようなシンプルなデータベースも良いかと思うのですが,いかがでしょう.
興味を持っていただきありがとうございます。
今のところ、RDBMS 以外とかは考えていませんが、現状ではDBFluteに依存しているので、S2Robotから使うエンティティはインターフェースにしておいてもよさそうですね。試しに使うレベルならオンメモリで動かすのでも良い気もしますし。
簡単に使い始めることができるのを目指していますが、それと共に、実際に使い物になるものも目指していたりもします。私の目指す用途的には、AccessResultなどのエンティティ情報がないと厳しい感じで、key-valueでは返って煩雑になる気がしてます(^^;現時点で、私がそう思っているだけなので、何か良い案がありましたら、大歓迎です。