我使用lxml来解析一些带有俄文字母的HTML。这就是我为什么头疼编码的原因。 我使用以下代码将html文本转换为树。然后我尝试使用css查询从页面中提取一些内容(标题,arcticle内容)。
from lxml import html
from bs4 import UnicodeDammit
doc = UnicodeDammit(html_text, is_html=True)
parser = html.HTMLParser(encoding=doc.original_encoding)
tree = html.fromstring(html_text, parser=parser)
...
def extract_title(tree):
metas = tree.cssselect("meta[property^=og]")
for meta in metas:
# print(meta.attrib)
# print(sys.stdout.encoding)
# print("123") # Uncomment this to fix error
content = meta.attrib['content']
print(content.encode('utf-8')) # This fails with "[Decode error - output not utf-8]"
我得到"解码错误"当我试图将unicode符号打印到stdout时。但如果我在打印失败之前添加一些打印语句,那么一切正常。我从未见过python打印功能的这种奇怪行为。我认为它没有副作用。 你知道为什么会这样吗? 我使用Windows和Sublime来运行此代码。