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

Posted

技术标签:

【中文标题】如何在python中解析格式错误的HTML【英文标题】:How to parse malformed HTML in python 【发布时间】:2010-10-28 15:01:32 【问题描述】:

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

我在用 lxml 解析字符串之前使用的是 uTidyLib

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

有时我会收到错误,似乎 tidylib 无法修复格式错误的 html。

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

【问题讨论】:

【参考方案1】:

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>

【讨论】:

【参考方案2】:

既然你已经在使用lxml,你有没有试过lxml'sElementSoup模块?

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

【讨论】:

链接被破坏;编辑它们。希望新位置包含您最初指向的相同内容。 如果您没有安装漂亮的汤,元素汤可能需要它。就做pip install beautifulsoup

以上是关于如何在python中解析格式错误的HTML的主要内容,如果未能解决你的问题,请参考以下文章

lxml 和 libxml2 哪个更适合在 Python 中解析格式错误的 html?

在Python中解析大量数据时,如何处理索引超出范围错误?

如何解析 ISO 8601 格式的日期?

如何在 Java 中解析格式错误的 XML?

解析格式错误的 XML

如何修复python中graphql查询中的“解析错误(VAR_SIGN)”