簡體   English   中英

如何告訴lxml使用哪個字符集?

[英]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(即'變成&#8217; )。 如果沒有它,結果將出現亂碼(即'變成&#226;&#128;&#153;

這種編碼是在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM