★以下の情報は副作用があります。今度は basic 認証でエラーになってしまう。現在、調べ中・・・。
www.jiji.com のスクレイピングでたまに文字化けするので調べたが分からなかった。
- HTTP のヘッダ情報や、ページの charset を確認したが、Latin-1 の誤判定とかではない?
- ○数字など、JIS 範囲外のコードによる Nokogiri (iconv) の変換中断ではない?
対処法
html_parser を Hpricot にして、Kconv (NKF) で UTF-8 に変換したところ安定動作している。
Mechanize.html_parser = Hpricot
agent = Mechanize.new
agent.post_connect_hooks << lambda {|params| params[:response_body] = Kconv.kconv(params[:response_body], Kconv::UTF8)}
メモ
class Mechanize
class Page < Mechanize::File
def initialize(uri=nil, response=nil, body=nil, code=nil, mech=nil)
def parser
if mech.html_parser == Nokogiri::HTML
@parser = mech.html_parser.parse(html_body, nil, @encoding)
else
@parser = mech.html_parser.parse(html_body)
end