□□ 章 爬虫程序的构成和完整链条 . 1
1.1 一个简单的爬虫程序 . 1
1.□ 爬虫的完整链条 . 3
1.3 爬取下来的数据被用在什么地方 . 7
1.4 爬虫工程师常用的库 . 11
1.4.1 网络请求库 . 11
1.4.□ 网页文本解析. 19
1.5 数据存储 . 30
1.5.1 将数据存入MySQL 数据库 . 31
1.5.□ 将数据存入MongoDB 数据库 . 34
1.5.3 将数据存入Redis 数据库 . 36
1.5.4 Excel 文件的读写 . 38
1.6 小试牛刀——出版社新闻资讯爬虫 . 4□
实践题 . 46
本章小结 . 47
第□ 章 自动化工具的使用 . 48
□.1 网页渲染工具 . 48
□.1.1 WebDriver 是什么 . 51
□.1.□ Selenium 的介绍和基本使用 . 5□
□.1.3 Pyppeteer 的介绍和基本使用 . 59
□.1.4 Splash 知识扩展 . 61
本节小结 . 6□
□.□ App 自动化工具 . 6□
□.□.1 Android 调试桥 . 6□
□.□.□ Airtest Project 与Poco . 64
VIII Python3 网络爬虫宝典
□.□.3 爬取App 中的图片 . 75
□.□.4 控制多台设备. 78
本节小结 . 79
实践题 . 79
本章小结 . 79
第3 章 增量爬取的原理与实现 . 80
3.1 增量爬取的分类和实现原理 . 81
3.1.1 增量爬取的分类 . 81
3.1.□ 增量爬取的实现原理 . 83
本节小结 . 88
3.□ 增量池的复杂度和效率 . 88
3.□.1 增量池的时间复杂度 . 88
3.□.□ 增量池的空间复杂度 . 95
本节小结 . 103
3.3 Redis 的数据持久化 . 103
3.3.1 持久化方式的分类和特点 . 103
3.3.□ RDB 持久化的实践 . 106
3.3.3 AOF 持久化的实践 . 11□
3.3.4 Redis 密码持久化 . 115
本节小结 . 115
实践题 . 115
本章小结 . 116
第4 章 分布式爬虫的设计与实现 . 117
4.1 分布式爬虫的原理和分类 . 117
4.1.1 分布式爬虫的原理 . 117
4.1.□ 分布式爬虫的分类 . 1□0
4.1.3 共享队列的选择 . 1□□
本节小结 . 1□5
4.□ 分布式爬虫库Scrapy-Redis . 1□6
4.□.1 Scrapy-Redis 的介绍和基本使用 . 1□7
4.□.□ 去重器、调度器和队列的源码解析 . 1□9
目录 IX
本节小结 . 134
4.3 基于Redis 的分布式爬虫 . 134
4.3.1 对等分布式爬虫的实现 . 135
4.3.□ 主从分布式爬虫的实现 . 139
本节小结 . 141
4.4 基于RabbitMQ 的分布式爬虫 . 141
4.4.1 RabbitMQ 的安装和基本操作 . 14□
4.4.□ 分布式爬虫的具体实现 . 146
本节小结 . 15□
实践题 . 15□
本章小结 . 15□
第5 章 网页正文自动化提取方法 . 153
5.1 Python Readability . 155
5.□ 基于文本及符号密度的网页正文提取方法 . 158
5.3 GeneralNewsExtractor . 16□
5.3.1 GeneralNewsExtractor 的安装和使用 . 16□
5.3.□ GeneralNewsExtractor 的源码解读 . 165
本节小结 . 175
本章小结 . 175
第6 章 Python 项目打包部署与定时调度 . 176
6.1 如何判断项目是否需要部署 . 176
6.□ 爬虫部署平台Scrapyd . 179
6.□.1 Scrapyd 的安装和服务启动 . 179
6.□.□ 爬虫项目的打包和部署 . 180
本节小结 . 184
6.3 Scrapyd 源码深度剖析 . 185
6.4 项目打包与解包运行实战 . 197
6.4.1 用Setuptools 打包项目 . 197
6.4.□ 运行EGG 包中的Python 项目 . 199
6.4.3 编码实现Python 项目打包 . □01
本节小结 . □03
X Python3 网络爬虫宝典
6.5 定时功能 . □03
6.5.1 操作系统提供的定时功能 . □03
6.5.□ 编程语言实现的定时功能 . □06
6.5.3 APScheduler . □09
本节小结 . □1□
6.6 实战:开发Python 项目管理平台Sailboat . □1□
6.6.1 Sailboat 的模块规划和技术选型 . □1□
6.6.□ Sailboat 的权限设计思路 . □14
6.6.3 Sailboat 的数据结构设计 . □15
6.6.4 Sailboat 基础结构的搭建 . □18
6.6.5 Sailboat 用户注册和登录接口的编写 . □□0
6.6.6 Sailboat 权限验证装饰器的编写 . □□9
6.6.7 Sailboat 项目部署接口和文件操作对象的编写 . □3□
6.6.8 Sailboat 项目调度接口的编写 . □40
6.6.9 Sailboat 执行器的编写和日志的生成 . □43
6.6.10 Sailboat 定时调度功能的实现 . □48
6.6.11 Sailboat 异常监控和钉钉机器人通知功能的编写 . □49
本节小结 . □58
6.7 分布式调度平台Crawlab 核心架构解析 . □59
实践题 . □6□
本章小结 . □6□