読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

文系新卒プログラマーのメモ

Rubyでスクレイピングしたらencoding error : input conversion failed due to input error

文字コード スクレイピング Ruby

トラブルシューティング。

Nokogiriを使ってHTMLを取得した際、文字化けしてしまうエラーについて。

 

encoding error : input conversion failed due to input error

が出た場合の対処法。

 

以下のページを参考にして解決。

http://route477.net/d/?date=20110119

 

このように、Nokogiriに渡す前に、処理を噛ませたら解決。

gist8762b62c2d830642aa23

 

まず、openの第二引数にエンコーディング名を指定。そのあと、encode('エンコーディング名')として変換。

 

けれど、調べると以下のような解法がヒットした。

qiita.com

 

このようにNokogiriの第三引数として、エンコーディング後のcharsetを指定しなさいとのこと。

document = Nokogiri::HTML(page, uri, charset)

 

自分の場合、全く解決にならなかった。

Nokogiriにおかしなエンコーディングを渡した時点でエラーになるのかもしれない。

 

ちなみに、anemoneは(たしか)内部的にnokogoriを使用しているので、同様のエラーが出る。

というか自分の場合そうだった。