Friends - S2Robot

DBFluteとは直接無関係ながらも、親和性の高いフレームワークを紹介します。

S2Robotとは?

Web およびファイルシステムをクロール可能なクローラフレームワークです。 S2Robot内の一部機能で DBFlute が利用されています。(DIコンテナは Seasar が利用されています)

S2Robotの概念図

図 : S2Robotの概念図 S2Robotの概念図

クロール結果の保存方法

クロール結果をメモリに保存するか、データベースに保存するかを選択することができます。

メモリに保存
設定が少なく、簡単にS2Robotを利用することができる
保存料はメモリ量に依存し、アプリが終了すれば保存結果は消える
データベースに保存
大量の情報を保存することができる
H2 や MySQL など DBMS を切り替えることができる (デフォルトは H2 Database)

ここでの紹介の前提

ここではクロール結果はデータベースに保存することを前提とし、メモリに保存する方式は割愛します。 また、Maven を使った環境であることを前提とします。

S2Robotの環境構築

詳しくは本家サイトにて。フォロー的な内容だけここでは書いておきます。

S2RobotのDicon構造

図 : S2RobotのDicon構造 S2RobotのDicon構造

pom.xml の設定

s2-robot-db と s2-robot-db-[利用するDB (h2 or mysql)] を dependency に定義します。repository として、Seasar の Maven2 Repository の指定が必要です。

e.g. pom.xml に S2Robot のライブラリを定義する (H2 Database 利用) @pom.xml
...
<repositories>
    <repository>
        <id>maven.seasar.org</id>
        <name>The Seasar Foundation Maven2 Repository</name>
        <url>http://maven.seasar.org/maven2</url>
    </repository>
</repositories>
...
<dependencies>
    ...
    <dependency>
        <groupId>org.seasar.robot</groupId>
        <artifactId>s2-robot-db</artifactId>
        <version>0.4.2</version>
    </dependency>
    <dependency>
        <groupId>org.seasar.robot</groupId>
        <artifactId>s2-robot-db-h2</artifactId>
        <version>0.4.2</version>
    </dependency>
    ...
</dependencies>

dicon ファイルの設定

app.dicon にて、s2robot_db.dicon を include します。

  • app.dicon にて、s2robot_db.dicon を include する
  • s2robot_jdbc.dicon を作成して、Crawl結果を保存するDBへの接続設定 (jdbc.dicon のように)
  • URLFilter や Rule など拡張したい機能の dicon をコピー作成して独自修正 (*1)

*1: S2Robot のライブラリに組み込まれた dicon の拡張は、プロジェクトの src/main/resources にコピー作成するか、S2ClassBuilder の機能を利用してピンポイントで差し替えるかで実現可能。

S2Robotの使い方

詳しくは本家サイトにて。フォロー的な内容だけここでは書いておきます。

処理ルールの設定

TODO jflute now writing

クロール結果変換方法

アクセス間隔の設定

バックグラウンドで実行

URL フィルタの設定

文字列抽出