如何在Python中解析格式错误的HTML

15 投票
2 回答
7757 浏览
提问于 2025-04-15 11:48

我需要查看一个解析过的HTML文档的DOM树。

我在用uTidyLib来处理字符串,然后再用lxml来解析。

a = tidy.parseString(html_code, options)

dom = etree.fromstring(str(a))

有时候我会遇到错误,似乎tidylib无法修复格式不正确的HTML。

我该如何解析每个HTML文件,而不出现错误(只解析那些无法修复的文件的某些部分)呢?

2 个回答

13

既然你已经在用lxml了,试过lxmlElementSoup模块吗?

如果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>

撰写回答