繁体   English   中英

BeautifulSoup:'lxml' 和 'html.parser' 和 'html5lib' 解析器有什么区别?

[英]BeautifulSoup: what's the difference between 'lxml' and 'html.parser' and 'html5lib' parsers?

使用 Beautiful Soup 时,“lxml”和“html.parser”和“html5lib”有什么区别?

你什么时候会使用一个而不是另一个以及每个的好处? 当我使用它们时,它们似乎可以互换,但这里的人纠正我,我应该使用不同的。 我想加强我的理解; 我已经在这里阅读了几篇关于此的帖子,但他们根本没有过多地讨论用途。

示例:

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

文档的优点和缺点汇总表:

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

    • 优点:极其宽松,以与 Web 浏览器相同的方式解析页面,创建有效的 HTML5

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

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

为什么您更喜欢一个解析器而不是其他解析器的基本推理:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM