Beautiful Soup的特点:
Beautiful Soup提供一些简单的方法和Python式函数,用于浏览,搜索和修改解析树,它是一个工具箱,通过解析文档为用户提供需要抓取的数据。
Beautiful Soup支持多种解析器,包括Python标准库中的HTML解析器,还支持一些第三方的解析器。
Beautiful Soup 自动将输入文档转换成Unicode类型,输出文档转换为UTF-8编码。如果文档中没有指定编码,只需我们指定编码即可。
目前Beautiful Soup的最新版本是4.x
,之前的版本已经停止开发了,所以这里推荐使用beautifulsoup4
。
安装beautifulsoup4方式:
pip3 install beautifulsoup4
命令执行完毕之后即可完成安装
3.1 解析器的安装方法
安装lxml
Beautiful Soup
的HTML和XML解析器是依赖于lxml
库的,所以在使用之前先安装lxml
库。(如果已经安装,请跳过此步)
pip3 install lxml
安装html5lib
另一个可供选择的解析器是纯Python实现的html5lib
,html5lib
的解析方式与浏览器相同,可以选择下列方法来安装html5lib
。
pip3 install html5lib
3.2 解析器的优缺点
下表列出了Beautiful Soup支持的主要的解析器以及它们的优缺点:
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
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格式的文档 | 速度慢、不依赖外部扩展 |
推荐使用lxml
作为解析器,因为效率更高。在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml
或html5lib
,因为那些版本Python版本的标准库中内置的HTML解析方法不够稳定。
9