python:' lxml'之间的区别和" html.parser"和" html5lib"美味的汤?

时间:2017-08-03 21:06:03

标签: python beautifulsoup

当使用美丽的汤时,' lxml'之间的区别是什么?和" html.parser"和" html5lib"?你何时会使用一个而不是每个人的好处?从我使用它们的时间看起来它们似乎是可以互换的,但我确实得到纠正,我应该使用与这里的人不同的一个。想加强我对这些的理解。我在这里已经阅读了几篇有关此内容的文章,但它们并没有完全超出任何用途。

示例 -

soup = BeautifulSoup(response.text, 'lxml')

2 个答案:

答案 0 :(得分:13)

docs的优缺点总结表中可以看出:

  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")

    • 优点:非常宽松,Parses页面的方式与Web浏览器相同,创建有效的HTML5

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

答案 1 :(得分:6)

BeautifulSoup文档中突出显示了主要区别:

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

  • html.parser - 内置 - 无需额外的依赖
  • html5lib - 最宽松的 - 如果HTML被破坏,最好使用它
  • lxml - 最快的