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”解析器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Python 爬虫 BeautifulSoup4 库的使用

BeautifulSoup解析网页

beautifulsoup的一些使用

“BeautifulSoup”和“lxml”有啥关系?

lxml / BeautifulSoup 解析器警告

python模块--BeautifulSoup4 和 lxml