簡體   English   中英

如何解析類似HTML的錯誤?

[英]How do I parse HTML-like with errors?

我的數據看起來像是HTML文檔的一部分。 但是其中有一些錯誤,例如

<td class= foo"bar">

我嘗試過的所有解析器(lxml,xml.etree)都因錯誤而失敗。

由於我實際上並不關心文檔的這一特定部分,因此我正在尋找一個更強大的解析器。

例如,在某些我可以允許特定子樹中的錯誤被忽略的地方,或者可能只是不插入節點或僅會延遲解析我正在遍歷的樹的某些部分。

您正在使用XML解析器。 XML是一種嚴格的語言,而HTML標准則要求解析器能夠容忍錯誤。

使用兼容的HTML解析器(例如lxml.htmlhtml5lib ,或包裝器庫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.

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