Python爬虫开发实战教程 微课版
作者:蜗牛学院,卿淳俊,邓强 编著
出版时间: 2020年版
内容简介
本书以Python语言为基础描述了网络爬虫的基础知识,用大量实际案例及代码,向读者介绍了编写网络爬虫所需要的相关知识要点及项目实践的相关技巧。本书共5章,介绍了爬虫的基本结构及工作流程、抓包工具、模拟网络请求、网页解析、去重策略、常见反爬措施,以及大型商业爬虫框架Scrapy的应用,最后介绍了数据分析及可视化的相关基础知识。
目录
第 1章 静态网页爬虫 1
1.1 爬虫的基本概念和工作原理 2
1.1.1 什么是网络爬虫 2
1.1.2 爬虫的结构与工作流程 3
1.2 爬虫抓包分析 4
1.2.1 使用Chrome浏览器进行抓包分析 4
1.2.2 使用Fiddler进行抓包分析 11
1.3 Requests库的基本使用方法 22
1.3.1 安装Requests库 22
1.3.2 通过Requests发送GET请求 22
1.3.3 在GET请求中添加参数 29
1.3.4 发送POST请求 29
1.3.5 获取请求的状态码 30
1.3.6 指定请求时使用的headers及动态更新headers 31
1.3.7 指定Cookies和动态更新Cookies 32
1.3.8 使用session对象保持会话状态 34
1.4 网页解析利器XPath、CSS-Selector和正则表达式语法 35
1.4.1 XPath的基本语法及使用 35
1.4.2 常见相对路径引用 37
1.4.3 XPath进阶应用 38
1.4.4 CSS-Selector的基本语法及使用 40
1.4.5 正则表达式的基本语法及使用 41
1.5 常见爬虫爬取策略 43
1.5.1 宽度优先搜索策略 44
1.5.2 深度优先搜索策略 45
1.6 常见网页URL和内容去重策略 48
1.6.1 去重策略的使用场景 48
1.6.2 常见爬虫去重策略 48
1.6.3 BloomFilter算法 49
1.6.4 内容去重策略的实现 52
1.7 实战:编写一个基于静态网页的爬虫 52
第 2章 常见反爬措施及解决方案 65
2.1 常见反爬手段——身份验证 66
2.1.1 使用登录的Cookies获取数据 66
2.1.2 模拟登录请求 71
2.1.3 使用Selenium模拟登录 74
2.2 常见反爬手段——验证码 76
2.2.1 验证码反爬原理 76
2.2.2 常见验证码类型 77
2.2.3 常见验证码处理方式 77
2.3 常见反爬手段——速度、数量限制 87
2.3.1 服务器对速度、数量限制反爬的原理和手段 87
2.3.2 针对反爬限速、频次限制的突破手段 87
2.4 自己动手搭建IP代理池 88
2.4.1 创建IP代理池的基本要求 89
2.4.2 IP代理池基本架构 89
2.4.3 相关组件的安装 90
2.4.4 同步I/O和异步I/O的概念和区别 97
2.4.5 在Python中如何实现异步I/O 98
2.5 常见反爬手段——异步动态请求 105
2.6 常见反爬手段——JS加密请求参数 110
第3章 自己动手编写一个简单的爬虫框架 122
3.1 简单爬虫框架的结构 123
3.2 编写URL管理器 124
3.3 编写资源下载器 125
3.4 编写HTML解析器 126
3.5 编写资源存储器 128
3.6 编写爬虫调度器 128
第4章 Scrapy框架应用 131
4.1 Scrapy的相关概念与原理 132
4.2 安装Scrapy框架 134
4.2.1 在Windows中安装Scrapy 134
4.2.2 在Linux中安装Scrapy 136
4.2.3 在MacOS中安装Scrapy 136
4.3 创建第 一个Scrapy项目 137
4.3.1 创建Scrapy项目 137
4.3.2 Scrapy项目的结构 137
4.3.3 定义爬虫文件 138
4.4 在PyCharm中运行和调试Scrapy项目 142
4.4.1 在PyCharm中运行Scrapy项目 143
4.4.2 在PyCharm中调试Scrapy项目 144
4.5 使用Scrapy进行请求间数据传递 146
4.6 Scrapy命令行用法详解 152
4.7 常用Scrapy组件的用法 160
4.7.1 定义数据Item 160
4.7.2 利用Item Pipeline将数据持久化 162
4.7.3 编写Item Pipeline 163
4.7.4 中间件的用法 173
4.8 Scrapy中对同一项目不同的Spider启用不同的配置 178
4.9 Scrapy分布式爬虫的运行原理 182
4.9.1 实现多机分布式爬取的关键 182
4.9.2 源码解读之connection.py 184
4.9.3 源码解读之dupefilter.py 184
4.9.4 源码解读之pipelines.py 185
4.9.5 源码解读之queue.py 186
4.9.6 源码解读之scheduler.py 187
4.9.7 源码解读之spider.py 188
4.10 利用Scrapy+Redis进行分布式爬虫
实践 190
4.10.1 运行环境准备 190
4.10.2 修改Scrapy项目配置及相关源码 191
4.10.3 部署到不同的从机中 192
4.10.4 其他可选配置参数 192
第5章 爬虫数据分析及可视化 193
5.1 安装Jupyter Notebook和Highcharts库 194
5.1.1 Jupyter Notebook 194
5.1.2 使用Jupyter Notebook的原因 195
5.1.3 Jupyter Notebook的安装和配置 195
5.1.4 安装过程中可能遇到的错误 196
5.1.5 Jupyter Notebook的常用设置 198
5.1.6 Highcharts库的安装和配置 198
5.2 熟悉Jupyter Notebook的基本用法 199
5.2.1 创建一个新的Notebook文件 199
5.2.2 在Jupyter Notebook中运行代码 200
5.2.3 在Jupyter Notebook中编写Markdown格式文档 202
5.3 熟悉Highcharts库的基本用法 203
5.3.1 Highcharts的基本组成 203
5.3.2 Python charts库的基本使用 204
5.3.3 charts的option属性设置 207
5.4 利用Jupyter Notebook和Highcharts实现数据分析和展示 209
5.4.1 数据分析的流程 210
5.4.2 数据分析实践 210
5.5 利用词云实现可视化效果 213
5.5.1 jieba分词器 213
5.5.2 jieba分词器的特点及安装方法 214
5.5.3 wordcloud词云组件 215
5.5.4 利用蜗牛笔记数据生成词云 218
参考文献 222