我有一些随机的 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/