[英]How do I tell lxml which charset to use?
我正在使用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
方法中進行的,因此,我不能在創建樹后立即將新的meta元素插入樹中,因為到那時為止。
我能想到的唯一解決方案是嘗試在創建樹之前修改原始html字符串並在其中添加meta標記。 不過,這似乎有點笨拙。 沒有使用lxml的更好方法嗎?
原來,我只需要將自定義解析器傳遞給fromstring
方法。 因此,可以解決此問題:
parser = html.HTMLParser(encoding="utf-8")
t = lxml.html.fromstring(page_html, parser=parser)
print lxml.html.tostring(t)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.