BeautifulSoup:“lxml”、“html.parser”和“html5lib”解析器有啥区别?
Posted
技术标签:
【中文标题】BeautifulSoup:“lxml”、“html.parser”和“html5lib”解析器有啥区别?【英文标题】:BeautifulSoup: what's the difference between 'lxml' and 'html.parser' and 'html5lib' parsers?BeautifulSoup:“lxml”、“html.parser”和“html5lib”解析器有什么区别? 【发布时间】:2018-01-11 15:59:43 【问题描述】:使用 Beautiful Soup 时,'lxml' 和 "html.parser" 和 "html5lib" 有什么区别?
您何时会使用其中一种以及每种方法的好处?当我使用它们时,它们似乎可以互换,但这里的人纠正我应该使用不同的。我想加强我的理解;我在这里阅读了几篇关于此的帖子,但他们根本没有过多地讨论用途。
例子:
soup = BeautifulSoup(response.text, 'lxml')
【问题讨论】:
【参考方案1】:BeautifulSoup 文档中突出显示了主要区别:
Differences between parsers您更喜欢一个解析器而不是其他解析器的基本原因:
html.parser
- 内置 - 不需要额外的依赖项
html5lib
- 最宽松的 - 如果 HTML 坏了最好使用它
lxml
- 最快的
【讨论】:
谢谢 -html5lib
(作为损坏 HTML 的解析器)刚刚保存了我的培根【参考方案2】:
来自docs的优缺点汇总表:
html.parser - BeautifulSoup(markup, "html.parser")
优点:包括电池、速度不错、Lenient(从 Python 2.7.3 和 3.2 开始。)
缺点:不是很宽松(在 Python 2.7.3 或 3.2.2 之前)
lxml - BeautifulSoup(markup, "lxml")
优点:非常快,宽大
缺点:外部 C 依赖
html5lib - BeautifulSoup(markup, "html5lib")
优点:非常宽松,解析页面的方式与网络浏览器相同,创建有效的 HTML5
缺点:非常慢,外部 Python 依赖
【讨论】:
以上是关于BeautifulSoup:“lxml”、“html.parser”和“html5lib”解析器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章