BeautifulSoup:'lxml'、'html.parser'和'html5lib'解析器有什么区别?

33
当使用Beautiful Soup时,“lxml”、“html.parser”和“html5lib”之间有什么区别?你什么时候会使用其中一个,并且每个的优点是什么?当我使用它们时,它们似乎可以互换使用,但这里的人们纠正我应该使用不同的。我想加强我的理解;我在这里读了几篇文章,但它们没有很好地讲述使用方法。例子:
soup = BeautifulSoup(response.text, 'lxml')
2个回答

47

根据文档的优缺点总结表:

  1. html.parser - BeautifulSoup(markup, "html.parser")

    • 优点:自带工具,速度快,宽容(在 Python 2.7.3 和 3.2 版本之后)

    • 缺点:不太宽容(在 Python 2.7.3 或 3.2.2 之前)

  2. lxml - BeautifulSoup(markup, "lxml")

    • 优点:速度非常快,宽容

    • 缺点:需要外部 C 依赖

  3. html5lib - BeautifulSoup(markup, "html5lib")

    • 优点:非常宽容,解析页面类似于 web 浏览器,生成有效的 HTML5

    • 缺点:非常缓慢,需要外部 Python 依赖


17

这些差异在BeautifulSoup文档中得到了突出:

为什么你会更喜欢某个解析器而不是其他的基本原因:

  • html.parser- 内置 - 不需要额外的依赖
  • html5lib - 最宽容 - 如果HTML代码有问题,建议使用它
  • lxml - 最快速

3
谢谢 - html5lib(作为破碎HTML的解析器)刚刚拯救了我。 - kd88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接