Pythonのお勉強 Part50
■ このスレッドは過去ログ倉庫に格納されています
0532デフォルトの名無しさん
2015/03/10(火) 19:05:33.59ID:XNSpCIllpythonはうまく行かなかったらエラーを吐いて止まるところが良いのに
parseは失敗しても読み込めた場所までのetreeを返しているように見える。これは嫌な仕様だ
何か値が返ってくるので一見成功しているように見えるから、なぜ中身が中途半端なのか分からない
パース前のデータを見ようとurlopen(url).read().decode('shift_jis')とすると、そこでエラーを吐いてやっと何が問題なのか分かる
htmlファイルをそのまま見比べ続けたりdiff取ったりしても無理だっただろう
decodeなら、errorsオプションを指定することでデコードできない文字に対してエラーを吐くか読み飛ばすかを選択できるけど
parseにはそういったオプションはなく、何をやってるのか分からない。失敗したくせになぜ停止しないんだ
というか結局どの文字コードでもエラーになるスレがあるけど
重要じゃない文字っぽいのでスルーすることにした
doc = fromstring(urlopen(url).read().decode('cp932', errors='ignore'))
文字コードは闇。おわり。正解があるならplz
しかしこの問題は少しでも経験がある人なら一瞬で気付けたと思うので
数日後に上級者ぶって的はずれな説教を始めるこのスレはやはり使い物にならないと言わざるを得ない
■ このスレッドは過去ログ倉庫に格納されています