| 作者 |
| 吴仲治 唐松 |
| 丛书名 |
| 出版社 |
| 机械工业出版社 |
| 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 |