本书基于Python 3.10版本,以项目实战的方式系统地介绍了Python网络爬虫开发的相关知识,主要内容包括Python基础实战、网页数据采集实战、网页数据解析实战、并发技术实战、动态内容采集实战、爬虫数据存储实战、Scrapy爬虫框架实战等,通过多个实战任务的练习,让读者能最大限度地掌握Python网络爬虫的核心技术。为了方便读者学习,本书附有配套源代码、教学PPT、题库、教学视频、教学设计等资源。本书可作为高等院校计算机相关专业程序设计课程教材,也可供从事计算机爬虫应用开发的相关人员使用。
刘珍,中共党员,湖南大学全日制硕士研究生,计算机科学与技术高级讲师,福田区技术能手,计算机网络管理高级技师、电子商务高级技师,至今从事教育工作14余年,累计获得各项教研成果奖项30余项,主持教科研项目3项,参与教科研项目6项,累计发表科研论文10余篇,获得计算机软件开发专利著作权5项,主编《微信小程序开发》教材,主讲广东省级精品课程《小程序开发》。
项目1 Python基础实战 1
任务1.1 Python开发环境搭建 2
1.1.1 在Windows系统中安装Python 2
1.1.2 在Linux系统中安装Python 4
1.1.3 安装PyCharm集成开发环境 5
任务1.2 从HTML文档中提取特定字符串 10
1.2.1 数值类型与变量 10
1.2.2 字符串 11
1.2.3 运算符 12
1.2.4 流程控制 13
任务1.3 用列表、字典等组织数据 16
1.3.1 列表(list) 17
1.3.2 元组(tuple) 17
1.3.3 字典(dict) 18
1.3.4 集合(set) 19
1.3.5 函数 20
任务1.4 基于正则表达式提取图片链接文本 23
1.4.1 模块和包 23
1.4.2 异常处理 26
1.4.3 正则表达式 28
任务1.5 从JSON文件中加载数据 31
1.5.1 类与对象 31
1.5.2 文件与目录操作 34
1.5.3 JSON 38
项目2 网页数据采集实战 43
任务2.1 利用工具爬取一个电商网页 43
2.1.1 爬虫的定义 44
2.1.2 爬虫的类型 44
2.1.3 与爬虫相关的网站文件 47
2.1.4 反爬虫应对策略 48
2.1.5 爬虫的合法性 50
任务2.2 基于urllib库爬取一个电商网页 57
任务2.3 urllib处理发送GET/POST请求 61
任务2.4 请求头伪装与代理服务器应用 66
2.4.1 请求头伪装 67
2.4.2 代理服务器 67
任务2.5 网络异常处理 73
2.5.1 URLError 73
2.5.2 HTTPError 74
任务2.6 基于requests库爬取电商网页 74
项目3 网页数据解析实战 79
任务3.1 HTML基础 79
3.1.1 HTML网页的结构 80
3.1.2 Chrome浏览器的DevTools 81
任务3.2 基于正则表达式的网页数据解析 85
任务3.3 XPath应用 88
3.3.1 XPath简介 89
3.3.2 lxml简介 94
任务3.4 Beautiful Soup解析数据 99
任务3.5 JSON数据解析 106
项目4 并发技术实战 112
任务4.1 基于进程的并发爬虫 112
4.1.1 并发原理 113
4.1.2 进程(Process) 113
4.1.3 Python的多进程并发编程 114
任务4.2 基于queue模块的多线程爬虫 122
4.2.1 线程(Thread) 123
4.2.2 Python的多线程并发编程 123
任务4.3 基于协程的并发爬虫 129
任务4.4 历史天气并发爬取 131
项目5 动态内容采集实战 139
任务5.1 动态网页基础 139
任务5.2 Selenium的安装配置 144
任务5.3 基于Selenium的动态网页爬取 148
任务5.4 基于Selenium的模拟登录 150
任务5.5 验证码的识别处理 154
5.5.1 验证码基础 154
5.5.2 Pytesseract简介 155
5.5.3 PIL简介 156
任务5.6 基于Selenium的招聘职位获取 159
项目6 爬虫数据存储实战 165
任务6.1 MongoDB基础 165
6.1.1 MongoDB的安装 166
6.1.2 MongoDB的基本操作 170
任务6.2 基于PyMongo的爬虫数据存储 174
任务6.3 Redis数据库基础 179
6.3.1 Redis的安装 180
6.3.2 Redis的操作命令 182
任务6.4 基于redis模块的爬虫数据存储 184
项目7 Scrapy爬虫框架实战 188
任务7.1 Scrapy爬虫框架基础 188
7.1.1 Scrapy爬虫框架简介 189
7.1.2 Scrapy项目创建 191
7.1.3 Scrapy常用命令 192
任务7.2 定义Spider爬取斗鱼直播平台数据 195
7.2.1 Item类简介 196
7.2.2 Spider类简介 196
任务7.3 自定义爬虫中间件爬取众图网数据 202
7.3.1 Scrapy的settings文件 202
7.3.2 Downloader Middlewares 203
任务7.4 CrawlSpider自动爬取数据 213
7.4.1 CrawlSpider 213
7.4.2 Rule 214
7.4.3 LinkExtractor 215
任务7.5 应用Item Pipeline进行后期数据处理 219
任务7.6 综合实训——百度科学百科数据爬取 222