当使用美丽的汤时,' lxml'之间的区别是什么?和" html.parser"和" html5lib"?你何时会使用一个而不是每个人的好处?从我使用它们的时间看起来它们似乎是可以互换的,但我确实得到纠正,我应该使用与这里的人不同的一个。想加强我对这些的理解。我在这里已经阅读了几篇有关此内容的文章,但它们并没有完全超出任何用途。
示例 -
soup = BeautifulSoup(response.text, 'lxml')
答案 0 :(得分:13)
从docs的优缺点总结表中可以看出:
html.parser - BeautifulSoup(markup, "html.parser")
优点:包括电池,体面速度,宽松(截至Python 2.7.3和3.2。)
缺点:不是很宽松(在Python 2.7.3或3.2.2之前)
lxml - BeautifulSoup(markup, "lxml")
优点:非常快,很宽松
缺点:外部C依赖
html5lib - BeautifulSoup(markup, "html5lib")
优点:非常宽松,Parses页面的方式与Web浏览器相同,创建有效的HTML5
缺点:非常慢,外部Python依赖
答案 1 :(得分:6)
BeautifulSoup文档中突出显示了主要区别:
基本原因为什么你更喜欢一个解析器而不是其他解析器:
html.parser
- 内置 - 无需额外的依赖 html5lib
- 最宽松的 - 如果HTML被破坏,最好使用它lxml
- 最快的