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 からデータを消してます。

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

「s2robot-exampleを追加」への2件のフィードバック

  1. はじめまして.S2Robot を拝見しています.クローラのフレームワーク(?)というのはおもしろそうですね.
    ソースをながめているのですが,S2Robot は RDBMS 以外のデータベースをサポートする予定はありますか?(DataService 以下が RDBMS を前提としているように見えるので)
    Heritrix は Berkeley DB がデフォルトだったりしますね.私も過去にクローラを作ったことがあるのですが,そのときはデータベースに Tokyo Tyrant(Cabinet) を使いました.
    このようなアプリケーションですと複雑なスキーマが必要でない場合もあると思いますので,key-value のようなシンプルなデータベースも良いかと思うのですが,いかがでしょう.

  2. 興味を持っていただきありがとうございます。
    今のところ、RDBMS 以外とかは考えていませんが、現状ではDBFluteに依存しているので、S2Robotから使うエンティティはインターフェースにしておいてもよさそうですね。試しに使うレベルならオンメモリで動かすのでも良い気もしますし。
    簡単に使い始めることができるのを目指していますが、それと共に、実際に使い物になるものも目指していたりもします。私の目指す用途的には、AccessResultなどのエンティティ情報がないと厳しい感じで、key-valueでは返って煩雑になる気がしてます(^^;現時点で、私がそう思っているだけなので、何か良い案がありましたら、大歓迎です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です