第1章 初识Scrapy 1
1.1 网络爬虫是什么 1
1.2 Scrapy简介及安装 2
1.3 编写第一个Scrapy爬虫 3
1.3.1 项目需求 4
1.3.2 创建项目 4
1.3.3 分析页面 5
1.3.4 实现Spider 6
1.3.5 运行爬虫 8
1.4 本章小结 11
第2章 编写Spider 12
2.1 Scrapy框架结构及工作原理 12
2.2 Request和Response对象 14
2.2.1 Request对象 15
2.2.2 Response对象 16
2.3 Spider开发流程 18
2.3.1 继承scrapy.Spider 19
2.3.2 为Spider命名 20
2.3.3 设定起始爬取点 20
2.3.4 实现页面解析函数 22
2.4 本章小结 22
第3章 使用Selector提取数据 23
3.1 Selector对象 23
3.1.1 创建对象 24
3.1.2 选中数据 25
3.1.3 提取数据 26
3.2 Response内置Selector 28
3.3 XPath 29
3.3.1 基础语法 30
3.3.2 常用函数 35
3.4 CSS选择器 36
3.5 本章小结 40
第4章 使用Item封装数据 41
4.1 Item和Field 42
4.2 拓展Item子类 44
4.3 Field元数据 44
4.4 本章小结 47
第5章 使用Item Pipeline处理数据 48
5.1 Item Pipeline 48
5.1.1 实现Item Pipeline 49
5.1.2 启用Item Pipeline 50
5.2 更多例子 51
5.2.1 过滤重复数据 51
5.2.2 将数据存入MongoDB 54
5.3 本章小结 57
第6章 使用LinkExtractor提取链接 58
6.1 使用LinkExtractor 59
6.2 描述提取规则 60
6.3 本章小结 65
第7章 使用Exporter导出数据 66
7.1 指定如何导出数据 67
7.1.1 命令行参数 67
7.1.2 配置文件 69
7.2 添加导出数据格式 70
7.2.1 源码参考 70
7.2.2 实现Exporter 72
7.3 本章小结 74
第8章 项目练习 75
8.1 项目需求 77
8.2 页面分析 77
8.3 编码实现 83
8.4 本章小结 88
第9章 下载文件和图片 89
9.1 FilesPipeline和ImagesPipeline 89
9.1.1 FilesPipeline使用说明 90
9.1.2 ImagesPipeline使用说明 91
9.2 项目实战:爬取matplotlib例子源码文件 92
9.2.1 项目需求 92
9.2.2 页面分析 94
9.2.3 编码实现 96
9.3 项目实战:下载360图片 103
9.3.1 项目需求 104
9.3.2 页面分析 104
9.3.3 编码实现 107
9.4 本章小结 109
第10章 模拟登录 110
10.1 登录实质 110
10.2 Scrapy模拟登录 114
10.2.1 使用FormRequest 114
10.2.2 实现登录Spider 117
10.3 识别验证码 119
10.3.1 OCR识别 119
10.3.2 网络平台识别 123
10.3.3 人工识别 127
10.4 Cookie登录 128
10.4.1 获取浏览器Cookie 128
10.4.2 CookiesMiddleware源码分析 129
10.4.3 实现BrowserCookies-Middleware 132
10.4.4 爬取知乎个人信息 133
10.5 本章小结 135
第11章 爬取动态页面 136
11.1 Splash渲染引擎 140
11.1.1 render.html端点 141
11.1.2 execute端点 142
11.2 在Scrapy中使用Splash 145
11.3 项目实战:爬取toscrape中的名人名言 146
11.3.1 项目需求 146
11.3.2 页面分析 146
11.3.3 编码实现 147
11.4 项目实战:爬取京东商城中的书籍信息 149
11.4.1 项目需求 149
11.4.2 页面分析 149
11.4.3 编码实现 152
11.5 本章小结 154
第12章 存入数据库 155
12.1 SQLite 156
12.2 MySQL 159
12.3 MongoDB 165
12.4 Redis 169
12.5 本章小结 173
第13章 使用HTTP代理 174
13.1 HttpProxyMiddleware 175
13.1.1 使用简介 175
13.1.2 源码分析 177
13.2 使用多个代理 179
13.3 获取免费代理 180
13.4 实现随机代理 184
13.5 项目实战:爬取豆瓣电影信息 187
13.5.1 项目需求 188
13.5.2 页面分析 189
13.5.3 编码实现 194
13.6 本章小结 198
第14章 分布式爬取 199
14.1 Redis的使用 200
14.1.1 安装Redis 200
14.1.2 Redis基本命令 201
14.2 scrapy-redis源码分析 206
14.2.1 分配爬取任务部分 207
14.2.2 汇总爬取数据部分 214
14.3 使用scrapy-redis进行分布式爬取 217
14.3.1 搭建环境 217
14.3.2 项目实战 218
14.4 本章小结 224