LoginSignup
56
57

More than 5 years have passed since last update.

Javaでクローラを実装する

Posted at

なにかライブラリが無いかと思ってcrawler4jに行き着きました。

使用準備

http://code.google.com/p/crawler4j/ のサイドバーにある[Downloads]からcrawler4j-3.5.zipとcrawler4j-3.5-dependencies.zipをダウンロードする。
htmlのパースにはjsoupを使うので、ここからダウンロードしておく。

eclipseだと[ビルドパスの構成]>[ライブラリー]から[外部jar追加]で全てのjarファイルを追加する。
スクリーンショット 2014-04-10 19.11.53.png

これで準備完了のはず?
そろそろmaven使おう

実装

大体の実装としてはBasic Crawlerで十分だと思う。

BaseCrawler.javaOverrideしてあるvisitshoudVisitでは、クロールするurlの絞り込みや、実際の処理を記述出来る。

BaseCrawlController.javaでは設定を行い、シードとなるurlを与えたり、クロールする深さやページ数、proxyやクロールの際のスリープ時間等を設定出来る。

jsoupを使ったhtmlパースはこの記事を参考にした。
上の記事でも触れられているが、jsoupでパースして得られるElementのAPI一覧は見たほうが良いと思う。

htmlのパース始め
// BaseCrawler.javaの73行目
String html = htmlParseData.getHtml();
Document doc = jsoup.parse(html);

// ID
Element elm = doc.getElementById("hoge");

// CSSセレクタ
Elements elements = document.select("#hoge ul .error");
for (Element element : elements) {
    System.out.println(element.outerHtml());
}

ややJavaScriptっぽい。
CSSセレクタを使えるのが手軽で良い。

56
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
57