第 1章 开发环境配置1
1.1 Python 3的安装1
1.1.1 相关链接1
1.1.2 Windows下的安装1
1.1.3 Linux下的安装6
1.1.4 Mac下的安装8
1.2 请求库的安装10
1.2.1 requests的安装10
1.2.2 Selenium的安装11
1.2.3 ChromeDriver的安装12
1.2.4 GeckoDriver的安装15
1.2.5 PhantomJS的安装17
1.2.6 aiohttp的安装18
1.3 解析库的安装19
1.3.1 lxml的安装19
1.3.2 Beautiful Soup的安装21
1.3.3 pyquery的安装22
1.3.4 tesserocr的安装22
1.4 数据库的安装26
1.4.1 MySQL的安装27
1.4.2 MongoDB安装29
1.4.3 Redis的安装36
1.5 存储库的安装39
1.5.1 PyMySQL的安装39
1.5.2 PyMongo的安装39
1.5.3 redis-py的安装40
1.5.4 RedisDump的安装40
1.6 Web库的安装41
1.6.1 Flask的安装41
1.6.2 Tornado的安装42
1.7 App爬取相关库的安装43
1.7.1 Charles的安装44
1.7.2 mitmproxy的安装50
1.7.3 Appium的安装55
1.8 爬虫框架的安装59
1.8.1 pyspider的安装59
1.8.2 Scrapy的安装61
1.8.3 Scrapy-Splash的安装65
1.8.4 Scrapy-Redis的安装66
1.9 部署相关库的安装67
1.9.1 Docker的安装67
1.9.2 Scrapyd的安装71
1.9.3 Scrapyd-Client的安装74
1.9.4 Scrapyd API的安装75
1.9.5 Scrapyrt的安装75
1.9.6 Gerapy的安装76
第 2章 爬虫基础77
2.1 HTTP基本原理77
2.1.1 URI和URL77
2.1.2 超文��78
2.1.3 HTTP和HTTPS78
2.1.4 HTTP请求过程80
2.1.5 请求82
2.1.6 响应84
2.2 网页基础87
2.2.1 网页的组成87
2.2.2 网页的结构88
2.2.3 节点树及节点间的关系90
2.2.4 选择器91
2.3 爬虫的基本原理93
2.3.1 爬虫概述93
2.3.2 能抓怎样的数据94
2.3.3 JavaScript渲染页面94
2.4 会话和Cookies95
2.4.1 静态网页和动态网页95
2.4.2 无状态HTTP96
2.4.3 常见误区98
2.4.4 参考资料99
2.5 代理的基本原理99
2.5.1 基本原理99
2.5.2 代理的作用99
2.5.3 爬虫代理100
2.5.4 代理分类100
2.5.5 常见代理设置101
2.5.6 参考来源101
第3章 基本库的使用102
3.1 使用urllib102
3.1.1 发送请求102
3.1.2 处理异常112
3.1.3 解析链接114
3.1.4 分析Robots协议119
3.2 使用requests122
3.2.1 基本用法122
3.2.2 **用法130
3.3 正则表达式139
3.4 抓取猫眼电影排行150
第4章 解析库的使用158
4.1 使用XPath158
4.2 使用Beautiful Soup168
4.3 使用pyquery184
第5章 数据存储197
5.1 文件存储197
5.1.1 TXT文本存储197
5.1.2 JSON文件存储199
5.1.3 CSV文件存储203
5.2 关系型数据库存储207
5.3 非关系型数据库存储213
5.3.1 MongoDB存储214
5.3.2 Redis存储221
第6章 Ajax数据爬取232
6.1 什么是Ajax232
6.2 Ajax分析方法234
6.3 Ajax结果提取238
6.4 分析Ajax爬取**头条街拍美图242
第7章 动态渲染页面爬取249
7.1 Selenium249
7.2 Splash262
7.3 Splash负载均衡配置286
7.4 使用Selenium爬取淘宝商品289
第8章 验证码的识别298
8.1 图形验证码的识别298
8.1.1 本节目标299
8.1.2 准备工作299
8.1.3 获取验证码299
8.1.4 识别测试299
8.1.5 验证码处理299
8.1.6 本节代码301
8.1.7 结语301
8.2 极验滑动验证码的识别301
8.3 点触验证码的识别311
8.4 微博宫格验证码的识别318
第9章 代理的使用326
9.1 代理的设置326
9.2 代理池的维护333
9.3 付费代理的使用347
9.4 ADSL拨号代理351
9.5 使用代理爬取微信公众号文章364
第 10章 模拟登录379
10.1 模拟登录并爬取GitHub379
10.2 Cookies池的搭建385
第 11章 App的爬取398
11.1 Charles的使用398
11.2 mitmproxy的使用405
11.3 mitmdump爬取“得到”App电子书
信息417
11.4 Appium的基本使用423
11.5 Appium爬取微信朋友圈433
11.6 Appium mitmdump爬取京东商品437
第 12章 pyspider框架的使用443
12.1 pyspider框架介绍443
12.2 pyspider的基本使用445
12.3 pyspider用法详解459
第 13章 Scrapy框架的使用468
13.1 Scrapy框架介绍468
13.2 Scrapy入门470
13.3 Selector的用法480
13.4 Spider的用法486
13.5 Downloader Middleware的用法487
13.6 Spider Middleware的用法494
13.7 Item Pipeline的用法496
13.8 Scrapy对接Selenium506
13.9 Scrapy对接Splash511
13.10 Scrapy通用爬虫516
13.11 Scrapyrt的使用533
13.12 Scrapy对接Docker536
13.13 Scrapy爬取新浪微博541
第 14章 分布式爬虫555
14.1 分布式爬虫原理555
14.2 Scrapy-Redis源码解析558
14.3 Scrapy分布式实现564
14.4 Bloom Filter的对接569
第 15章 分布式爬虫的部署577
15.1 Scrapyd分布式部署577
15.2 Scrapyd-Client的使用582
15.3 Scrapyd对接Docker583
15.4 Scrapyd批量部署586
15.5 Gerapy分布式管理590