2011年11月2日水曜日

Jericho HTML で Content-Encoding が gzip なサイトのパース

Jericho HTML でパースできないサイトがあるようで、調べてみると、Content-Encoding が gzip になっていた。
元ソース。
Source source = new Source(new URL("http://www.example.com"));

Accept-Encoding からはずせばいいのかもしれないが、HttpClient も使用しているため、そちらで対応することに。
HttpClient http = new DefaultHttpClient();
HttpResponse res = http.execute(new HttpGet(URI.create("http://www.example.com")));
if (res.getStatusLine().getStatusCode() != HttpStatus.SC_OK)
{
  LOG.error("Failed to load uri.");
  return false;
}    

InputStream in = res.getEntity().getContent();
if (res.getHeaders("Content-Encoding").length > 0 &&
  "gzip".equals(res.getHeaders("Content-Encoding")[0].getValue()))
  in = new GZIPInputStream(in);
Source source = new Source(in);
Jericho HTML だけで対処出来る方法があればいいのだが。
compress, deflate は未対応・・・

文字化けしたので、続き

0 件のコメント:

コメントを投稿