15

我需要浏览已解析 HTML 文档的 DOM 树。

在使用 lxml 解析字符串之前,我正在使用 uTidyLib

a = tidy.parseString(html_code, options) dom = etree.fromstring(str(a))

有时我得到一个错误,似乎 tidylib 无法修复格式错误的 html。

如何在不出错的情况下解析每个 HTML 文件(仅解析无法修复的文件的某些部分)?

4

2 回答 2

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>
于 2009-05-24T21:06:13.437 回答
13

既然你已经在使用 lxml,你有没有尝试过lxml 的 ElementSoup模块?

如果 ElementSoup 无法修复 HTML,那么您可能需要首先应用您自己的过滤器,这些过滤器基于您自己对数据损坏方式的观察。

于 2009-05-24T22:52:08.717 回答