gpt4 book ai didi

python - 如何使用标准库在 python 中解析格式错误的 HTML

转载 作者:IT老高 更新时间:2023-10-28 21:47:30 26 4
gpt4 key购买 nike

有这么多html and xml libraries built into python ,很难相信不支持真实世界的 HTML 解析。

我为这项任务找到了很多很棒的第三方库,但这个问题是关于 python 标准库的。

要求:

  • 仅使用 Python 标准库组件(任何 2.x 版本)
  • DOM 支持
  • 处理 HTML 实体 ( )
  • 处理部分文档(如:Hello, <i>World</i>!)

奖励积分:

  • XPATH 支持
  • 处理未关闭/格式错误的标签。 ( <big>does anyone here know <html ???

根据要求,这是我 90% 的解决方案。这适用于我尝试过的有限的 HTML 集,但每个人都可以清楚地看到,这并不完全可靠。由于我是通过盯着文档 15 分钟和一行代码来做到这一点的,所以我认为我可以咨询 stackoverflow 社区以寻求类似但更好的解决方案...

from xml.etree.ElementTree import fromstring
DOM = fromstring("<html>%s</html>" % html.replace('&nbsp;', '&#160;'))

最佳答案

可靠地解析 HTML 是一个相对现代的发展(虽然这看起来很奇怪)。结果,标准库中肯定没有任何内容。 HTMLParser 看起来可能是处理 HTML 的一种方式,但事实并非如此——它在许多非常常见的 HTML 上都失败了,虽然你可以解决这些失败,但总会有另一种你没有想到的情况(如果你真的成功处理了每一个失败,你基本上就重新创建了 BeautifulSoup)。

实际上只有 3 种合理的方式来解析 HTML(在网上可以找到):lxml.html , BeautifulSoup , 和 html5lib . lxml 是迄今为止最快的,但安装起来可能有点棘手(在 App Engine 这样的环境中是不可能的)。 html5lib 基于 HTML 5 如何指定解析;尽管在实践中与其他两个相似,但它在解析损坏的 HTML 的方式上可能更“正确”(它们都以相同的方式解析非常好的 HTML)。他们在解析损坏的 HTML 方面都做得很好。 BeautifulSoup 可以很方便,尽管我发现它的 API 不必要地古怪。

关于python - 如何使用标准库在 python 中解析格式错误的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2676872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com