如何在Python中解析格式错误的HTML
我需要查看一个解析过的HTML文档的DOM树。
我在用uTidyLib来处理字符串,然后再用lxml来解析。
a = tidy.parseString(html_code, options)
dom = etree.fromstring(str(a))
有时候我会遇到错误,似乎tidylib无法修复格式不正确的HTML。
我该如何解析每个HTML文件,而不出现错误(只解析那些无法修复的文件的某些部分)呢?
2 个回答
13
既然你已经在用lxml了,试过lxml的ElementSoup模块吗?
如果ElementSoup无法修复你的HTML,那你可能需要先根据自己观察到的数据问题,先做一些过滤处理。
27
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>