- 2011-08-01 (Mon) 12:08
- プログラミング
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 に置き換えるのとでだいぶ安定してきた.
というか,ページ内でコードが違うとか何考えてるんだろう?
- Newer: AWK - はじめ