[套装书]Python开发技术大全+Python网络爬虫从入门到实践 第2版(2册)

作者
吴仲治 唐松
丛书名
出版社
机械工业出版社
ISBN
9782008071638
简要
简介
内容简介书籍计算机书籍 ---------------------------Python开发技术大全--------------------------- 本书从Python 语言的基础语法讲起,逐步深入地介绍了Python各种库,并且介绍了这些库的实战案例,重点介绍了爬虫开发, GUI应用程序开发,容器管理, Redis数据库操作以及数据处理和神经网络方面的内容。让读者不但可以系统地学习Python编程的相关知识,而且还能对Python在各个领域的应用有更为深入的理解。 本书分为21章,涵盖的主要内容有Python语言基础和Python在多个领域的应用。重点介绍了多线程编程; GUI应用程序开发;web编程;爬虫开发;容器管理;数据处理以及神经网络上的应用。 本书内容通俗易懂,案例丰富,实用性强,特别适合Python语言的入门读者和进阶读者阅读,也适合自动化测试人员、自动运维人员阅读。另外,本书也适合作为相关培训机构的教材使用。 ---------------------------Python网络爬虫从入门到实践 第2版--------------------------- 使用Python编写网络爬虫程序获取互联网上的大数据是当前的热门专题。本书内容包括三部分:基础部分、进阶部分和项目实践。基础部分(第1~7章)主要介绍爬虫的三个步骤——获取网页、解析网页和存储数据,并通过诸多示例的讲解,让读者能够从基础内容开始系统性地学习爬虫技术,并在实践中提升Python爬虫水平。进阶部分(第8~13章)包括多线程的并发和并行爬虫、分布式爬虫、更换IP等,帮助读者进一步提升爬虫水平。项目实践部分(第14~17章)使用本书介绍的爬虫技术对几个真实的网站进行抓取,让读者能在读完本书后根据自己的需求写出爬虫程序。
目录



---------------------------Python开发技术大全---------------------------


前言
第1篇 Python编程基础
第1章 Python语言基础 2
1.1 Python语言介绍 2
1.2 Python版本介绍 3
1.2.1 Python语言的版本 3
1.2.2 Python的实现版本 4
1.3 集成开发环境 9
1.3.1 PyCharm 9
1.3.2 Anaconda 10
1.4 代码的运行方式 17
1.5 网页运行方式 19
1.6 基本语法 23
1.7 Python之禅 26
第2章 基本数据类型 28
2.1 整数类型 28
2.1.1 整数的表示法 28
2.1.2 数值运算 29
2.1.3 位运算 31
2.1.4 移位运算 33
2.1.5 类型转换 34
2.1.6 其他进制表示法 35
2.1.7 小整数池 39
2.1.8 统计成绩的例子 40
2.1.9 韩信点兵的故事 41
2.2 布尔类型 42
2.2.1 布尔运算 42
2.2.2 类型转换 44
2.2.3 例子:谁在说谎 44
2.3 字节流 46
2.4 浮点数 50
2.4.1 基本运算 51
2.4.2 其他运算 52
2.4.3 类型转换 53
2.4.4 例子:求某个数的平方根 53
2.5 列表 54
2.5.1 列表特性 55
2.5.2 常见操作 56
2.5.3 找出丢失的数 60
2.5.4 背包问题 61
2.6 字符串 63
2.6.1 str类型的字符串 64
2.6.2 str类型的相关接口函数 64
2.6.3 bytes类型 68
2.6.4 str类型和bytes类型的转换 69
2.7 元组 70
2.7.1 元组的表示法 70
2.7.2 元组接口函数 71
2.8 集合 72
2.8.1 创建集合 72
2.8.2 基本操作 73
2.8.3 例子:删除重复元素 79
2.9 字典 80
2.9.1 创建字典 81
2.9.2 基本操作 81
2.9.3 例子:合并结果 86
2.9.4 例子:如何安全过河 87
2.10 NoneType类型 94
2.11 变量、对象和值的关系 94
第3章 函数 99
3.1 函数的定义和使用 99
3.2 函数的返回值 100
3.3 函数的参数 100
3.3.1 位置参数 101
3.3.2 将位置参数当作元组 101
3.3.3 调用时使用元组和列表 103
3.3.4 关键字参数 104
3.3.5 将实参当作字典 104
3.3.6 调用时使用字典 105
3.3.7 默认值 105
3.4 常见的系统自带函数 106
3.4.1 数据对象有关的函数 106
3.4.2 数学计算有关的函数 109
3.4.3 容器类型有关的函数 111
3.4.4 属性操作 116
3.5 lambda函数 117
3.6 递归调用 118
3.6.1 递归调用介绍 118
3.6.2 例子 119
第4章 模块和包 126
4.1 模块 126
4.2 包 128
4.3 软件包的安装 129
4.3.1 复制源代码到系统 129
4.3.2 使用PIP进行安装 130
4.3.3 使用easy_install和setup进行安装 134
第5章 文件操作 135
5.1 文件的基本操作 135
5.2 打开文件 136
5.3 文件对象的操作 137
5.4 关闭文件 142
5.5 特殊文件 143
5.6 文件对象的属性 145
第6章 基础库 146
6.1 正则表达式库 146
6.1.1 元字符和语法 147
6.1.2 C风格接口函数 154
6.1.3 面向风格接口函数 155
6.1.4 re.Match对象 155
6.2 数学库 157
6.3 时间库 159
6.3.1 时间表示法 159
6.3.2 接口函数 160
6.4 日期库 162
6.5 二叉树库 162
6.6 串行化库 164
6.6.1 基本流程 164
6.6.2 pickle用法 165
6.7 随机数库 166
6.7.1 生成随机整数和随机实数 167
6.7.2 其他形式的随机 169
6.7.3 伪随机问题 170
6.7.4 例子:计算面积 171
6.7.5 游戏:五对胡 172
第7章 异常处理 177
7.1 Python中的异常处理 177
7.1.1 捕捉异常 177
7.1.2 没有异常才执行的分支 180
7.1.3 无论有无异常都要执行的分支 181
7.2 抛出异常 182
7.3 常见的系统定义异常 183
第8章 类和对象 187
8.1 类的定义和实例创建 187
8.2 类的属性 189
8.3 初始化函数和销毁函数 190
8.4 实例对象的属性 192
8.4.1 类属性和实例对象属性的关系 192
8.4.2 self在类定义中表示当前对象 194
8.4.3 通过delattr()、setattr()等接口函数来操作属性 196
8.5 静态方法 198
8.6 类方法 199
8.7 访问控制 199
8.8 只读属性 200
8.8.1 使用@property修饰符 200
8.8.2 重新定义__setattr__()函数 201
8.9 类属性的安全检查 202
8.10 派生类 203
8.11 多重继承 204
第2篇 Python编程高级主题
第9章 多线程 208
9.1 线程介绍 208
9.2 Python中的线程 209
9.2.1 主线程 209
9.2.2 线程状态 209
9.3 thread包 210
9.3.1 线程的启动 211
9.3.2 线程的退出 212
9.4 threading包 213
9.4.1 创建线程实例对象 213
9.4.2 派生自己的线程类 216
9.4.3 配置线程 217
9.4.4 启动线程 218
9.4.5 停止线程 219
9.4.6 等待线程结束 220
9.4.7 其他接口函数 221
9.5 线程同步 222
9.5.1 线程锁thread.Lock 223
9.5.2 线程锁threading.Lock 224
9.5.3 可重入锁threading.RLock 225
9.5.4 条件变量threading.Condition 227
9.5.5 信号量threading.Semaphore 228
9.5.6 事件threading.Event 231
9.6 线程安全 233
9.7 死锁 236
第10章 多进程 239
10.1 进程的概念 239
10.2 subprocess模块 240
10.2.1 面向过程的接口函数 241
10.2.2 Popen类 244
10.3 multiprocessing模块 247
10.3.1 创建进程 247
10.3.2 进程的属性 249
10.3.3 进程的接口函数 253
10.3.4 进程池 258
10.3.5 进程通信 260
10.4 os模块 265
10.4.1 启动进程——system() 265
10.4.2 启动进程并得到输出——popen () 265
10.4.3 得到当前进程ID——getpid () 266
10.4.4 得到父进程ID——getppid () 266
第11章 迭代器和生成器 268
11.1 迭代器 268
11.2 生成器 269
11.2.1 定义生成器 270
11.2.2 接口函数 270
第12章 装饰器 275
12.1 起源 275
12.2 被装饰函数带有参数 276
12.3 装饰函数带有参数 279
12.4 装饰函数带有返回值 280
12.5 使用多个装饰器 281
12.6 常用装饰器 282
12.6.1 类装饰器 282
12.6.2 退出时执行的函数 284
12.6.3 单例模式 284
12.6.4 执行时间限制 285
12.6.5 执行时间标定 286
12.6.6 自动重新运行 287
12.6.7 状态机 288
第13章 数据文件操作 293
13.1 csv文件的处理 293
13.2 yaml文件的处理 296
13.3 json文件的处理 298
第14章 软件测试 301
14.1 无框架的测试 301
14.2 PyUnit测试框架 305
14.2.1 运行方式 307
14.2.2 生成测试报告 309
14.2.3 测试步骤 312
14.2.4 断言 317
14.2.5 测试用例的接口函数 328
14.2.6 覆盖率 330
14.3 Pytest测试框架 333
14.3.1 测试用例 333
14.3.2 选择执行的测试用例 335
14.3.3 生成测试报告 339
14.3.4 测试步骤 341
14.3.5 断言 345
14.3.6 覆盖率 346
14.3.7 插件 349
第15章 网络编程 357
15.1 TCP/IP协议介绍 357
15.2 socket介绍 361
15.3 TCP echo服务器 363
15.4 简单的TCP客户端 364
15.5 UDP版的echo服务器 365
第16章 容器操作 367
16.1 Docker的安装 367
16.2 Docker的基本概念 369
16.3 docker-py库 370
16.3.1 建立连接 370
16.3.2 对Docker镜像的操作 371
16.3.3 运行Docker镜像 377
16.4 kubernetes库 379
第17章 Scrapy爬虫框架 388
17.1 Scrapy的安装 388
17.2 工作原理 390
17.3 一个简单的例子 391
17.4 Scrapy的架构图 393
17.5 爬虫 395
17.5.1 点赞统计例子 395
17.5.2 爬虫类 396
17.6 一个完整的项目 398
17.7 结果数据 400
17.8 选择器 402
17.8.1 介绍 403
17.8.2 text() 404
17.8.3 extract()/extract_first() 405
17.8.4 @属性 406
17.8.5 元素[@属性] 406
17.9 设置 407
17.9.1 命令行方式 407
17.9.2 爬虫范围内的设置 408
17.9.3 项目范围内的设置 408
17.9.4 命令默认设定 409
17.9.5 全局默认设定 409
17.9.6 读取配置 411
17.9.7 常用配置 412
17.10 命令行工具 414
17.10.1 创建项目 414
17.10.2 创建爬虫 415
17.10.3 列出爬虫模板 416
17.10.4 查看某个爬虫模板 417
17.10.5 基于模板创建爬虫 418
17.10.6 启动爬虫 418
17.10.7 爬虫列表 419
17.10.8 爬取指定页面 420
17.10.9 在浏览器中显示页面 421
17.10.10 启动交互式shell 422
17.10.11 runspider 423
17.10.12 标定Scrapy的性能 424
17.10.13 其他命令 425
17.11 爬取北京公交线路数据 426
第18章 Flask Web开发框架 429
18.1 Flask的安装 429
18.2 最简单的Flask应用 430
18.3 路由 430
18.3.1 动态路由 431
18.3.2 限定类型 432
18.3.3 地址尾部的“/” 433
18.4 运行应用的参数 435
18.5 命令行方式运行 436
18.6 HTTP的方法 437
18.7 静态文件 437
18.8 模板 438
18.8.1 变量 439
18.8.2 表达式 440
18.8.3 子模板 442
第19章 键值数据库Redis 444
19.1 介绍 444
19.2 服务器的安装 445
19.2.1 服务器容器下载 446
19.2.2 启动Redis容器 446
19.3 Python客户端的安装 448
19.4 元操作 448
19.5 字符串数据的操作 449
19.6 哈希数据的操作 456
19.7 列表数据的操作 458
19.8 集合数据的操作 460
19.9 订阅发布 462
19.9.1 基本用法 462
19.9.2 订阅多个频道 465
19.9.3 频道使用通配符 466
19.10 设置时效 467
19.11 管道模式 467
第20章 图形界面应用 469
20.1 Tk和Tkinter 469
20.1.1 基本程序结构 470
20.1.2 常用组件 471
20.1.3 布局 487
20.1.4 游戏2048 489
20.2 wxPython 494
20.2.1 程序基本结构 494
20.2.2 基本用户界面元素 495
20.3 PyQt 508
20.3.1 基本程序结构 508
20.3.2 常用组件 509
20.4 小结 517
第21章 数据处理 518
21.1 matplotlib 518
21.2 NumPy 526
21.2.1 ndarray的构造 526
21.2.2 ndarray的一些属性 531
21.2.3 ndarray的一些操作 532
21.2.4 NumPy在金融领域的应用 534
21.2.5 NumPy中的傅里叶变换 537
21.2.6 神经网络应用 541



---------------------------Python网络爬虫从入门到实践 第2版---------------------------


前言
第1章 网络爬虫入门 1
1.1 为什么要学网络爬虫 2
1.1.1 网络爬虫能带来什么好处 2
1.1.2 能从网络上爬取什么数据 3
1.1.3 应不应该学爬虫 3
1.2 网络爬虫是否合法 3
1.2.1 Robots协议 4
1.2.2 网络爬虫的约束 5
1.3 网络爬虫的基本议题 6
1.3.1 Python爬虫的流程 7
1.3.2 三个流程的技术实现 7
第2章 编写第一个网络爬虫 9
2.1 搭建Python平台 10
2.1.1 Python的安装 10
2.1.2 使用pip安装第三方库 12
2.1.3 使用编辑器Jupyter 编程 13
2.1.4 使用编辑器Pycharm编程 15
2.2 Python 使用入门 18
2.2.1 基本命令 18
2.2.2 数据类型 19
2.2.3 条件语句和循环语句 21
2.2.4 函数 23
2.2.5 面向对象编程 24
2.2.6 错误处理 28
2.3 编写第一个简单的爬虫 29
2.3.1 第一步:获取页面 29
2.3.2 第二步:提取需要的数据 30
2.3.3 第三步:存储数据 32
2.4 Python实践:基础巩固 33
2.4.1 Python基础试题 34
2.4.2 参考答案 35
2.4.3 自我实践题 38
第3章 静态网页抓取 39
3.1 安装Requests 40
3.2 获取响应内容 40
3.3 定制Requests 41
3.3.1 传递URL参数 41
3.3.2 定制请求头 42
3.3.3 发送POST请求 43
3.3.4 超时 44
3.4 Requests爬虫实践:TOP250电影数据 44
3.4.1 网站分析 45
3.4.2 项目实践 45
3.4.3 自我实践题 47
第4章 动态网页抓取 48
4.1 动态抓取的实例 49
4.2 解析真实地址抓取 50
4.3 通过Selenium模拟浏览器抓取 55
4.3.1 Selenium的安装与基本介绍 55
4.3.2 Selenium的实践案例 57
4.3.3 Selenium获取文章的所有评论 58
4.3.4 Selenium的高级操作 61
4.4 Selenium爬虫实践:深圳短租数据 64
4.4.1 网站分析 64
4.4.2 项目实践 66
4.4.3 自我实践题 69
第5章 解析网页 70
5.1 使用正则表达式解析网页 71
5.1.1 re.match方法 71
5.1.2 re.search方法 74
5.1.3 re.findall方法 74
5.2 使用BeautifulSoup解析网页 76
5.2.1 BeautifulSoup的安装 76
5.2.2 使用BeautifulSoup获取博客标题 77
5.2.3 BeautifulSoup的其他功能 78
5.3 使用lxml解析网页 82
5.3.1 lxml的安装 82
5.3.2 使用lxml获取博客标题 82
5.3.3 XPath的选取方法 84
5.4 总结 85
5.5 BeautifulSoup爬虫实践:房屋价格数据 86
5.5.1 网站分析 86
5.5.2 项目实践 87
5.5.3 自我实践题 89
第6章 数据存储 90
6.1 基本存储:存储至TXT或CSV 91
6.1.1 把数据存储至TXT 91
6.1.2 把数据存储至CSV 93
6.2 存储至MySQL数据库 94
6.2.1 下载安装MySQL 95
6.2.2 MySQL的基本操作 99
6.2.3 Python操作MySQL数据库 104
6.3 存储至MongoDB数据库 106
6.3.1 下载安装MongoDB 107
6.3.2 MongoDB的基本概念 110
6.3.3 Python操作MongoDB数据库 112
6.3.4 RoboMongo的安装与使用 113
6.4 总结 115
6.5 MongoDB爬虫实践:虎扑论坛 116
6.5.1 网站分析 116
6.5.2 项目实践 117
6.5.3 自我实践题 123
第7章 Scrapy框架 124
7.1 Scrapy是什么 125
7.1.1 Scrapy架构 125
7.1.2 Scrapy数据流(Data Flow) 126
7.1.3 选择Scrapy还是Requests+bs4 127
7.2 安装Scrapy 128
7.3 通过Scrapy抓取博客 128
7.3.1 创建一个Scrapy项目 128
7.3.2 获取博客网页并保存 129
7.3.3 提取博客标题和链接数据 131
7.3.4 存储博客标题和链接数据 133
7.3.5 获取文章内容 134
7.3.6 Scrapy的设置文件 136
7.4 Scrapy爬虫实践:财经新闻数据 137
7.4.1 网站分析 137
7.4.2 项目实践 138
7.4.3 自我实践题 141
第8章 提升爬虫的速度 142
8.1 并发和并行,同步和异步 143
8.1.1 并发和并行 143
8.1.2 同步和异步 143
8.2 多线程爬虫 144
8.2.1 简单的单线程爬虫 145
8.2.2 学习Python多线程 145
8.2.3 简单的多线程爬虫 148
8.2.4 使用Queue的多线程爬虫 150
8.3 多进程爬虫 153
8.3.1 使用multiprocessing的多进程爬虫 153
8.3.2 使用Pool + Queue的多进程爬虫 155
8.4 多协程爬虫 158
8.5 总结 160
第9章 反爬虫问题 163
9.1 为什么会被反爬虫 164
9.2 反爬虫的方式有哪些 164
9.2.1 不返回网页 165
9.2.2 返回非目标网页 165
9.2.3 获取数据变难 166
9.3 如何“反反爬虫” 167
9.3.1 修改请求头 167
9.3.2 修改爬虫的间隔时间 168
9.3.3 使用代理 171
9.3.4 更换IP地址 172
9.3.5 登录获取数据 172
9.4 总结 172
第10章 解决中文乱码 173
10.1 什么是字符编码 174
10.2 Python的字符编码 176
10.3 解决中文编码问题 179
10.3.1 问题1:获取网站的中文显示乱码 179
10.3.2 问题2:非法字符抛出异常 180
10.3.3 问题3:网页使用gzip压缩 181
10.3.4 问题4:读写文件的中文乱码 182
10.4 总结 184
第11章 登录与验证码处理 185
11.1 处理登录表单 186
11.1.1 处理登录表单 186
11.1.2 处理cookies,让网页记住你的登录 190
11.1.3 完整的登录代码 193
11.2 验证码的处理 194
11.2.1 如何使用验证码验证 195
11.2.2 人工方法处理验证码 197
11.2.3 OCR处理验证码 200
11.3 总结 203
第12章 服务器采集 204
12.1 为什么使用服务器采集 205
12.1.1 大规模爬虫的需要 205
12.1.2 防止IP地址被封杀 205
12.2 使用动态IP拨号服务器 206
12.2.1 购买拨号服务器 206
12.2.2 登录服务器 206
12.2.3 使用Python更换IP 208
12.2.4 结合爬虫和更换IP功能 209
12.3 使用Tor代理服务器 210
12.3.1 Tor的安装 211
12.3.2 Tor的使用 213
第13章 分布式爬虫 218
13.1 安装Redis 219
13.2 修改Redis配置 222
13.2.1 修改Redis密码 222
13.2.2 让Redis服务器被远程访问 222
13.2.3 使用Redis Desktop Manager管理 223
13.3 Redis分布式爬虫实践 223
13.3.1 安装Redis库 224
13.3.2 加入任务队列 224
13.3.3 读取任务队列并下载图片 225
13.3.4 分布式爬虫代码 226
13.4 总结 228
第14章 爬虫实践一:维基百科 229
14.1 项目描述 230
14.1.1 项目目标 230
14.1.2 项目描述 230
14.1.3 深度优先和广度优先 232
14.2 网站分析 233
14.3 项目实施:深度优先的递归爬虫 235
14.4 项目进阶:广度优先的多线程爬虫 237
14.5 总结 241
第15章 爬虫实践二:知乎Live 242
15.1 项目描述 243
15.2 网站分析 243
15.3 项目实施 245
15.3.1 获取所有Live 245
15.3.2 获取Live的听众 248
15.4 总结 251
第16章 爬虫实践三:百度地图API 252
16.1 项目描述 253
16.2 获取API秘钥 254
16.3 项目实施 255
16.3.1 获取所有拥有公园的城市 257
16.3.2 获取所有城市的公园数据 258
16.3.3 获取所有公园的详细信息 262
16.4 总结 266
第17章 爬虫实践四:畅销书籍 267
17.1 项目描述 268
17.2 网站分析 268
17.3 项目实施 270
17.3.1 获取亚马逊的图书销售榜列表 270
17.3.2 获取所有分类的销售榜 274
17.3.3 获取图书的评论 276
17.4 总结 279



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4