《Python爬虫项目教程(微课版)》以Python语言为基础,介绍了爬虫的基础知识。
《Python爬虫项目教程(微课版)》包括6个实战项目,分别为爬取外汇网站数据、爬取名言网站数据、爬取电影网站数据、爬取图书网站数据、爬取商城网站数据、爬取景区网站数据。
《Python爬虫项目教程(微课版)》通过这些项目讲解了Python的Web访问技术、BeautifulSoup的数据分析与提取技术、深度优先与广度优先顺序爬取技术、多线程网页爬取技术、scrapy分布式爬取框架技术、selenium爬虫程序技术、AWS中的DynamoDB数据库的NoSQL存储技术等。
《Python爬虫项目教程(微课版)》每个项目都遵循由浅入深的学习规律,采取理论与实践相结合的方式来引导读者完成实战。
《Python爬虫项目教程(微课版)》可作为计算机软件技术专业及其相关专业的程序设计课程教材。
适读人群 :本书可作为计算机软件技术专业及其相关专业的程序设计教材。
紧扣学生为中心的主线,在教材中融入课程思政元素,培养爱党爱国、爱岗敬业、高素质高技能的软件人才。
使用项目驱动的形式编写,每个项目涵盖了不同的知识与技能点,各个项目按“任
务目标”“知识内容”“案例实践”的结构编写。
名校名师20余年授课经验集结成书
爬虫程序指能自动从相关网页中搜索与提取所需数据的程序,提取与存储这些数据是进行数据分析的前提与关键。Python语言因其简单、易读、可扩展的特性,在编写爬虫程序方面有特别的优势。尤其是业界有用Python编写的各种各样的爬虫程序框架供学习者参考,使得Python爬虫程序的编写更加简单、高效。
本书包括6个项目。项目1基于爬取外汇网站数据,讲解Python的Web访问技术及正则表达式匹配字符串方法。项目2基于爬取名言网站数据,讲解BeautifulSoup的数据分析与提取技术。项目3基于爬取电影网站数据,讲解爬取多个网页数据的方法,重点讲解网页的深度优先与广度优先顺序爬取路径的构造方法与多线程网页爬取技术。项目4基于爬取图书网站数据,讲解目前功能强大的分布式爬取框架scrapy的程序技术。项目5基于爬取商城网站数据,讲解selenium爬虫程序技术。项目6基于爬取景区网站数据,讲解AWS中的DynamoDB数据库的NoSQL存储技术。每个项目都遵循由浅人深的学习规律,理论与实践相结合,引导读者完成实战。
学习是一个循序渐进的过程,实际的网站结构比较复杂,对初学者来说,一开始就编写爬虫程序去爬取一个实际网站的数据是比较困难的。因此本书的每个项目都是先指导读者搭建一个本地模拟网站,再编写爬虫程序来爬取本地模拟网站的数据,从而帮助读者掌握爬虫程序的编写技术。这样做的好处是使学习内容变得简单、易学,读者可以先把主要精力放在爬虫程序的编写上,而非放在分析网站结构上,等有了一定的编程基础再去爬取实际网站的数据就容易多了。
对于本书,建议分为54学时实施教学。
由于编者知识水平有限,书中难免出现疏漏与不妥之处,欢迎读者批评指正。
黄锐军, 深圳信息职业技术学院软件学院副教授,研究生学历。主要从事计算机软件技术课程教学,有二十多年的职业教学经历。从事软件开发,先后为深圳市职业技能鉴定中心开发了序列应用软件。
项目1 爬取外汇网站数据 1
1.1 项目任务 1
1.2 搭建爬虫程序开发环境 1
1.2.1 理解爬虫程序 2
1.2.2 搭建开发环境 2
1.3 使用Flask创建Web网站 3
1.3.1 安装Flask框架 3
1.3.2 创建模拟外汇网站 4
1.3.3 编写客户端程序并获取网站的HTML代码 5
1.4 使用GET方法访问Web网站 7
1.4.1 客户端使用GET方法发送数据 7
1.4.2 服务器端使用GET方法获取数据 8
1.5 使用POST方法访问Web网站 9
1.5.1 客户端使用POST方法发送数据 9
1.5.2 服务器端使用POST方法获取数据 10
1.5.3 混合使用GET与POST方法 11
1.6 使用正则表达式匹配数据 13
1.6.1 使用正则表达式匹配字符串 14
1.6.2 使用正则表达式爬取数据 17
1.7 综合项目 爬取模拟外汇网站数据 18
1.7.1 创建模拟外汇网站 18
1.7.2 解析网站的HTML代码 19
1.7.3 设计存储数据库 19
1.7.4 编写爬虫程序 20
1.7.5 执行爬虫程序 22
1.8 实战项目 爬取实际外汇网站数据 22
1.8.1 解析网站的HTML代码 22
1.8.2 爬取网站外汇汇率数据 24
1.8.3 设计存储数据库 25
1.8.4 编写爬虫程序 26
1.8.5 执行爬虫程序 28
项目总结 29
练习1 29
项目2 爬取名言网站数据 30
2.1 项目任务 30
2.2 使用BeautifulSoup装载HTML文档 30
2.2.1 创建模拟名言网站 31
2.2.2 安装BeautifulSoup程序包 32
2.2.3 装载HTML文档 32
2.3 使用BeautifulSoup查找HTML元素 34
2.3.1 使用find()函数查找 34
2.3.2 查找元素属性与文本 37
2.3.3 使用find_all()函数查找 38
2.3.4 使用高级查找 40
2.4 使用BeautifulSoup遍历文档元素 42
2.4.1 获取元素节点的父节点 42
2.4.2 获取元素节点的直接子节点 43
2.4.3 获取元素节点的所有子孙节点 44
2.4.4 获取元素节点的兄弟节点 45
2.5 BeautifulSoup支持使用CSS语法进行查找 46
2.5.1 使用CSS语法查找 47
2.5.2 使用属性的语法规则 48
2.5.3 使用select()查找子孙节点 49
2.5.4 使用select()查找直接子节点 49
2.5.5 使用select()查找兄弟节点 49
2.5.6 使用select_one()查找单一元素 50
2.6 综合项目 爬取模拟名言网站数据 51
2.6.1 创建模拟名言网站 51
2.6.2 爬取名言数据 51
2.6.3 设计存储数据库 52
2.6.4 编写爬虫程序 52
2.6.5 执行爬虫程序 54
2.7 实战项目 爬取实际名言网站
数据 55
2.7.1 解析网站的HTML代码 55
2.7.2 爬取全部页面的数据 56
2.7.3 编写爬虫程序 57
2.7.4 执行爬虫程序 59
项目总结 60
练习2 60
项目3 爬取电影网站数据 63
3.1 项目任务 63
3.2 简单爬取网站数据 64
3.2.1 创建模拟电影网站 65
3.2.2 爬取网站数据 66
3.2.3 编写爬虫程序 68
3.2.4 执行爬虫程序 69
3.3 递归爬取网站数据 69
3.3.1 创建模拟电影网站 69
3.3.2 解析电影网站结构 72
3.3.3 递归爬取电影网站数据 72
3.4 深度优先爬取网站数据 73
3.4.1 深度优先法 73
3.4.2 深度优先爬虫程序 74
3.5 广度优先爬取网站数据 75
3.5.1 广度优先法 75
3.5.2 广度优先爬虫程序 76
3.6 爬取翻页网站数据 77
3.6.1 使用Flask模板参数 77
3.6.2 创建翻页电影网站 81
3.6.3 编写爬虫程序 84
3.6.4 执行爬虫程序 85
3.7 爬取网站全部图像 86
3.7.1 创建模拟电影网站 86
3.7.2 使用单线程程序爬取图像 88
3.7.3 使用Python的多线程 90
3.7.4 使用多线程程序爬取图像 93
3.8 综合项目 爬取模拟电影网站数据 95
3.8.1 创建模拟电影网站 95
3.8.2 设计存储数据库 98
3.8.3 编写爬虫程序 99
3.8.4 执行爬虫程序 102
3.9 实战项目 爬取实际电影网站数据 103
3.9.1 解析电影网站的HTML代码 103
3.9.2 爬取电影网站数据 105
3.9.3 编写爬虫程序 107
3.9.4 执行爬虫程序 111
项目总结 112
练习3 112
项目4 爬取图书网站数据 113
4.1 项目任务 113
4.2 使用scrapy创建爬虫程序 115
4.2.1 创建网站服务器程序 115
4.2.2 安装scrapy框架 115
4.2.3 scrapy项目的创建 115
4.2.4 入口函数与入口地址 118
4.2.5 Python的yield语句 118
4.3 使用BeautifulSoup爬取数据 119
4.3.1 创建模拟图书网站 119
4.3.2 解析网站的HTML代码 120
4.3.3 爬取图书图像 121
4.3.4 编写爬虫程序 122
4.3.5 执行爬虫程序 123
4.4 使用XPath查找元素 123
4.4.1 scrapy的XPath简介 124
4.4.2 使用XPath查找HTML元素 125
4.4.3 使用XPath与BeautifulSoup 134
4.5 爬取关联网页数据 135
4.5.1 创建模拟图书网站 135
4.5.2 程序爬取网页的顺序 137
4.5.3 理解scrapy分布式 139
4.6 使用XPath爬取数据 140
4.6.1 创建模拟图书网站 140
4.6.2 解析网站的HTML代码 142
4.6.3 爬取图书图像 143
4.6.4 设计数据库存储 144
4.6.5 编写爬虫程序 144
4.6.6 执行爬虫程序 146
4.7 使用管道存储数据 147
4.7.1 创建模拟图书网站 147
4.7.2 编写数据字段类 149
4.7.3 编写爬虫程序类 150
4.7.4 编写数据管道类 151
4.7.5 设置scrapy的配置文件 153
4.7.6 执行爬虫程序 153
4.8 综合项目 爬取模拟图书网站数据 154
4.8.1 创建模拟图书网站 154
4.8.2 编写数据字段类 157
4.8.3 编写数据管道类 157
4.8.4 编写爬虫程序类 158
4.8.5 设置scrapy的配置文件 160
4.8.6 执行爬虫程序 160
4.9 实战项目 爬取实际图书网站数据 161
4.9.1 解析网站的HTML代码 161
4.9.2 爬取网站图书数据 164
4.9.3 实现自动翻页 165
4.9.4 编写爬虫程序 167
4.9.5 执行爬虫程序并查看爬取结果 170
项目总结 172
练习4 172
项目5 爬取商城网站数据 174
5.1 项目任务 174
5.2 使用selenium编写爬虫程序 176
5.2.1 JavaScript程序控制网页 176
5.2.2 普通爬虫程序的问题 177
5.2.3 安装selenium与Chrome驱动程序 178
5.2.4 编写selenium爬虫程序 178
5.3 使用selenium查找HTML元素 180
5.3.1 创建模拟商城网站 180
5.3.2 使用XPath查找元素 182
5.3.3 查找元素的文本与属性 182
5.3.4 使用id值查找元素 184
5.3.5 使用name属性值查找元素 184
5.3.6 使用CSS查找元素 184
5.3.7 使用tagName查找元素 185
5.3.8 使用文本查找超链接 186
5.3.9 使用class值查找元素 186
5.4 使用selenium实现用户登录 187
5.4.1 创建用户登录网站 187
5.4.2 使用元素动作 188
5.4.3 编写爬虫程序 189
5.4.4 执行JavaScript程序 191
5.5 使用selenium爬取Ajax网页数据 192
5.5.1 创建Ajax网站 192
5.5.2 理解selenium爬虫程序 194
5.5.3 编写爬虫程序 197
5.5.4 执行爬虫程序 198
5.6 使用selenium等待HTML元素 198
5.6.1 创建延迟模拟网站 199
5.6.2 编写爬虫程序 200
5.6.3 selenium强制等待 200
5.6.4 selenium隐式等待 201
5.6.5 selenium循环等待与显式等待 202
5.6.6 selenium显式等待形式 204
5.7 综合项目 爬取模拟商城网站数据 205
5.7.1 创建模拟商城网站 205
5.7.2 爬取网站数据并实现网页翻页 209
5.7.3 设计数据存储与图像存储 210
5.7.4 编写爬虫程序 211
5.7.5 执行爬虫程序 214
5.8 实战项目 爬取实际商城网站数据 215
5.8.1 解析网站的HTML代码 215
5.8.2 爬取网站数据 218
5.8.3 实现网页翻页 220
5.8.4 编写爬虫程序 222
5.8.5 执行爬虫程序 226
项目总结 228
练习5 228
项目6 爬取景区网站数据 230
6.1 项目任务 230
6.2 使用DynamoDB存储模拟景区网站数据 231
6.2.1 创建模拟景区网站 231
6.2.2 爬取网站数据 233
6.2.3 编写爬虫程序 234
6.2.4 执行爬虫程序 235
6.2.5 DynamoDB简介 235
6.3 登录AWS数据库 236
6.3.1 登录AWS 236
6.3.2 创建数据库表 238
6.4 DynamoDB数据库操作 240
6.4.1 存储数据 240
6.4.2 读取数据 241
6.4.3 修改数据 242
6.4.4 删除数据 243
6.4.5 扫描数据 243
6.4.6 删除数据库表 244
6.5 综合项目 爬取模拟景区网站数据 245
6.5.1 创建模拟景区网站 245
6.5.2 编写爬虫程序 245
6.5.3 执行爬虫程序 248
6.6 实战项目 爬取实际景区网站数据 249
6.6.1 解析网站的HTML代码 250
6.6.2 爬取网站景区数据 252
6.6.3 爬取全部页面的数据 254
6.6.4 设计存储数据库 255
6.6.5 编写爬虫程序 255
6.6.6 执行爬虫程序 259
项目总结 260
练习6 260