我需要浏览解析后的HTML文档的DOM树。
在使用lxml
解析字符串之前,我正在使用uTidyLiba = tidy.parseString(html_code,options) dom = etree.fromstring(str(a))
有时我会收到错误,似乎tidylib无法修复格式错误的HTML。
如何在不出错的情况下解析每个HTML文件(仅解析一些无法修复的文件部分)?
答案 0 :(得分:25)
Beautiful Soup可以很好地处理无效/损坏的HTML
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<htm@)($*><body><table <tr><td>hi</tr></td></body><html")
>>> print soup.prettify()
<htm>
<body>
<table>
<tr>
<td>
hi
</td>
</tr>
</table>
</body>
</htm>
答案 1 :(得分:13)
由于您已经在使用lxml,您是否尝试过lxml's ElementSoup模块?
如果ElementSoup无法修复HTML,那么您可能需要首先应用自己的过滤器,这些过滤器基于您自己对数据如何被破坏的观察。