なにかライブラリが無いかと思ってcrawler4jに行き着きました。
使用準備
http://code.google.com/p/crawler4j/ のサイドバーにある[Downloads]からcrawler4j-3.5.zipとcrawler4j-3.5-dependencies.zipをダウンロードする。
htmlのパースにはjsoupを使うので、ここからダウンロードしておく。
eclipseだと[ビルドパスの構成]>[ライブラリー]から[外部jar追加]で全てのjarファイルを追加する。
これで準備完了のはず?
そろそろmaven使おう
実装
大体の実装としてはBasic Crawlerで十分だと思う。
BaseCrawler.javaでOverride
してあるvisit
とshoudVisit
では、クロールするurlの絞り込みや、実際の処理を記述出来る。
BaseCrawlController.javaでは設定を行い、シードとなるurlを与えたり、クロールする深さやページ数、proxyやクロールの際のスリープ時間等を設定出来る。
jsoupを使ったhtmlパースはこの記事を参考にした。
上の記事でも触れられているが、jsoupでパースして得られるElementのAPI一覧は見たほうが良いと思う。
// 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セレクタを使えるのが手軽で良い。