我有看起來像是HTML文檔的一部分的數據。然而,它有一些錯誤,如如何解析帶有錯誤的HTML?
<td class= foo"bar">
所有我試過的解析器(lxml,xml.etree)失敗並出現錯誤。
因爲我實際上並不關心文檔的這個特定部分,我正在尋找更強大的解析器。
某些地方我可以允許忽略特定子樹中的錯誤,也許只是不插入節點或者只會懶惰地解析我所遍歷的樹的部分。
我有看起來像是HTML文檔的一部分的數據。然而,它有一些錯誤,如如何解析帶有錯誤的HTML?
<td class= foo"bar">
所有我試過的解析器(lxml,xml.etree)失敗並出現錯誤。
因爲我實際上並不關心文檔的這個特定部分,我正在尋找更強大的解析器。
某些地方我可以允許忽略特定子樹中的錯誤,也許只是不插入節點或者只會懶惰地解析我所遍歷的樹的部分。
您正在使用XML解析器。 XML是一種嚴格的語言,而HTML標準要求解析器能夠容忍錯誤。
使用符合HTML的解析器,如lxml.html
或html5lib
或包裝庫BeautifulSoup(其中uses either of the previous帶有更清潔的API)。 html5lib
速度較慢,但與現代瀏覽器如何處理錯誤密切相關。
使用LXML:
創建與recover
集的HTML解析器爲True:
parser = etree.HTMLParser(recover=True)
tree = etree.parse(StringIO(broken_html), parser)
BeautifulSoup也很方便導航結果! – Sarien