[英]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.