Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器。在我们使用BeautifulSoup的时候,选择怎样的解析器是至关重要的。使用不同的解析器有可能会出现不同的结果!强力推荐使用lxml作为解析器,因为效率更高,容错性更强。在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib,因为那些Python版本的标准库中内置的HTML解析方法不够稳定。

Beautiful Soup官方列出了主要的解析器,以及它们的优缺点,如下所示。

但是,需要注意一点,官方文档上有点误导人。例如:

lxml HTML解析器需要安装C语言库,lxml XML解析器需要安装C语言库

猛一看,给人感觉就是安装lxml很累赘,需要有前置条件,需要安装C语言库。实际上 pip install lxml 一步到位即可。这不叫安装C语言库。非要这么说的话,那么Python底层也是由C来实现的,是不是安装Python的时候,也要告诉大家,安装Python之前需要先安装C语言库呢?完全没有必要强调“需要安装C语言库”,因为用户只知道pip安装。搞出一个“需要安装C语言库”反而让用户不知道如何下手了。

解析器 使用方法 优势 劣势
Python标准库 BeautifulSoup(markup, "html.parser")
  • Python的内置标准库
  • 执行速度适中
  • 文档容错能力强
  • Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup, "lxml")
  • 速度快
  • 文档容错能力强
  • 需要安装C语言库
lxml XML 解析器

BeautifulSoup(markup, ["lxml-xml"])

BeautifulSoup(markup, "xml")

  • 速度快
  • 唯一支持XML的解析器
  • 需要安装C语言库
html5lib BeautifulSoup(markup, "html5lib")
  • 最好的容错性
  • 以浏览器的方式解析文档
  • 生成HTML5格式的文档
  • 速度慢
  • 不依赖外部扩展

标签: none

添加新评论