【发布时间】:2010-10-28 15:01:32
【问题描述】:
我需要浏览已解析 HTML 文档的 DOM 树。
我在用 lxml 解析字符串之前使用的是 uTidyLib
a = tidy.parseString(html_code, 选项) dom = etree.fromstring(str(a))
有时我会收到错误,似乎 tidylib 无法修复格式错误的 html。
如何在不出错的情况下解析每个 HTML 文件(仅解析无法修复的部分文件)?
【问题讨论】:
我需要浏览已解析 HTML 文档的 DOM 树。
我在用 lxml 解析字符串之前使用的是 uTidyLib
a = tidy.parseString(html_code, 选项) dom = etree.fromstring(str(a))
有时我会收到错误,似乎 tidylib 无法修复格式错误的 html。
如何在不出错的情况下解析每个 HTML 文件(仅解析无法修复的部分文件)?
【问题讨论】:
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>
【讨论】:
既然你已经在使用lxml,你有没有试过lxml'sElementSoup模块?
如果 ElementSoup 无法修复 HTML,那么您可能需要先应用自己的过滤器,这些过滤器基于您自己对数据损坏方式的观察。
【讨论】:
pip install beautifulsoup