結構どはまりした話題。
とある理由から html で書かれたデータを解析する必要が出てきました。
html を解析する場合、実は結構面倒で何か楽出来ないかな~と思って、いろいろ探していたらBeautifulSoupというとっても便利なライブラリを発見したのですよ。
で、これはラッキー!と思って早速使って組んでみたら、とてもうまく動いてくれてかなり満足していたのですが…とある euc-jp で書かれた html ページがなぜか解析失敗する。
どうも追いかけていくと、euc-jp ではなく、windows-1252 で判別されているっぽい。
ちょっと不思議に思ったので、urllib2 で直接データを取得して…と思ったのがすべての間違い。ここからめちゃくちゃはまってしまいました…まぁ、単純に以下のようにhtmlを取得した(つもり)だったのですが…
import urllib2 fp=urllib2.urlopen('http://どこかの.ページ') data=fp.read() fp.close()
なぜか取得したデータが化けている!しかも取得サイズが全然違う。もう、頭の中大混乱でした…
結局一日ぐらいたって、わかったのが…Content-Encoding: gzip なデータは urllib2 で受信した場合、自前で展開しなければならないということ。
無駄にえらい時間を使ってしまった…
ちなみに、当初の BeautifulSoup がエンコードを間違えるのは、euc-jp で変換出来ない文字が使われているから、でした。
この問題も結構面倒だよなぁ……
コメントを投稿する