当使用Beautiful Soup时,“lxml”、“html.parser”和“html5lib”之间有什么区别?你什么时候会使用其中一个,并且每个的优点是什么?当我使用它们时,它们似乎可以互换使用,但这里的人们纠正我应该使用不同的。我想加强我的理解;我在这里读了几篇文章,但它们没有很好地讲述使用方法。例子:
soup = BeautifulSoup(response.text, 'lxml')
soup = BeautifulSoup(response.text, 'lxml')
根据文档的优缺点总结表:
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")
优点:非常宽容,解析页面类似于 web 浏览器,生成有效的 HTML5
缺点:非常缓慢,需要外部 Python 依赖
这些差异在BeautifulSoup文档中得到了突出:
为什么你会更喜欢某个解析器而不是其他的基本原因:
html.parser
- 内置 - 不需要额外的依赖html5lib
- 最宽容 - 如果HTML代码有问题,建议使用它lxml
- 最快速
html5lib
(作为破碎HTML的解析器)刚刚拯救了我。 - kd88