之前的文章我们介绍了 re 模块和 lxml 模块来做爬虫,本章我们再来看一个 bs4 模块来做爬虫。
和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。
lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。
BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。
Beautiful Soup 3 目前已经停止开发,推荐现在的项目使用Beautiful Soup 4。使用 pip 安装即可:pip install beautifulsoup4
官方文档:
抓取工具 速度 使用难度 安装难度正则 最快 困难 无(内置)
BeautifulSoup 慢 最简单 简单
lxml 快 简单 一般
首先必须要导入 bs4 库
1 from bs4 import BeautifulSoup 2 3 html = """ 4 <div> 5 <ul> 6 <li><a href="http://www.likecs.com/link1.html">first item</a></li> 7 <li><a href="http://www.likecs.com/link2.html">second item</a></li> 8 <li><a href="http://www.likecs.com/link3.html"><span>third item</span></a></li> 9 <li><a href="http://www.likecs.com/link4.html">fourth item</a></li> 10 <li><a href="http://www.likecs.com/link5.html">fifth item</a></li> 11 </ul> 12 </div> 13 """ 14 15 # 创建 Beautiful Soup 对象 16 soup = BeautifulSoup(html, "lxml") 17 18 # 打开本地 HTML 文件的方式来创建对象 19 # soup = BeautifulSoup(open('index.html'), "lxml") 20 21 # 格式化输出 soup 对象的内容 22 print(soup.prettify())