Beautiful Soup常见的解析器及官网误导说明
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") |
|
|
lxml HTML 解析器 | BeautifulSoup(markup,
"lxml") |
|
|
lxml XML 解析器 |
|
|
|
html5lib | BeautifulSoup(markup,
"html5lib") |
|
|