普段はPHPのPHP Simple HTML DOM Parserを利用しているが、
ログインの必要な画面遷移と組み合わせるのでJavaでスクレーピングを久々に実装してみた。
今回はJSoupというJavaのライブラリを利用した。CSSセレクターが使えるのでSimple HTML DOM Parserと同じような記述ができる。
下記のサンプルコードはSJISのファイルをパースするもの。目的の要素までCSSセレクターで取得した後は、elementsをループで回す。
import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JSoupSample {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File input = new File("c:/html.txt");
Document doc = Jsoup.parse(input, "Windows-31J", "http://example.com/");
Elements dateElements = doc.select("div.locator table tbody tr");
for (Element element : dateElements) {
System.out.println(element.outerHtml());
}
}
}