我正在使用html并使用lxml来解析它。出于测试目的,我将一个html文档保存为python文件中的字符串,顶部有encoding = utf-8。
每当我尝试使用lxml解析html时,如果html没有<meta charset="utf-8">
标记,我会得到奇怪的html编码。
这是代码:
t = lxml.html.fromstring(page_html)
print lxml.html.tostring(t)
如果page_html
字符串包含上面的元字符集,tostring()
方法会返回编码良好的html(即’
变成’
)。如果没有,结果会出现乱码(即’
变为’
)
这种编码发生在fromstring
方法而不是tostring
方法中,所以我不能在树创建之后在树中插入新元元素,因为那时它是晚。
我能想到的唯一解决方案是尝试修改原始的html字符串,并在创建树之前添加元标记。这看起来有点笨拙。是不是有更好的方法来使用lxml?
答案 0 :(得分:0)
结果我只需要将自定义解析器传递给fromstring
方法。所以这解决了它:
parser = html.HTMLParser(encoding="utf-8")
t = lxml.html.fromstring(page_html, parser=parser)
print lxml.html.tostring(t)