htmlをプレーンテキストにしたいなぁとググっていると
html2text.py HTMLをプレーンテキストに: つちのこ、のこのこ。
こちらのhtml2text.pyが小さめで便利そうです。
しかしハマる点があります。
ハマった点
対象のhtmlによってはUnicodeDecodeErrorがでます。
UnicodeEncodeError: 'utf8' codec can't encode characters in position...
読み込んだhtmlをUnicode型に直して処理しているんですが、デコードする文字コードをutf-8に固定してるので、htmlがそれ以外の文字コード(euc-jpとか)のときにエラーがでます。
解法
取得したhtmlの文字コードを調べないといけません。
こちらを参考にすれば取得出来ました
2008/05/20 文字コード判定して一括でuft-8に変換するPythonスクリプト - 清水川Web
あとは動的に文字コードを指定してやればいいです。
変更点としては
if __name__=='__main__': ... title, text = convert(unicode(u.read(), 'utf-8'), indent=' '*3)
を
# 文字コードを判定する def guess_charset(data): ... if __name__=='__main__': ... t = u.read() c = guess_charset(t) title, text = convert(unicode(t, c), indent=' '*3)
こんなかんじです。
Unicode型とか、どっちがエンコードでどっちがデコードか分からんってときは
http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
ここを参考に。
最後に
htmlの頭にエンコードの種類が書いてあると思うので、そこから取った方が良いかと思います。
ですがhtmlをプレーンテキストに直す必要が無くなったので、その方法は試してないです。