ST发送请求8
2.2.2通过URL传递参数9
2.2.3设置超时9
2.2.4查看返回内容9
2.2.5设置请求头10
2.2.6更多复杂的Post请求10
2.2.7返回对象状态码12
2.2.8设置代理IP13
2.3BeautifulSoup的安装和使用14
2.3.1使用pip安装BeautifulSoup14
2.3.2使用BeautifulSoup定位元素14
2.4初识自动化测试工具Selenium15
2.4.1Selenium安装15
2.4.2使用Selnium爬取网站15
2.5Selenium定位元素16
2.5.1通过属性定位17
2.5.2通过xpath定位17
2.6Selenium反爬设置18
2.6.1设置请求头18
2.6.2设置代理IP19
第3章 常用爬虫框架Scrapy
3.1认识Scrapy21
3.1.1Scrapy爬取quotes简单示例21
3.1.2安装所需依赖包23
3.1.3使用虚拟环境23
3.2Scrapyshell的使用24
3.2.1运行shell24
3.2.2使用Scrapyshell爬取Scrapy.org24
3.2.3爬虫调用shell26
3.3使用Scrapy爬取quotes26
3.3.1创建Scrapy项目并新建爬虫27
3.3.2爬取和提取数据27
3.3.3通过脚本运行Scrapy爬虫29
3.3.4在同一进程下运行多个爬虫29
3.3.5简易的分布式爬虫思路30
3.3.6防止爬虫被ban31
3.4setting基本配置31
3.5Pipeline模块32
3.5.1爬取文字板块32
3.5.2编写Pipeline模块35
3.5.3通过Pipeline将数据写入MongoDB数据库36
3.5.4ImagesPipeline处理图片37
3.5.5FilePipeline下载文件40
3.6Middleware中间件41
3.6.1DownloaderMiddleware41
3.6.2随机请求头中间件42
3.6.3更换代理IP中间件45
3.6.4通过DownloaderMiddleware使用Selenium46
3.6.5SpiderMiddleware47
3.7新功能拓展48
3.7.1信号signals48
3.7.2自定义拓展51
第4章 数据存储——数据库的选择
4.1MySQL数据库53
4.1.1MySQL的安装53
4.1.2几款可视化工具54
4.1.3数据库连接55
4.1.4数据库插入操作55
4.1.5数据库查询56
4.1.6数据库更新操作56
4.1.7爬取写入数据库57
4.2MongoDB数据库58
4.2.1MongoDB安装58
4.2.2连接数据库59
4.2.3查询数据库59
4.2.4插入和更新数据库59
4.2.5爬取数据并插入到MongoDB数据库中60
4.3Redis数据库60
4.3.1Redis安装60
4.3.2连接Redis数据库61
4.3.3Python操作Redis数据库61
4.3.4爬取并写入Redis做缓存62
第5章 效率为王——分布式爬虫
5.1什么是分布式爬虫64
5.1.1分布式爬虫的效率64
5.1.2实现分布式的方法64
5.2Celery65
5.2.1Celery入门65
5.2.2Celery分布式爬虫66
5.3使用Scrapy-redis的分布式爬虫67
5.3.1Scrapy-redis安装与入门67
5.3.2创建Scrapy-redis爬虫项目68
第6章 抓包的使用与分析
6.1利用抓包分析目标网站72
6.1.1如何抓包72
6.1.2网页抓包分析72
6.2手机APP抓包74
6.2.1使用fiddler抓包75
6.2.2HTTPS证书安装75
6.2.3booking手机端抓包76
第7章 Websocket通信网站爬取
7.1什么是Websocket79
7.1.1Websocket-clinet79
7.1.2Websocket-clinet简单入门79
7.2使用Websocket爬取财经网站81
第8章 验证码破解
8.1关于验证码84
8.1.1一般的验证码84
8.1.2极验验证84
8.2极验滑动验证破解85
8.2.1准备工具85
8.2.2分析滑动验证码85
8.2.3开始破解极限滑动验证码87
8.3图片验证码破解89
8.3.1准备工具89
8.3.2文字图像识别89
8.3.3识别验证码90
第9章 多线程与多进程并发爬取
9.1多线程92
9.1.1堵塞与非堵塞92
9.1.2继承threading.Thread创建类96
9.1.3多线程的锁98
9.1.4queue队列100
9.1.5线程池101
9.2多线程爬虫103
9.2.1爬虫框架103
9.2.2编写爬虫104
9.2.3以多线程方式启动105
9.3多进程107
9.3.1multiprocessing模块107
9.3.2通过Pool进程池创建进程108
9.3.3multiprocessing.Queue队列109
9.3.4multiprocessing.Pipe管道112
9.3.5multiprocessing.Lock锁113
9.4多进程爬虫114
9.4.1多进程爬取音频114
9.4.2多进程加多线程进行爬取116
第10章 爬虫接口优化
10.1Gunicorn的安装与使用119
10.2Gunicorn配置121
10.2.1配置参数121
10.2.2通过config文件启动123
第11章 使用Docker部署爬虫
11.1Docker125
11.1.1Docker的安装125
11.1.2Docker的镜像125
11.1.3构建自己的Docker镜像127
11.1.4容器使用127
11.1.5Dockerfile129
11.2爬虫部署130
11.2.1爬虫接口130
11.2.2部署爬虫接口131
第二篇实战案例
第12章 实战1:建立代理IP池
12.1爬取免费代理IP136
12.1.1爬取代理IP136
12.1.2检验代理IP138
12.2建立代理IP池138
12.2.1检验代理IP138
12.2.2Redis消息队列140
12.2.3master爬虫142
第13章 实战2:磁力链接搜索器
13.1爬取磁力搜索平台145
13.1.1磁力平台145
13.1.2slave爬虫146
13.2实现磁力搜索器148
13.2.1展示与交互148
13.2.2数据查询150
第14章 实战3:爬虫管家
14.1QQ机器人152
14.1.1qqbot152
14.1.2基本操作152
14.1.3实现自己的机器人153
14.2爬虫监控机器人153
第15章 实战4:数据可视化
15.1可视化包Pyecharts156
15.1.1Pyecharts的安装156
15.1.2地图展示数据157
15.2爬取最低价机票数据158
15.2.1破解旅游网站价格日历接口159
15.2.2爬取旅游网站160
15.2.3将数据可视化161
第16章 实战5:爬取贴吧中的邮箱
16.1爬取网站164
16.1.1爬取高校名单164
16.1.2利用正则表达式匹配号码165
16.2分析贴吧搜索页面并提取号码165
16.3使用Scrapy开始编码167
16.3.1创建贴吧Scrapy项目167
16.3.2新建爬虫并编写爬虫逻辑168
16.3.3数据处理170
第17章 实战6:批量爬取企业信息
17.1从第三方平台获取企业名172
17.2如何爬取企业详细信息174
第18章 实战7:爬取公众号历史文章
18.1分析公众号接口177
18.1.1开始抓包177
18.1.2分析接口179
18.1.3尝试请求数据179
18.2爬取公众号180
18.2.1爬取思路180
18.2.2请求接口获取文章URL180
18.2.3解析文章网页源码181
18.2.4合并代码183
第19章 实战8:高效爬取——异步爬虫
19.1异步编程186
19.1.1asyncio库186
19.1.2aiohttp库187
19.1.3访问多个URL188
19.2爬取图片189
19.2.1为函数命名189
19.2.2对网页进行解析190
19.2.3异步爬取图片190
第20章 实战9:爬取漫画网站
20.1爬取单部漫画193
20.1.1单集漫画的爬取193
20.1.2全集漫画的爬取195
20.2爬取漫画全站196
第21章 实战10:给kindle推送爬取的小说
21.1用Python发送邮件199
21.1.1纯文本邮件的发送199
21.1.2带附件邮件的发送200
21.2爬取小说201
21.2.1制作word文档201
21.2.2爬取baka-tsuki.org202
第22章 实战11:爬取游民星空壁纸
22.1星空壁纸的爬取准备205
22.2爬取壁纸206
22.2.1获取图片和下一页地址206
22.2.2爬取列表页208
22.2.3爬取高清图片资源209
第23章 综合实战:建立一个小网站
23.1Flask框架210
23.1.1写一个简单的helloword网页210
23.1.2添加html模板210
23.2Bootstrap框架212
23.2.1使用Bootstrap框架213