python - Python 中最宽容的 HTML 解析器是什么?

标签 python html-parsing beautifulsoup lxml pyquery

我有一些随机的 HTML,我使用 BeautifulSoup 来解析它,但在大多数情况下 (>70%) 它会阻塞。我尝试使用 Beautiful soup 3.0.8 和 3.2.0(3.1.0 以上有一些问题),但结果几乎相同。

我可以从脑海中回想起 Python 中可用的几个 HTML 解析器选项:

  • 美丽汤
  • lxml
  • 查询

我打算测试所有这些,但我想知道您的测试中哪一个最宽容,甚至可以尝试解析错误的 HTML。

最佳答案

他们都是。我还没有遇到过 lxml.html 无法解析的任何 html 页面。如果 lxml 在您尝试解析的页面上出现 barfs,您始终可以使用一些正则表达式对它们进行预处理,以使 lxml 满意。

lxml 本身相当严格,但 lxml.html 是一个不同的解析器,可以处理非常破损的 html。对于极其糟糕的 html,lxml 还附带了与 BeautifulSoup 库交互的 lxml.html.soupparser

此处描述了一些使用 lxml.html 解析损坏的 html 的方法:http://lxml.de/elementsoup.html

关于python - Python 中最宽容的 HTML 解析器是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870446/

相关文章:

python - 如何在 python 中抓取网页上的嵌入式脚本

python - 仅解析 div 类 python 中的文本

python - 我应该如何在 python 中解析这个 xml 字符串?

python - 在 Django 中,如何为每个线程创建一个数据库连接

python - 在 spacy v3 中训练 NER 需要在命令行中使用 dev.spacy

html - 在 Ruby 中寻找 CSS 解析器

python - 尝试访问现有 <a> 元素的 .text 属性时出现 NoneType 错误

loops - 如何使用 BeautifulSoup 成对提取表数据?

python - Beautiful Soup 无法在 html 中找到所有图像标签(恰好在 5 处停止)

python - 请求 : post multipart/form-data