第1章 Python与网络爬虫 1
1.1 Python语言 1
1.1.1 什么是Python 1
1.1.2 Python的应用现状 2
1.2 Python的安装与开发环境配置 3
1.2.1 在Windows上安装 3
1.2.2 在Ubuntu和Mac OS上安装 4
1.2.3 PyCharm的使用 5
1.2.4 Jupyter Notebook 9
1.3 Python基本语法 12
1.3.1 HelloWorld与数据类型 12
1.3.2 逻辑语句 19
1.3.3 Python中的函数与类 22
1.3.4 Python从0到1 25
1.4 互联网、HTTP与HTML 25
1.4.1 互联网与HTTP 25
1.4.2 HTML 27
1.5 Hello,Spider! 29
1.5.1 第一个爬虫程序 29
1.5.2 对爬虫的思考 31
1.6 调研网站 33
1.6.1 网站的robots.txt与Sitemap 33
1.6.2 查看网站所用技术 36
1.6.3 查看网站所有者信息 37
1.6.4 使用开发者工具检查网页 39
1.7 本章小结 42
第2章 数据采集 43
2.1 从抓取开始 43
2.2 正则表达式 44
2.2.1 初见正则表达式 44
2.2.2 正则表达式的简单使用 46
2.3 BeautifulSoup 49
2.3.1 安装与上手 49
2.3.2 BeautifulSoup的基本使用 52
2.4 XPath与lxml 55
2.4.1 XPath 55
2.4.2 lxml与XPath的使用 57
2.5 遍历页面 59
2.5.1 抓取下一个页面 59
2.5.2 完成爬虫 60
2.6 使用API 63
2.6.1 API简介 63
2.6.2 API使用示例 65
2.7 本章小结 68
第3章 文件与数据存储 69
3.1 Python中的文件 69
3.1.1 基本的文件读写 69
3.1.2 序列化 72
3.2 字符串 72
3.3 Python与图片 74
3.3.1 PIL与Pillow 74
3.3.2 Python与OpenCV简介 76
3.4 CSV文件 77
3.4.1 CSV简介 77
3.4.2 CSV的读写 77
3.5 使用数据库 79
3.5.1 使用MySQL 80
3.5.2 使用SQLite3 81
3.5.3 使用SQLAlchemy 83
3.5.4 使用Redis 85
3.6 其他类型的文档 86
3.7 本章小结 90
第4章 JavaScript与动态内容 91
4.1 JavaScript与AJAX技术 91
4.1.1 JavaScript语言 91
4.1.2 AJAX 95
4.2 抓取AJAX数据 96
4.2.1 分析数据 96
4.2.2 数据提取 100
4.3 抓取动态内容 107
4.3.1 动态渲染页面 107
4.3.2 使用Selenium 107
4.3.3 PyV8与Splash 114
4.4 本章小结 118
第5章 表单与模拟登录 119
5.1 表单 119
5.1.1 表单与POST 119
5.1.2 POST发送表单数据 121
5.2 Cookie 124
5.2.1 什么是Cookie 124
5.2.2 在Python中使用Cookie 125
5.3 模拟登录网站 128
5.3.1 分析网站 128
5.3.2 通过Cookie模拟登录 129
5.4 验证码 133
5.4.1 图片验证码 133
5.4.2 滑动验证 134
5.5 本章小结 139
第6章 数据的进一步处理 140
6.1 Python与文本分析 140
6.1.1 什么是文本分析 140
6.1.2 jieba与SnowNLP 141
6.1.3 NLTK 145
6.1.4 文本分类与聚类 149
6.2 数据处理与科学计算 150
6.2.1 从MATLAB到Python 150
6.2.2 NumPy 151
6.2.3 Pandas 156
6.2.4 Matplotlib 163
6.2.5 SciPy与SymPy 167
6.3 本章小结 167
第7章 更灵活的爬虫 168
7.1 更灵活的爬虫——以微信数据抓取为例 168
7.1.1 用Selenium抓取Web微信信息 168
7.1.2 基于Python的微信API工具 172
7.2 更多样的爬虫 175
7.2.1 在BeautifulSoup和XPath之外 175
7.2.2 在线爬虫应用平台 179
7.2.3 使用urllib 181
7.3 爬虫的部署和管理 190
7.3.1 配置远程主机 190
7.3.2 编写本地爬虫 192
7.3.3 部署爬虫 198
7.3.4 查看运行结果 199
7.3.5 使用爬虫管理框架 200
7.4 本章小结 203
第8章 浏览器模拟与网站测试 204
8.1 关于测试 204
8.1.1 什么是测试 204
8.1.2 什么是TDD 205
8.2 Python的单元测试 205
8.2.1 使用unittest 205
8.2.2 其他方法 208
8.3 使用Python爬虫测试网站 209
8.4 使用Selenium测试 212
8.4.1 Selenium测试常用的网站交互 212
8.4.2 结合Selenium进行单元测试 214
8.5 本章小结 215
第9章 更强大的爬虫 216
9.1 爬虫框架 216
9.1.1 Scrapy是什么 216
9.1.2 Scrapy安装与入门 218
9.1.3 编写Scrapy爬虫 221
9.1.4 其他爬虫框架 223
9.2 网站反爬虫 224
9.2.1 反爬虫的策略 224
9.2.2 伪装headers 225
9.2.3 使用代理 228
9.2.4 访问频率 232
9.3 多进程与分布式 233
9.3.1 多进程编程与爬虫抓取 233
9.3.2 分布式爬虫 235
9.4 本章小结 235
第10章 爬虫实践:火车票余票实时提醒 236
10.1 程序设计 236
10.1.1 分析网页 236
10.1.2 理解返回的JSON格式数据的意义 238
10.1.3 微信消息推送 238
10.1.4 运行并查看微信消息 243
10.2 本章小结 244
第11章 爬虫实践:爬取二手房数据并绘制热力图 245
11.1 数据抓取 245
11.1.1 分析网页 245
11.1.2 地址转换成经纬度 247
11.1.3 编写代码 248
11.1.4 数据下载结果 252
11.2 绘制热力图 252
11.3 本章小结 259
第12章 爬虫实践:免费IP代理爬虫 260
12.1 程序设计 260
12.1.1 代理分类 260
12.1.2 网站分析 261
12.1.3 编写爬虫 264
12.1.4 运行并查看结果 272
12.2 本章小结 273
第13章 爬虫实践:百度文库爬虫 274
13.1 程序设计 274
13.1.1 分析网页 274
13.1.2 编写爬虫 280
13.1.3 运行并查看爬取的百度文库文件 284
13.2 本章小结 284
第14章 爬虫实践:拼多多用户评论数据爬虫 285
14.1 程序设计 285
14.1.1 分析网页 285
14.1.2 编写爬虫 288
14.1.3 运行并查看数据库 307
14.2 本章小结 312
第15章 爬虫实践:Selenium+PyQuery+MongoDB爬取网易跟帖 313
15.1 程序设计 313
15.1.1 Selenium介绍 314
15.1.2 分析网页 320
15.1.3 编写爬虫 322
15.1.4 运行并查看MongoDB文件 331
15.2 本章小结 333