Python网络爬虫技术手册:基础·实战·强化

副标题:无

作   者:明日科技 编著

分类号:

ISBN:9787122400093

微信扫一扫,移动浏览光盘

简介

《Python网络爬虫技术手册:基础·实战·强化》是“计算机科学与技术手册系列”图书之一,该系列图书内容全面,以理论联系实际、能学到并做到为宗旨,以技术为核心,以案例为辅助,引领读者全面学习基础技术、代码编写方法和具体应用项目,旨在为想要进入相应领域或者已经在该领域深耕多年的技术人员提供新而全的技术性内容及案例。本书是一本侧重编程基础 实践的Python爬虫图书,从基础、实战、强化三个层次循序渐进地介绍了网络爬虫入门知识:基础篇主要讲解网络爬虫的基础内容;实战篇主要讲解目前应用广的各类数据库爬虫相关技术和案例;强化篇结合数据库、数据分析、可视化等进行大型项目综合实战练习。本书内容充实,给读者提供了较为丰富全面的技术支持和案例强化,通过各种示例将学习与应用相结合,打造轻松学习、零压力学习的环境,通过案例对所学知识进行综合应用,通过开发实际项目将网络爬虫的各项技能应用到实际工作中,帮助读者实现学以致用,快速掌握网络爬虫的各项技能。本书提供丰富的资源,包含109个实例、13个实战案例、2个应用强化项目,力求为读者打造一本基础 实战 强化一体化的、精彩的Python网络爬虫图书。本书不仅适合初学者、数据采集相关技术人员、对数据感兴趣的人员,而且适合从事其他岗位想掌握一定的数据采集能力的职场人员阅读参考。

目录


第1篇 基础篇

第1章 爬虫基础

1.1 什么是网络爬虫 2

1.2 网络爬虫的分类 3

1.3 网络爬虫的原理 3

1.4 HTTP基本原理 3

1.4.1 什么是URL 3

1.4.2 HTTP协议 4

1.4.3 HTTP与Web服务器 4

1.4.4 浏览器中的请求和响应 5

1.5 网页的基本结构 6

1.5.1 了解HTML 6

1.5.2 了解CSS 6

1.5.3 了解JavaScript 8



第2章 搭建网络爬虫开发环境

2.1 Anaconda的安装 10

2.2 下载与安装PyCharm 13

2.3 配置PyCharm 16

2.4 测试PyCharm 18



第3章 网络请求urllib模块

3.1 了解urllib 20

3.2 发送网络请求 20

3.2.1 发送GET请求 21

实例3.1 演示常用的方法与属性 21

3.2.2 发送POST请求 22

实例3.2 发送POST请求 22

3.2.3 请求超时 22

实例3.3 处理网络超时 23

3.2.4 设置请求头 23

实例3.4 设置请求头 24

3.2.5 获取与设置Cookie 25

实例3.5 模拟登录 25

实例3.6 获取Cookie 27

实例3.7 保存Cookie文件 27

实例3.8 获取登录后页面中的信息 28

3.2.6 代理IP的设置 29

实例3.9 设置代理IP 29

3.3 处理请求异常 29

实例3.10 处理URLError异常 29

实例3.11 使用HTTPError类捕获异常 30

实例3.12 双重异常的捕获 31

3.4 解析URL 31

3.4.1 URL的拆分(urlparse、urlsplit) 31

实例3.13 使用urlparse()方法拆分URL 32

实例3.14 使用urlsplit()方法拆分URL 32

3.4.2 URL的组合(urlunparse、urlunsplit) 33

实例3.15 使用urlunparse()方法组合URL 33

实例3.16 使用urlunsplit()方法组合URL 34

3.4.3 URL的连接(urljoin) 34

实例3.17 使用urljoin()方法连接URL 34

3.4.4 URL的编码与解码(urlencode、quote、unquote) 35

实例3.18 使用urlencode()方法编码请求参数 35

实例3.19 使用quote()方法编码字符串参数 35

实例3.20 使用unquote()方法解码请求参数 36

3.4.5 URL的参数转换 36

实例3.21 使用parse_qs()方法将参数转换为字典类型 36

实例3.22 使用parse_qsl()方法将参数转换为元组所组成的列表 36

3.5 综合案例——爬取“百度热搜” 37

3.5.1 分析数据 37

3.5.2 实现网络爬虫 37

3.6 实战练习 39



第4章 网络请求urllib3模块

4.1 了解urllib3 40

4.2 发送网络请求 41

4.2.1 发送GET请求 41

实例4.1 发送GET请求 41

实例4.2 发送多个请求 41

4.2.2 发送POST请求 42

实例4.3 发送POST请求 42

4.2.3 重试请求 43

实例4.4 重试请求 43

4.2.4 获得响应内容 43

实例4.5 获取响应头信息 43

实例4.6 处理服务器返回的JSON信息 44

实例4.7 处理服务器返回二进制数据 44

4.2.5 设置请求头 45

实例4.8 设置请求头 45

4.2.6 设置超时 46

实例4.9 设置超时 46

4.2.7 设置代理IP 47

实例4.10 设置代理IP 47

4.3 上传文件 47

实例4.11 上传文本文件 47

实例4.12 上传图片文件 48

4.4 综合案例——爬取必应壁纸 48

4.4.1 分析数据 48

4.4.2 实现网络爬虫 49

4.5 实战练习 51



第5章 网络请求requests模块

5.1 基本请求方式 52

5.1.1 发送GET请求 53

实例5.1 发送GET请求不带参数 53

5.1.2 设置编码 53

实例5.2 获取网页源码 53

5.1.3 二进制数据的爬取 54

实例5.3 下载百度logo图片 54

5.1.4 发送GET(带参数)请求 54

5.1.5 发送POST请求 55

实例5.4 发送POST请求 55

5.2 高级请求方式 56

5.2.1 设置请求头 56

实例5.5 设置请求头 56

5.2.2 Cookie的验证 57

实例5.6 模拟豆瓣登录 57

5.2.3 会话请求 58

实例5.7 会话请求 58

5.2.4 验证请求 58

实例5.8 验证请求 59

5.2.5 网络超时与异常 59

实例5.9 网络超时与异常 59

实例5.10 判断网络异常 60

5.2.6 文件上传 60

实例5.11 上传图片文件 60

5.2.7 代理的应用 61

实例5.12 使用代理IP发送请求 61

5.3 综合案例——爬取糗事百科(视频) 62

5.3.1 分析数据 62

5.3.2 实现爬虫 63

5.4 实战练习 64



第6章 requests模块的两大扩展

6.1 安装requests-cache模块 65

6.2 爬虫缓存的应用 66

6.3 多功能requests-html模块 68

6.3.1 发送网络请求 68

6.3.2 提取数据 70

实例6.1 爬取即时新闻 70

6.3.3 获取动态渲染的数据 73

实例6.2 获取动态渲染的数据 73

6.4 综合案例——爬取百度天气 75

6.4.1 分析数据 75

6.4.2 实现爬虫 76

6.5 实战练习 77



第7章 正则表达式解析

7.1 通过search()匹配字符串 78

7.1.1 匹配指定开头的字符串 79

实例7.1 搜索个以“mr_”开头的字符串 79

7.1.2 可选匹配字符串中的内容 79

实例7.2 可选匹配字符串中的内容 79

7.1.3 使用“\b”匹配字符串的边界 80

实例7.3 使用“\b”匹配字符串的边界 80

7.2 通过findall()匹配字符串 80

7.2.1 匹配所有以指定字符开头的字符串 81

实例7.4 匹配所有以“mr_”开头的字符串 81

7.2.2 贪婪匹配法 81

实例7.5 使用“.*”实现贪婪匹配字符串 81

7.2.3 非贪婪匹配法 82

实例7.6 使用“.*?”实现非贪婪匹配字符串 82

7.3 处理字符串 83

7.3.1 使用sub()方法替换字符串 83

实例7.7 使用sub()方法替换字符串 83

7.3.2 使用split()方法分割字符串 84

实例7.8 使用split()方法分割字符串 84

7.4 综合案例——爬取QQ音乐热歌榜 85

7.4.1 分析数据 85

7.4.2 实现爬虫 85

7.5 实战练习 86



第8章 lxml解析模块

8.1 了解XPath 87

8.2 XPath的基本操作 88

8.2.1 HTML的解析 88

实例8.1 解析本地的HTML文件 88

实例8.2 解析字符串类型的HTML代码 88

实例8.3 解析服务器返回的HTML代码 89

8.2.2 获取所有标签 90

实例8.4 获取HTML代码的所有标签 90

8.2.3 获取子标签 91

实例8.5 获取一个标签中的子标签 91

实例8.6 获取子孙标签 92

8.2.4 获取父标签 92

实例8.7 获取一个标签的父标签 92

8.2.5 获取文本 93

实例8.8 获取HTML代码中的文本 93

8.2.6 属性匹配 94

实例8.9 使用“[@...]”实现标签属性的匹配 94

实例8.10 属性多值匹配 94

实例8.11 一个标签中多个属性的匹配 95

8.2.7 获取属性值 96

实例8.12 获取属性所对应的值 96

实例8.13 使用索引按序获取属性对应的值 97

8.2.8 使用标签轴获取标签内容 98

实例8.14 使用标签轴的方式获取标签内容 98

8.3 综合案例——爬取豆瓣新书速递 99

8.3.1 分析数据 99

8.3.2 实现爬虫 99

8.4 实战练习 100



第9章 BeautifulSoup解析模块

9.1 BeautifulSoup的基础应用 101

9.1.1 安装BeautifulSoup 101

9.1.2 解析器的区别 102

9.1.3 解析HTML 103

实例9.1 解析HTML代码 103

9.2 获取标签内容 103

9.2.1 获取标签对应的代码 104

实例9.2 获取标签对应的代码 104

9.2.2 获取标签属性 105

实例9.3 获取标签属性 105

9.2.3 获取标签内的文本 106

9.2.4 嵌套获取标签内容 106

实例9.4 嵌套获取标签内容 106

9.2.5 关联获取 107

实例9.5 获取子标签 107

实例9.6 获取子孙标签 108

实例9.7 获取父标签 109

实例9.8 获取兄弟标签 109

9.3 利用方法获取内容 111

9.3.1 find_all()方法 111

实例9.9 find_all(name)通过标签名称获取内容 111

实例9.10 find_all(attrs)通过指定属性获取内容 112

实例9.11 find_all(text)获取标签中的文本 112

9.3.2 find()方法 113

实例9.12 获取个匹配的标签内容 113

9.3.3 其他方法 114

9.4 CSS选择器 114

实例9.13 使用CSS选择器获取标签内容 115

9.5 综合案例——爬取百度贴吧(热议榜) 116

9.5.1 分析数据 116

9.5.2 实现爬虫 116

9.6 实战练习 117



第10章 爬取动态渲染的数据

10.1 selenium模块 118

10.1.1 配置selenium环境 118

10.1.2 下载浏览器驱动 119

10.1.3 selenium的应用 119

实例10.1 获取商品信息 119

10.1.4 selenium的常用方法 120

10.2 Splash服务 121

10.2.1 搭建Splash环境 122

10.2.2 Splash的API接口 123

实例10.2 获取百度首页logo图片的链接 123

实例10.3 获取百度首页截图 124

实例10.4 获取请求页面的json信息 125

10.2.3 自定义lua脚本 125

实例10.5 获取百度渲染后的HTML代码 125

10.3 综合案例——爬取豆瓣阅读(连载榜) 127

10.3.1 分析数据 127

10.3.2 实现爬虫 128

10.4 实战练习 128



第11章 数据清洗与文件存储

11.1 使用pandas进行数据清洗 130

11.1.1 常见的两种数据结构 130

11.1.2 pandas数据的基本操作 134

11.1.3 处理NaN数据 138

11.1.4 重复数据的筛选 140

11.2 常见文件的基本操作 142

11.2.1 存取TXT文件 142

实例11.1 TXT文件存储 143

实例11.2 读取message.txt文件中的前9个字符 143

实例11.3 从文件的第14个字符开始读取8个字符 144

实例11.4 读取一行 144

实例11.5 读取全部行 145

11.2.2 存取CSV文件 146

11.2.3 存取Excel文件 148

11.3 综合案例——爬取豆瓣小组(讨论精选) 148

11.3.1 分析数据 149

11.3.2 实现爬虫 149

11.4 实战练习 149



第12章 数据库存储

12.1 SQLite数据库 151

12.1.1 创建数据库文件 151

12.1.2 操作SQLite 152

12.2 MySQL数据库 153

12.2.1 下载MySQL 153

12.2.2 安装MySQL服务器 154

12.2.3 配置MySQL 158

12.2.4 安装PyMySQL数据库操作模块 159

12.2.5 数据库的连接 160

实例12.1 连接数据库 160

12.2.6 数据表的创建 160

实例12.2 创建数据表 161

12.2.7 数据表的基本操作 161

实例12.3 操作数据表 161

12.3 综合案例——爬取下厨房(家常菜单) 162

12.3.1 分析数据 162

12.3.2 实现爬虫 162

12.4 实战练习 164



第13章 App抓包

13.1 下载与安装Charles抓包工具 165

13.2 PC端证书的安装 167

13.3 设置SSL代理 169

13.4 网络配置 169

13.5 手机证书的安装 170

13.6 综合案例——抓取手机微信新闻的地址 172

13.7 实战练习 173



第14章 验证码识别

14.1 字符验证码 174

14.1.1 配置OCR 174

14.1.2 下载验证码图片 175

实例14.1 下载验证码图片 175

14.1.3 识别图片验证码 176

实例14.2 识别图片验证码 176

14.2 第三方验证码识别 178

实例14.3 第三方打码平台 178

14.3 滑动拼图验证码 181

实例14.4 滑动拼图验证码 181

14.4 综合案例——识别随机生成的验证码 182

14.5 实战练习 183



第15章 Scrapy爬虫框架的基本应用

15.1 了解Scrapy爬虫框架 184

15.2 配置Scrapy爬虫框架 185

15.2.1 使用Anaconda安装Scrapy 185

15.2.2 Windows系统下配置Scrapy 186

15.3 Scrapy的基本用法 187

15.3.1 创建项目 187

15.3.2 创建爬虫 188

实例15.1 爬取网页代码并保存HTML文件 188

15.3.3 提取数据 190

实例15.2 使用XPath表达式获取多条信息 191

实例15.3 翻页提取数据 191

实例15.4 包装结构化数据 192

15.4 综合案例——爬取NBA得分排名 192

15.4.1 分析数据 193

15.4.2 实现爬虫 193

15.5 实战练习 194



第16章 Scrapy爬虫框架的高级应用

16.1 编写Item Pipeline 195

16.1.1 Item Pipeline的核心方法 195

16.1.2 将信息存储到数据库中 196

实例16.1 将数据存储至数据库 196

16.2 文件下载 199

实例16.2 下载外设商品图片 200

16.3 自定义中间件 201

16.3.1 设置随机请求头 201

实例16.3 设置随机请求头 202

16.3.2 设置Cookies 203

实例16.4 通过Cookies模拟自动登录 204

16.3.3 设置代理IP 205

实例16.5 随机代理中间件 206

16.4 综合案例——爬取NBA球员资料 207

16.4.1 分析数据 207

16.4.2 实现爬虫 208

16.5 实战练习 211



第2篇 实战篇

第17章 基于正则表达式爬取编程e学网视频(requests re)

17.1 案例效果预览 213

17.2 案例准备 214

17.3 业务流程 214

17.4 实现过程 214

17.4.1 查找视频页面 214

17.4.2 分析视频地址 215

17.4.3 实现视频下载 215



第18章 基于正则表达式爬取免费代理IP(requests pandas re random)

18.1 案例效果预览 217

18.2 案例准备 218

18.3 业务流程 218

18.4 实现过程 219

18.4.1 分析请求地址 219

18.4.2 确认数据所在位置 219

18.4.3 爬取代理IP并保存 220

18.4.4 检测代理IP 221



第19章 基于beautifulsoup4爬取酷狗TOP500音乐榜单(requests bs4 time random)

19.1 案例效果预览 224

19.2 案例准备 225

19.3 业务流程 225

19.4 实现过程 225

19.4.1 分析每页的请求地址 225

19.4.2 分析信息所在标签位置 226

19.4.3 编写爬虫代码 227



第20章 基于beautifulsoup4爬取段子网(requests beautifulsoup4 time random)

20.1 案例效果预览 229

20.2 案例准备 230

20.3 业务流程 230

20.4 实现过程 230

20.4.1 分析每页请求地址 230

20.4.2 分析详情页请求地址 231

20.4.3 确认段子各种信息的HTML代码位置 232

20.4.4 编写爬虫代码 232



第21章 基于beautifulsoup4爬取汽车之家图片(beautifulsoup4 Pillow PyQt5 urllib)

21.1 案例效果预览 234

21.2 案例准备 235

21.3 业务流程 235

21.4 实现过程 236

21.4.1 登录窗体 236

21.4.2 设计主窗体 237

21.4.3 编写爬虫 237

21.4.4 启动爬虫 239

21.4.5 查看原图 241



第22章 使用多进程爬取电影资源(requests bs4 multiprocessing re time)

22.1 案例效果预览 242

22.2 案例准备 242

22.3 业务流程 243

22.4 实现过程 243

22.4.1 分析请求地址 243

22.4.2 爬取电影详情页地址 244

22.4.3 爬取电影信息与下载地址 245



第23章 基于多进程实现二手房数据查询(requests_html pandas matplotlib multiprocessing)

23.1 案例效果预览 248

23.2 案例准备 249

23.3 业务流程 249

23.4 实现过程 250

23.4.1 确认二手房数据位置 250

23.4.2 二手房数据的爬取 251

23.4.3 数据可视化显示 253



第24章 基于动态渲染页面爬取图书销量排行榜(requests_html sqlite3 os)

24.1 案例效果预览 256

24.2 案例准备 257

24.3 业务流程 257

24.4 实现过程 257

24.4.1 分析请求地址 257

24.4.2 确认数据在网页HTML代码中的位置 257

24.4.3 编写爬虫程序 258



第25章 爬取中关村在线中的手机数据(requests_html pymysql random time)

25.1 案例效果预览 260

25.2 案例准备 260

25.3 业务流程 261

25.4 实现过程 261

25.4.1 分析手机主页中每页地址 261

25.4.2 分析每个手机的详情页地址 262

25.4.3 确认详情页手机数据位置 262

25.4.4 创建MySQL数据表 262

25.4.5 编写爬虫程序 263



第26章 基于异步请求爬取北、上、广、深租房信息(requests lxml pandas aiohttp asyncio)

26.1 案例效果预览 267

26.2 案例准备 267

26.3 业务流程 268

26.4 实现过程 268

26.4.1 获取租房信息总页数 268

26.4.2 确认数据所在的HTML代码位置 271

26.4.3 编写爬虫提取数据 272



第27章 基于XPath爬取豆瓣电影Top250(requests lxml time random)

27.1 案例效果预览 274

27.2 案例准备 275

27.3 业务流程 275

27.4 实现过程 275

27.4.1 分析请求地址 275

27.4.2 分析信息位置 276

27.4.3 爬虫代码的实现 277



第28章 分布式爬取新闻数据(scrapy pymysql scrapy-redis正则表达式)

28.1 案例效果预览 279

28.2 案例准备 280

28.3 业务流程 280

28.4 实现过程 280

28.4.1 Redis数据库的安装 280

28.4.2 安装scrapy-redis模块 281

28.4.3 分析请求地址 282

28.4.4 创建数据表(MySQL) 282

28.4.5 创建Scrapy项目 283

28.4.6 分布式爬虫的启动 286



第29章 微信智能机器人(Flask 小米球ngrok)

29.1 案例效果预览 290

29.2 案例准备 291

29.3 业务流程 291

29.4 微信公众平台开发 291

29.4.1 注册订阅号 291

29.4.2 公众号基本配置 292

29.5 内网穿透工具 293

29.5.1 内网穿透工具简介 293

29.5.2 下载安装 293

29.5.3 测试外网域名 294

29.6 爬取糗事百科笑话 295

29.6.1 页面分析 295

29.6.2 随机爬取一条笑话 295

29.7 爬取天气信息 296

29.7.1 页面分析 296

29.7.2 爬取天气信息 297

29.8 微信智能机器人的实现 298

29.8.1 校验签名 298

29.8.2 填写配置信息 299

29.8.3 接收文本消息 299

29.8.4 整合笑话和天气功能 300



第3篇 强化篇

第30章 电商管家(PyQt5 pyqt5-tools requests pymysql matplotlib)

30.1 系统需求分析 303

30.1.1 系统概述 303

30.1.2 系统可行性分析 304

30.1.3 系统用户角色分配 304

30.1.4 功能性需求分析 304

30.1.5 非功能性需求分析 304

30.2 系统设计 304

30.2.1 系统功能结构 304

30.2.2 系统业务流程 305

30.2.3 系统预览 305

30.3 系统开发 306

30.3.1 开发工具准备 306

30.3.2 文件夹组织结构 306

30.4 主窗体的UI设计 306

30.4.1 主窗体的布局 306

30.4.2 主窗体显示效果 308

30.5 设计数据库表结构 308

30.6 爬取数据 309

30.6.1 获取商品热卖排行信息 309

30.6.2 获取价格信息 313

30.6.3 获取评价信息 314

30.6.4 定义数据库操作文件 316

30.7 主窗体的数据展示 319

30.7.1 显示前10名热卖榜图文信息 319

30.7.2 显示关注商品列表 322

30.7.3 显示商品分类比例饼图 327

30.8 外设产品热卖榜 330

30.9 商品预警 332

30.9.1 关注商品中、差评预警 332

30.9.2 关注商品价格变化预警 334

30.9.3 更新关注商品信息 336

30.10 系统功能 337



第31章 火车票智能分析工具(PyQt5 matplotlib requests json sys time)?

31.1 系统需求分析 339

31.1.1 系统概述 339

31.1.2 系统可行性分析 340

31.1.3 系统用户角色分配 340

31.1.4 功能性需求分析 340

31.1.5 非功能性需求分析 340

31.2 系统设计 341

31.2.1 系统功能结构 341

31.2.2 系统业务流程 341

31.2.3 系统预览 341

31.3 系统开发 342

31.3.1 开发工具准备 342

31.3.2 文件夹组织结构 342

31.4 主窗体的UI设计 343

31.4.1 主窗体的布局 343

31.4.2 主窗体显示效果 347

31.5 爬取数据 347

31.5.1 获取请求地址与参数 347

31.5.2 下载数据文件 348

31.5.3 查询所有车票信息 352

31.5.4 卧铺票的查询与分析 354

31.5.5 查询车票起售时间 356

31.6 主窗体的数据显示 358

31.6.1 车票查询区域的数据显示 358

31.6.2 卧铺售票分析区域的数据显示 364

31.6.3 卧铺车票数量走势图的显示 366

31.6.4 查询车票起售时间的数据显示 369



附录

附录1 数据解析速查表 371

附录2 PyCharm 常用快捷键 377

附录3 PyCharm 常用设置 378



已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Python网络爬虫技术手册:基础·实战·强化
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon