日本語が化けて大変苦労したのでメモ。
結論として、XML(またはHTML)を解析する前にunicode関数に通しておく、
ということで良いのかな?
相変わらず文字コード関連はよく分からない。
from urllib import urlopen from lxml import etree html = urlopen("http://b.hatena.ne.jp") charset = html.headers.getparam('charset') html_data = unicode(html.read(),charset) et = etree.fromstring(html_data, parser=etree.HTMLParser()) title_element = et.xpath("./head/title")[0] title = title_element.text.encode("utf-8") print title # UTF-8に変換されたタイトルが出力される
どうやら上記の使い方はencoding宣言付きのXMLではうまくいかないみたい。
その場合は、unicode変換をしなければうまくいった。
うむむ。