第1篇 快速入门篇 2
第1章 Python基础 2
1.1 Python环境搭建 3
1.1.1 Windows系统下的Python环境安装与配置 3
1.1.2 Linux系统下的Python环境安装 7
1.1.3 Mac OS X系统搭建Python 3 11
1.1.4 IDE开发工具介绍 13
1.2 Python编程入门 16
1.2.1第一个Python程序 16
1.2.2 Python注释 17
1.2.3数据类型和变量 17
1.2.4字符串和编码 19
1.2.5列表 23
1.2.6元组 24
1.2.7字典 25
1.2.8条件语句 25
1.2.9循环语句 26
1.2.10函数 29
1.2.11类 30
1.3新手实训 33
1.4新手问答 35
本章小结 35
第2章 Python爬虫入门 36
2.1爬虫的分类 37
2.1.1通用网络爬虫 37
2.1.2聚焦网络爬虫 37
2.1.3增量式网络爬虫 37
2.1.4深层网络爬虫 38
2.2爬虫的基本结构和工作流程 38
2.3爬虫策略 39
2.3.1深度优先遍历策略 39
2.3.2宽度优先遍历策略 40
2.3.3大站优先策略 40
2.3.4最佳优先搜索策略 40
2.4HTTP的基本原理 40
2.4.1 URI和URL介绍 40
2.4.2超文本 41
2.4.3 HTTP和HTTPS 42
2.4.4 HTTP的请求过程 43
2.5网页基础 45
2.5.1网页的组成 46
2.5.2网页的结构 48
2.6 Session和Cookie 49
2.6.1 Session和Cookie的基本原理 49
2.6.2 Session和Cookie的区别 51
2.6.3常见误区 51
2.7新手实训 51
2.8新手问答 54
本章小结 55
第3章 基本库的使用 56
3.1 urllib 57
3.1.1 urlopen() 57
3.1.2简单抓取网页 57
3.1.3设置请求超时 58
3.1.4使用data参数提交数据 58
3.1.5 Request 59
3.1.6简单使用Request 60
3.1.7 Request高级用法 61
3.1.8使用代理 62
3.1.9认证登录 62
3.1.10 Cookie设置 63
3.1.11 HTTPResponse 63
3.1.12错误解析 64
3.2 requests 64
3.2.1 requests模块的安装 65
3.2.2 requests模块的使用方法介绍 65
3.2.3 requests.get() 65
3.2.4 requests库的异常 67
3.2.5 requests.head() 68
3.2.6 requests.post() 68
3.2.7 requests.put()和requests.patch() 68
3.3 re正则使用 69
3.3.1 re.match函数 69
3.3.2 re.search函数 70
3.3.3 re.match与re.search的区别 71
3.3.4检索和替换 72
3.3.5 re.compile函数 72
3.3.6 findall函数 74
3.4 XPath 75
3.4.1 XPath的使用方法 75
3.4.2利用实例讲解XPath的使用 76
3.4.3获取所有节点 77
3.4.4获取子节点 77
3.4.5获取文本信息 77
3.5新手实训 78
3.6新手问答 81
本章小结 82
第4章 Ajax数据抓取 83
4.1 Ajax简介 84
4.1.1实例引入 84
4.1.2 Ajax的基本原理 85
4.1.3 Ajax方法分析 88
4.2使用Python模拟Ajax请求数据 91
4.2.1分析请求 91
4.2.2分析响应结果 92
4.2.3编写代码模拟抓取 92
4.3新手实训 93
4.4新手问答 96
本章小结 96
第5章 动态渲染页面爬取 97
5.1 Selenium的使用 98
5.1.1安装Selenium库 98
5.1.2 Selenium定位方法 99
5.1.3控制浏览器操作 101
5.1.4 WebDriver常用方法 102
5.1.5其他常用方法 104
5.1.6鼠标键盘事件 104
5.1.7获取断言信息 107
5.1.8设置元素等待 109
5.1.9多表单切换 110
5.1.10下拉框选择 112
5.1.11调用JavaScript代码 113
5.1.12窗口截图 113
5.1.13无头模式 114
5.2 Splash的基本使用 115
5.2.1 Splash的功能介绍 115
5.2.2 Docker的安装 115
5.2.3 Splash的安装 122
5.2.4初次实例体验 123
5.2.5 Splash Scripts 125
5.3新手实训 127
5.4新手问答 131
本章小结 132
第6章 代理的设置与使用 133
6.1代理设置 134
6.1.1 urllib代理设置 134
6.1.2 requests代理设置 134
6.1.3 Selenium代理设置 135
6.2代理池构建 136
6.2.1获取IP 137
6.2.2验证代理是否可用 138
6.2.3使用代理池 139
6.3付费代理的使用 140
6.3.1讯代理的使用 140
6.3.2阿布云代理的使用 142
6.4 ADSL拨号代理的搭建 145
6.4.1 ADSL简介 145
6.4.2购买动态拨号VPS云主机 145
6.4.3测试拨号 147
6.4.4设置代理服务器 150
6.4.5动态获取IP 152
6.4.6使用Python实现拨号 153
6.5新手问答 155
本章小结 156
第7章 验证码的识别与破解 157
7.1普通图形验证码的识别 158
7.1.1使用OCR进行简单识别 158
7.1.2对验证码进行预处理 159
7.1.3 CNN验证码识别 163
7.2极验滑动验证码的破解 164
7.2.1分析思路 164
7.2.2使用Selenium实现模拟淘宝登录的拖动验证 165
7.2.3验证修改代码 166
7.3极验滑动拼图验证码破解 168
7.3.1分析思路 168
7.3.2代码实现拖动拼接 169
7.3.3运行测试 174
7.4新手问答 174
本章小结 175
第8章 App数据抓取 176
8.1 Fiddler的基本使用 177
8.1.1 Fiddler设置 177
8.1.2手机设置 178
8.1.3抓取猎聘网App请求包 180
8.2 Charles的基本使用 182
8.2.1 Charles安装 183
8.2.2证书设置 184
8.2.3手机端配置 186
8.2.4抓包 188
8.2.5分析 192
8.2.6重发 195
8.3 Appium的基本使用 196
8.3.1安装Appium 196
8.3.2启动App 200
8.3.3 appPackage和appActivity参数的获取方法 209
8.3.4 Python代码驱动App 211
8.3.5常用API方法 213
8.4新手问答 217
本章小结 217
第9章 数据存储 218
9.1文件存储 219
9.1.1 TEXT文件存储 219
9.1.2 JSON文件存储 220
9.1.3 CSV文件存储 221
9.1.4 Excel文件存储 222
9.2数据库存储 224
9.2.1 MySQL存储 224
9.2.2 MongoDB 228
9.2.3 Redis存储 231
9.2.4 PostgreSQL 233
9.3新手实训 236
9.4新手问答 239
本章小结 240
第2篇 技能进阶篇 242
第10章 常用爬虫框架 242
10.1 PySpider框架 243
10.1.1安装PySpider 243
10.1.2 PySpider的基本功能 243
10.1.3 PySpider架构 243
10.1.4第一个PySpider爬虫 244
10.1.5保存数据到MySQL数据库 250
10.2 Scrapy框架 252
10.2.1安装Scrapy 253
10.2.2创建项目 253
10.2.3定义Item 254
10.2.4编写第一个爬虫(Spider) 254
10.2.5运行爬取 255
10.2.6提取Item 255
10.2.7在Shell中尝试Selector选择器 256
10.2.8提取数据 257
10.2.9使用Item 258
10.2.10 Item Pipeline 260
10.2.11将Item写入JSON文件 260
10.2.12保存到数据库 261
10.3 Scrapy-Splash的使用 262
10.3.1新建项目 263
10.3.2配置 263
10.3.3编写爬虫 264
10.3.4运行爬虫 265
10.4新手实训 266
10.5新手问答 269
本章小结 269
第11章 部署爬虫 270
11.1 Linux系统下安装Python 3 271
11.1.1安装Python 3 271
11.1.2安装virtualenv 272
11.2 Docker的使用 273
11.2.1 Docker Hello World 273
11.2.2运行交互式的容器 273
11.2.3启动容器(后台模式) 274
11.2.4停止容器 274
11.3 Docker安装Python 274
11.3.1 docker pull python:3.5 275
11.3.2通过Dockerfile构建 275
11.3.3使用python镜像 277
11.4 Docker安装MySQL 277
本章小结 278
第12章 数据分析 279
12.1 NumPy的使用 280
12.1.1 NumPy安装 280
12.1.2 NumPy ndarray对象 280
12.1.3 NumPy数据类型 282
12.1.4数组属性 285
12.1.5 NumPy创建数组 288
12.1.6 NumPy切片和索引 290
12.1.7数组的运算 291
12.1.8 NumPy Matplotlib 292
12.2 Pandas的使用 296
12.2.1从CSV文件中读取数据 296
12.2.2向CSV文件中写入数据 297
12.2.3 Pandas数据帧(DataFrame) 298
12.2.4 Pandas函数应用 301
12.2.5 Pandas排序 303
12.2.6 Pandas聚合 306
12.2.7 Pandas可视化 309
12.3 pyecharts的使用 311
12.3.1绘制第一个图表 311
12.3.2使用主题 313
12.3.3使用pyecharts-snapshot插件 313
12.3.4图形绘制过程 313
12.3.5多次显示图表 314
12.3.6 Pandas&NumPy简单示例 314
12.4新手实训 315
12.5新手问答 316
本章小结 316
第3篇 项目实战篇 318
第13章 爬虫项目实战 318
13.1实战一:Selenium+XPath爬取简书 319
13.1.1打开简书首页分析 319
13.1.2爬取思路 321
13.1.3编写爬虫代码 321
13.1.4实例总结 325
13.2实战二:使用requests爬取腾讯人口迁徙数据 326
13.2.1分析网页结构 326
13.2.2爬取思路 328
13.2.3动手编码实现爬取 328
13.2.4实例总结 330
13.3实战三:Scrapy爬取豆瓣电影 330
13.3.1分析豆瓣电影网页结构 330
13.3.2爬取的数据结构定义(items.py) 332
13.3.3爬虫器(MovieSpider.py) 332
13.3.4 pipeline管道保存数据 333
13.3.5将数据存储到MySQL数据库 333
13.3.6实例总结 334
13.4实战四:使用Selenium多线程异步爬取同城旅游网机票价格信息 334
13.4.1分析同城旅游网 334
13.4.2编码实现抓取数据 336
13.4.3实例总结 343
13.5实战五:数据分析Dessert Apples下12种苹果全年最高、最低和平均销量 343
13.5.1 Pandas读取数据 344
13.5.2获取索引,drop_duplicates()去重 344
13.5.3实现分析数据 345
13.5.4实例总结 346
13.6实战六:中国南方航空机票信息爬取 346
13.6.1分析中国南方航空网 347
13.6.2编写代码进行爬取 349
13.6.3实例总结 352
本章小结 352
附录 Python常见面试题精选 353