[英]How do I parse HTML-like with errors?
我的數據看起來像是HTML文檔的一部分。 但是其中有一些錯誤,例如
<td class= foo"bar">
我嘗試過的所有解析器(lxml,xml.etree)都因錯誤而失敗。
由於我實際上並不關心文檔的這一特定部分,因此我正在尋找一個更強大的解析器。
例如,在某些我可以允許特定子樹中的錯誤被忽略的地方,或者可能只是不插入節點或僅會延遲解析我正在遍歷的樹的某些部分。
您正在使用XML解析器。 XML是一種嚴格的語言,而HTML標准則要求解析器能夠容忍錯誤。
使用兼容的HTML解析器(例如lxml.html
或html5lib
,或包裝器庫BeautifulSoup ( 將先前的任何一個與更清潔的API結合使用)。 html5lib
速度較慢,但緊密模仿了現代瀏覽器如何處理錯誤。
使用lxml:
創建一個HTML解析器,將recover
設置為True:
parser = etree.HTMLParser(recover=True)
tree = etree.parse(StringIO(broken_html), parser)
請參閱使用lxml解析XML和HTML教程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.