第1 章 爬虫程序的构成和完整链条
1.1 一个简单的爬虫程序
1.2 爬虫的完整链条
1.3 爬取下来的数据被用在什么地方
1.4 爬虫工程师常用的库
1.4.1 网络请求库
1.4.2 网页文本解析
1.5 数据存储
1.5.1 将数据存入MySQL 数据库
1.5.2 将数据存入MongoDB 数据库
1.5.3 将数据存入Redis 数据库
1.5.4 Excel 文件的读写
1.6 小试牛刀——出版社新闻资讯爬虫
实践题
本章小结
第2 章 自动化工具的使用
2.1 网页渲染工具
2.1.1 WebDriver 是什么
2.1.2 Selenium 的介绍和基本使用
2.1.3 Pyppeteer 的介绍和基本使用
2.1.4 Splash 知识扩展
本节小结
2.2 App 自动化工具
2.2.1 Android 调试桥
2.2.2 Airtest Project 与Poco
VIII Python3 网络爬虫宝典
2.2.3 爬取App 中的图片
2.2.4 控制多台设备
本节小结
实践题
本章小结
第3 章 增量爬取的原理与实现
3.1 增量爬取的分类和实现原理
3.1.1 增量爬取的分类
3.1.2 增量爬取的实现原理
本节小结
3.2 增量池的复杂度和效率
3.2.1 增量池的时间复杂度
3.2.2 增量池的空间复杂度
本节小结
3.3 Redis 的数据持久化
3.3.1 持久化方式的分类和特点
3.3.2 RDB 持久化的实践
3.3.3 AOF 持久化的实践
3.3.4 Redis 密码持久化
本节小结
实践题
本章小结
第4 章 分布式爬虫的设计与实现
4.1 分布式爬虫的原理和分类
4.1.1 分布式爬虫的原理
4.1.2 分布式爬虫的分类
4.1.3 共享队列的选择
本节小结
4.2 分布式爬虫库Scrapy-Redis
4.2.1 Scrapy-Redis 的介绍和基本使用
4.2.2 去重器、调度器和队列的源码解析
目录 IX
本节小结
4.3 基于Redis 的分布式爬虫
4.3.1 对等分布式爬虫的实现
4.3.2 主从分布式爬虫的实现
本节小结
4.4 基于RabbitMQ 的分布式爬虫
4.4.1 RabbitMQ 的安装和基本操作
4.4.2 分布式爬虫的具体实现
本节小结
实践题
本章小结
第5 章 网页正文自动化提取方法
5.1 Python Readability
5.2 基于文本及符号密度的网页正文提取方法
5.3 GeneralNewsExtractor
5.3.1 GeneralNewsExtractor 的安装和使用
5.3.2 GeneralNewsExtractor 的源码解读
本节小结
本章小结
第6 章 Python 项目打包部署与定时调度
6.1 如何判断项目是否需要部署
6.2 爬虫部署平台Scrapyd
6.2.1 Scrapyd 的安装和服务启动
6.2.2 爬虫项目的打包和部署
本节小结
6.3 Scrapyd 源码深度剖析
6.4 项目打包与解包运行实战
6.4.1 用Setuptools 打包项目
6.4.2 运行EGG 包中的Python 项目
6.4.3 编码实现Python 项目打包
本节小结
X Python3 网络爬虫宝典
6.5 定时功能
6.5.1 操作系统提供的定时功能
6.5.2 编程语言实现的定时功能
6.5.3 APScheduler
本节小结
6.6 实战:开发Python 项目管理平台Sailboat
6.6.1 Sailboat 的模块规划和技术选型
6.6.2 Sailboat 的权限设计思路
6.6.3 Sailboat 的数据结构设计
6.6.4 Sailboat 基础结构的搭建
6.6.5 Sailboat 用户注册和登录接口的编写
6.6.6 Sailboat 权限验证装饰器的编写
6.6.7 Sailboat 项目部署接口和文件操作对象的编写
6.6.8 Sailboat 项目调度接口的编写
6.6.9 Sailboat 执行器的编写和日志的生成
6.6.10 Sailboat 定时调度功能的实现
6.6.11 Sailboat 异常监控和钉钉机器人通知功能的编写
本节小结
6.7 分布式调度平台Crawlab 核心架构解析
实践题
本章小结