Jerichoからjsoupに乗り換える - ReDo

2012年10月12日

Jerichoからjsoupに乗り換える

はるか昔にJerichoさん使ったことがありまして、現役だったのでJerichoさんそのまま使っていたのですが、いくつか利点があったのでjsoupに乗り換えました。

○jsoupさん

公式
http://jsoup.org/

○メリット

1. Licenseがちょっと嬉しい

Jericho:Eclipse Public License (EPL) and GNU Lesser General Public License (LGPL)

jsoup:MIT license

Androidみたいに中身埋め込んじゃう形式だとMITさんの方が嬉しいですよね


2. cookie設定して何かとってくる(認証とか)際のコードがちょっと嬉しい

Jericho:Source(URL url)の代わりにSource(InputStream inputStream)を使え


HttpGet method = new HttpGet(url);
method.setHeader("Cookie", name + "=" + value);
InputStream is = new DefaultHttpClient().execute(method).getEntity().getContent();
Source doc = new Source(is);

jsoup:Connection#cookie(String name, String value)を使え


Document doc = Jsoup.connect(url).cookie(name, value).post();

おお、短い。嬉しい。


○注意点(そんなもんだよね)

・ネットワーク切断等のエラーハンドリングに一貫性がなくなってしまう。
 ・「なんかあった」→「ごめんね」ぐらいだったら困らない。
 ・内部ではHttpURLConnectionを使っているらしい。
 ・jsoupさんでもJsoup.parse(InputStream)ができるのでそっちで統一してもいいかもしれない。

・HTMLじゃないものもスクレイピング・ダウンロード対象だと結局DefaultHttpClientの出番になる。
 ・認証付き画像のダウンロードとかしてるとあまり変わらない。

コメントする