第1章 绪论 1
1.1 爬虫 2
1.2 爬虫可以做什么 2
1.2.1 收集数据 2
1.2.2 尽职调查 3
1.2.3 刷流量和秒杀 3
1.3 爬虫开发技术 4
第2章 Python基础 5
2.1 Python的安装和运行 6
2.1.1 在Windows中安装Python 6
2.1.2 在Mac OS中安装Python 7
2.1.3 在Linux中安装Python 8
2.2 Python开发环境 8
2.2.1 PyCharm介绍与安装 8
2.2.2 运行代码 9
2.3 Python的数据结构和控制结构 12
2.3.1 整数、浮点数和变量 12
2.3.2 字符串、列表、元组 13
2.3.3 数据的读取 14
2.3.4 字典与集合 16
2.3.5 条件语句 17
2.3.6 for循环与while循环 19
2.4 函数与类 21
2.4.1 函数 21
2.4.2 类与面向对象编程 28
2.5 阶段案例——猜数游戏 32
2.5.1 需求分析 32
2.5.2 核心代码构建 33
2.5.3 调试与运行 33
2.6 本章小结 34
2.7 动手实践 34
第3章 正则表达式与文件操作 35
3.1 正则表达式 36
3.1.1 正则表达式的基本符号 36
3.1.2 在Python中使用正则表达式 38
3.1.3 正则表达式提取技巧 41
3.2 Python文件操作 44
3.2.1 使用Python读/写文本文件 44
3.2.2 使用Python读/写CSV文件 46
3.3 阶段案例——半自动爬虫开发 49
3.3.1 需求分析 49
3.3.2 核心代码构建 50
3.3.3 调试与运行 51
3.4 本章小结 54
3.5 动手实践 54
第4章 简单的网页爬虫开发 55
4.1 使用Python获取网页源代码 56
4.1.1 Python的第三方库 56
4.1.2 requests介绍与安装 56
4.1.3 使用requests获取网页源代码 57
4.1.4 结合requests与正则表达式 59
4.2 多线程爬虫 60
4.2.1 多进程库(multiprocessing) 60
4.2.2 开发多线程爬虫 61
4.3 爬虫的常见搜索算法 62
4.3.1 深度优先搜索 62
4.3.2 广度优先搜索 63
4.3.3 爬虫搜索算法的选择 64
4.4 阶段案例——小说网站爬虫开发 64
4.4.1 需求分析 64
4.4.2 核心代码构建 65
4.4.3 调试与运行 68
4.5 本章小结 68
4.6 动手实践 68
第5章 高性能HTML内容解析 69
5.1 HTML基础 70
5.2 XPath 71
5.2.1 XPath的介绍 71
5.2.2 lxml的安装 71
5.2.3 XPath语法讲解 73
5.2.4 使用Google Chrome浏览器辅助构造XPath 77
5.3 Beautiful Soup4 81
5.3.1 BS4的安装 81
5.3.2 BS4语法讲解 82
5.4 阶段案例——大麦网演出爬虫 85
5.4.1 需求分析 85
5.4.2 核心代码构建 85
5.4.3 调试与运行 86
5.5 本章小结 87
5.6 动手实践 87
第6章 Python与数据库 88
6.1 MongoDB 89
6.1.1 MongoDB的安装 89
6.1.2 PyMongo的安装与使用 94
6.1.3 使用RoboMongo执行MongoDB命令 101
6.2 Redis 102
6.2.1 环境搭建 102
6.2.2 Redis交互环境的使用 103
6.2.3 Redis-py 104
6.3 MongoDB的优化建议 105
6.3.1 少读少写少更新 105
6.3.2 能用Redis就不用MongoDB 106
6.4 阶段案例 107
6.4.1 需求分析 107
6.4.2 核心代码构建 107
6.4.3 调试与运行 108
6.5 本章小结 108
6.6 动手实践 108
第7章 异步加载与请求头 109
7.1 异步加载 110
7.1.1 AJAX技术介绍 110
7.1.2 JSON介绍与应用 110
7.1.3 异步GET与POST请求 111
7.1.4 特殊的异步加载 113
7.1.5 多次请求的异步加载 114
7.1.6 基于异步加载的简单登录 117
7.2 请求头(Headers) 118
7.2.1 请求头的作用 118
7.2.2 伪造请求头 119
7.3 模拟浏览器 122
7.3.1 Selenium介绍 123
7.3.2 Selenium安装 124
7.3.3 Selenium的使用 124
7.4 阶段案例 128
7.4.1 需求分析 128
7.4.2 核心代码构建 128
7.4.3 调试与运行 130
7.5 本章小结 131
7.6 动手实践 131
第8章 模拟登录与验证码 132
8.1 模拟登录 133
8.1.1 使用Selenium模拟登录 133
8.1.2 使用Cookies登录 135
8.1.3 模拟表单登录 137
8.2 验证码 139
8.2.1 肉眼打码 139
8.2.2 自动打码 141
8.3 阶段案例——自动登录果壳网 144
8.3.1 需求分析 144
8.3.2 核心代码构建 145
8.3.3 运行与调试 146
8.4 本章小结 147
8.5 动手实践 147
第9章 抓包与中间人爬虫 148
9.1 数据抓包 149
9.1.1 Charles的介绍和使用 149
9.1.2 App爬虫和小程序爬虫 156
9.2 中间人爬虫 163
9.2.1 mitmproxy的介绍和安装 163
9.2.2 mitmproxy的使用 164
9.2.3 使用Python定制mitmproxy 165
9.3 阶段案例——Keep热门 170
9.3.1 需求分析 170
9.3.2 核心代码构建 170
9.3.3 调试运行 172
9.4 本章小结 172
9.5 动手实践 172
第10章 Android原生App爬虫 173
10.1 实现原理 174
10.1.1 环境搭建 175
10.1.2 使用Python操纵手机 178
10.1.3 选择器 180
10.1.4 操作 181
10.2 综合应用 188
10.2.1 单设备应用 188
10.2.2 多设备应用(群控) 191
10.3 阶段案例——BOSS直聘爬虫 196
10.3.1 需求分析 196
10.3.2 核心代码构建 196
10.3.3 调试与运行 197
10.4 本章小结 197
10.5 动手实践 198
第11章 Scrapy 199
11.1 Scrapy的安装 200
11.1.1 在Windows下安装Scrapy 200
11.1.2 在Linux下安装Scrapy 202
11.1.3 在Mac OS下安装Scrapy 202
11.2 Scrapy的使用 203
11.2.1 创建项目 203
11.2.2 在Scrapy中使用XPath 207
11.3 Scrapy与MongoDB 213
11.3.1 items和pipelines的设置 213
11.3.2 在Scrapy中使用MongoDB 215
11.4 Scrapy与Redis 218
11.4.1 Scrapy_redis的安装和使用 218
11.4.2 使用Redis缓存网页并自动去重 218
11.5 阶段案例——博客爬虫 220
11.5.1 需求分析 220
11.5.2 核心代码构建 221
11.5.3 调试与运行 226
11.6 本章小结 228
11.7 动手实践 228
第12章 Scrapy高级应用 229
12.1 中间件(Middleware) 230
12.1.1 下载器中间件 230
12.1.2 爬虫中间件 242
12.2 爬虫的部署 246
12.2.1 Scrapyd介绍与使用 246
12.2.2 权限管理 253
12.3 分布式架构 258
12.3.1 分布式架构介绍 258
12.3.2 如何选择Master 259
12.4 阶段案例 259
12.5 本章小结 259
第13章 爬虫开发中的法律和道德问题 260
13.1 法律问题 261
13.1.1 数据采集的法律问题 261
13.1.2 数据的使用 261
13.1.3 注册及登录可能导致的法律问题 261
13.1.4 数据存储 261
13.1.5 内幕交易 261
13.2 道德协议 262
13.2.1 robots.txt协议 262
13.2.2 爬取频率 262
13.2.3 不要开源爬虫的源代码 262
13.3 本章小结 262