Home > Archives > 2011年08月01日

2011年08月01日

文字コードとの戦い,というか,行儀の悪い html との戦い

Python で web のクローラを書いてるのだけど,文字コード周りで行儀の悪いページとの戦いが…… こちらの武器は chardet と encutils とで. 

行儀のよいファイルだけなら encutils で判定して終了なのだけど,世の中 ISO-2022-JP と宣言して EUC-JP を使うようなページも平気であるので困る.ここらは実際に unicode へ変換してみてエラーが出たら chardet の解析結果を使うとかで対処.

んで,一見行儀の良さそうな sjis ファイルなのだけど実は丸の中に数字の入った文字を含む cp932 だったりとかもある.大量に.行儀悪い.更に悪いことに,chardet が自信満々 (confidence = 1) で cp932 を sjis 判定してくれるので困る.面倒なので sjis は全部 cp932 として扱うと幸せかも知れない.

あとは x-euc-jp とか x-sjis とかも python は認識してくれないので手動で置き換えを……

とりあえず chardet と encutils の併用と sjis を cp932 に置き換えるのとでだいぶ安定してきた.

というか,ページ内でコードが違うとか何考えてるんだろう?

Home > Archives > 2011年08月01日

Search
Feeds

Page Top