作者 |
史靖涵 王宇韬 吴子湛 道格·赫尔曼 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9782107011630 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8081589 - 零基础学Python网络爬虫案例实战全流程详解(高级进阶篇)--------------------------- 在这个数据为王的时代,无论是从事何种行业,每天都会与海量的且各种类型的数据打交道,如何从这些数据中获取需要的信息,并进行相应的分析和可视化展示,是很多程序员和职场人士非常关心的一个问题。 本书以功能强大且上手操作容易的Python语言为基础,主要讲解Python爬虫的高级进阶技巧,主要侧重于各种应对网站反爬的相关技巧、爬虫框架、爬虫服务器部署等相关知识点。 本书共分8章,核心主题包括如何通过Cookie模拟登录网站从而解决网站反爬问题,如何通过进行验证码反爬识别,如何破解Ajax动态请求,讲解Webdriver拦截等其他反爬手段识别,如何进行手机APP爬虫,Scrapy爬虫框架,如何利用Scrapy爬虫框架应对反爬,爬虫的云服务器部署等。此外,书中对实际案例进行分析,让读者更好地理解和掌握爬虫知识。 本书适合各行各业的数据分析从业人员学习,也适合想要提高工作效率的职场人士,对于Python编程感兴趣的读者,本书也是一本不错的参考读物。 ---------------------------8081596 - 零基础学Python网络爬虫案例实战全流程详解(入门与提高篇)--------------------------- 在大数据时代的今天,无论是产品开始还是精准化营销越来越离不开大数据的支持,如何从浩瀚的网络中获取自己想要的大数据?这就需要网络爬虫,而是世界上80%的爬虫都是基于Python开发出来的,所以python爬虫技术是大数据挖掘、分析与可视化的基础。 本书面向零基础读者,从如何合法使用爬虫和Python编辑环境的安装开始到不同类型爬虫程序的开发都进行了详尽的讲解,从Python基础语法到Requests库、正则表达式、Scrapy框架、Beautiful Soup一个都不少。同时在相关地方也讲解了部分数据挖掘和数据分析的基础内容。 ---------------------------8052829 - Python 3标准库--------------------------- . 在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。 |
目录 |
[套装书具体书目] 8052829 - Python 3标准库 - 9787111608950 - 机械工业出版社 - 定价 199 8081589 - 零基础学Python网络爬虫案例实战全流程详解(高级进阶篇) - 9787111684749 - 机械工业出版社 - 定价 89.8 8081596 - 零基础学Python网络爬虫案例实战全流程详解(入门与提高篇) - 9787111683681 - 机械工业出版社 - 定价 99 ---------------------------8081589 - 零基础学Python网络爬虫案例实战全流程详解(高级进阶篇)--------------------------- 前言 本书学习资源 第1章 Cookie模拟登录 1.1 Cookie模拟登录的原理 11 1.1.1 客户端与服务端 11 1.1.2 HTTP的无状态性 12 1.1.3 Cookie的含义与作用 13 1.1.4 Session的含义与作用 16 1.1.5 Cookie与Session的交互 17 1.2 案例实战1:模拟登录淘宝并爬取数据 20 1.2.1 获取Cookie模拟登录淘宝 20 1.2.2 爬取淘宝商品数据 25 1.3 案例实战2:模拟登录新浪微博并爬取数据 29 1.3.1 获取Cookie模拟登录新浪微博 30 1.3.2 爬取新浪微博热搜榜信息 34 ★ 课后习题 38 第2章 验证码反爬的应对 2.1 图像验证码 39 2.1.1 超级鹰平台注册 40 2.1.2 超级鹰Python接口的使用 41 2.1.3 案例实战:英文验证码和中文验证码识别 46 2.2 计算题验证码 51 2.3 滑块验证码 54 2.4 滑动拼图验证码 57 2.4.1 初级版滑动拼图验证码 59 2.4.2 高级版滑动拼图验证码 63 2.5 点选验证码 68 2.5.1 本地网页识别 69 2.5.2 bilibili点选验证码识别初探 75 2.5.3 bilibili点选验证码识别升级:无限尝试版 80 ★ 课后习题 85 第3章 Ajax动态请求破解 3.1 Ajax简介 86 3.1.1 不同的网页翻页方式的对比 86 3.1.2 Ajax的基本概念与工作原理 88 3.2 案例实战1:爬取开源中国博客频道 89 3.2.1 分析Ajax请求 89 3.2.2 爬取单页博客 92 3.2.3 爬取多页博客 96 3.3 案例实战2:爬取新浪微博 98 3.3.1 模拟登录新浪微博 100 3.3.2 分析单个微博页面 101 3.3.3 破解Ajax请求爬取多页 103 ★ 课后习题 108 第4章 手机App内容爬取 4.1 相关软件安装 109 4.1.1 安装夜神模拟器 110 4.1.2 安装Node.js 111 4.1.3 安装JDK 113 4.1.4 安装Android Studio 117 4.1.5 安装Appium 118 4.1.6 安装Appium-Python-Client库 118 4.2 手机模拟操作初步尝试 119 4.2.1 用Android Studio连接夜神模拟器 119 4.2.2 用Python连接微信App 121 4.3 Appium基本操作与进阶操作 123 4.3.1 Appium基本操作 123 4.3.2 Appium进阶操作 126 4.4 案例实战:爬取微信朋友圈内容 132 4.4.1 获取微信朋友圈页面源代码 133 4.4.2 提取微信朋友圈内容 135 4.5 多开模拟器打开多个微信 138 4.5.1 多开模拟器 138 4.5.2 用Appium连接多个模拟器 139 ★ 课后习题 143 第5章 Scrapy爬虫框架 5.1 Scrapy框架基础 144 5.1.1 Scrapy的安装方法 144 5.1.2 Scrapy的整体架构 146 5.1.3 Scrapy的常用指令 148 5.2 案例实战1:百度新闻爬取 156 5.2.1 Robots协议破解 157 5.2.2 User-Agent设置 158 5.2.3 百度新闻标题爬取 159 5.3 案例实战2:新浪新闻爬取 160 5.3.1 实体文件设置 161 5.3.2 新浪新闻爬取:爬取一条新闻 162 5.3.3 新浪新闻爬取:爬取多条新闻 166 5.3.4 新浪新闻爬取:生成文本文件报告 167 5.4 案例实战3:豆瓣电影海报图片爬取 170 5.4.1 用常规方法爬取 170 5.4.2 用Scrapy爬取 171 5.5 知识拓展:Python类的相关知识 176 5.5.1 类和对象的概念 176 5.5.2 类名、属性和方法 176 5.5.3 类的进阶知识 179 ★ 课后习题 182 第6章 Scrapy应对反爬 6.1 中间件技术概述 183 6.1.1 下载器中间件 184 6.1.2 爬虫中间件 184 6.2 Scrapy+IP代理:爬取搜狗图片 185 6.2.1 用Requests库批量下载图片 186 6.2.2 用Scrapy框架批量下载图片 198 6.3 Scrapy+Cookie:模拟登录淘宝 202 6.3.1 在中间件文件中添加Cookie 202 6.3.2 编写并运行爬虫文件:爬取淘宝网页 204 6.4 Scrapy+Selenium库:爬取第一财经新闻 206 6.4.1 在中间件文件中添加Selenium库 207 6.4.2 编写并运行爬虫文件:爬取新闻信息 209 ★ 课后习题 214 第7章 爬虫云服务器部署 7.1 HTML网页制作进阶 215 7.1.1 表格 217 7.1.2 列表 218 7.1.3 样式设计 220 7.1.4 背景设置 228 7.2 Flask Web编程基础 232 7.2.1 Flask入门 232 7.2.2 用render_template()函数渲染页面 237 7.2.3 用Flask连接数据库 242 7.3 Flask Web编程实战 247 7.3.1 展示单家公司的数据 247 7.3.2 展示多家公司的数据 252 7.3.3 展示舆情评分 255 7.3.4 只展示当天新闻 257 7.3.5 只展示负面新闻 258 7.4 云服务器的购买和登录 261 7.5 程序云端部署及网站搭建 265 7.5.1 搭建程序的运行环境 265 7.5.2 程序24小时运行及Flask项目部署 266 7.5.3 域名申请和使用 267 ★ 课后习题 270 ---------------------------8081596 - 零基础学Python网络爬虫案例实战全流程详解(入门与提高篇)--------------------------- 前言 本书学习资源 第1章 Python基础 1.1 Python快速上手 13 1.1.1 安装Python 13 1.1.2 编写第一个Python程序 15 1.1.3 PyCharm的安装与使用 16 1.1.4 Jupyter Notebook的使用 27 1.2 Python语法基础知识 34 1.2.1 变量、行、缩进与注释 34 1.2.2 数据类型:数字与字符串 36 1.2.3 数据类型:列表与字典、元组与集合 38 1.2.4 运算符 44 1.3 Python语句 46 1.3.1 if条件语句 46 1.3.2 for循环语句 47 1.3.3 while循环语句 49 1.3.4 try/except异常处理语句 50 1.4 函数与库 50 1.4.1 函数的定义与调用 51 1.4.2 函数的返回值与变量的作用域 52 1.4.3 常用内置函数介绍 54 1.4.4 库的导入与安装 57 ★ 课后习题 61 第2章 爬虫第一步:获取网页源代码 2.1 爬虫核心库1:Requests库 62 2.1.1 如何查看网页源代码 62 2.1.2 用Requests库获取网页源代码:百度新闻 66 2.1.3 Requests库的“软肋” 70 2.2 爬虫核心库2:Selenium库 71 2.2.1 模拟浏览器及Selenium库的安装 71 2.2.2 用Selenium库获取网页源代码:新浪财经股票信息 74 2.3 网页结构分析 76 2.3.1 网页结构基础 76 2.3.2 网页结构进阶 76 ★ 课后习题 82 第3章 爬虫第二步:数据解析与提取 3.1 用正则表达式解析和提取数据 83 3.1.1 正则表达式基础1:findall()函数 83 3.1.2 正则表达式基础2:非贪婪匹配之“(.*)” 85 3.1.3 正则表达式基础3:非贪婪匹配之“.*” 88 3.1.4 正则表达式基础4:自动考虑换行的修饰符re.S 90 3.1.5 正则表达式基础5:知识点补充 91 3.1.6 案例实战:提取百度新闻的标题、网址、日期和来源 93 3.2 用BeautifulSoup库解析和提取数据 98 3.2.1 解析特定标签的网页元素 98 3.2.2 解析特定属性的网页元素 100 3.2.3 提取标签中的网址 101 3.2.4 案例实战:新浪新闻标题和网址爬取 102 3.3 百度新闻爬取进阶探索 107 3.3.1 批量爬取多家公司的新闻 107 3.3.2 将爬取结果保存为文本文件 108 3.3.3 异常处理及24小时不间断爬取 111 3.3.4 批量爬取多页内容 113 3.4 证券日报网爬取实战 116 3.4.1 用正则表达式爬取 116 3.4.2 用BeautifulSoup库爬取 120 3.5 中证网爬取实战 121 3.6 新浪微博爬取实战 125 3.7 上海证券交易所上市公司PDF文件下载 128 3.7.1 用Requests库下载文件的基本方法 128 3.7.2 初步尝试下载上海证券交易所上市公司PDF文件 130 3.8 豆瓣电影Top 250排行榜海报图片下载 131 3.8.1 爬取单页 131 3.8.2 爬取多页 134 ★ 课后习题 136 第4章 爬虫神器Selenium库深度讲解 4.1 Selenium库进阶知识 137 4.2 新浪财经股票行情数据爬取 142 4.2.1 用Selenium库爬取股票行情数据 142 4.2.2 用新浪财经API爬取股票行情数据 144 4.3 东方财富网数据爬取 149 4.3.1 上市公司股吧帖子爬取 149 4.3.2 上市公司新闻爬取 150 4.3.3 上市公司研报PDF文件下载 154 4.4 上海证券交易所问询函信息爬取及PDF文件下载 160 4.4.1 批量下载单个页面上的PDF文件 161 4.4.2 批量下载多个页面上的PDF文件 163 4.4.3 汇总问询函信息并导出为Excel工作簿 166 4.5 银行间拆借利率爬取 167 4.6 雪球股票评论信息爬取 173 4.7 京东商品评价信息爬取 175 4.7.1 用Selenium库爬取 175 4.7.2 用Requests库爬取 179 4.8 淘宝天猫商品销量数据爬取 183 4.9 Selenium库趣味案例:网页自动投票 186 ★ 课后习题 188 第5章 数据处理与可视化 5.1 数据清洗与优化技巧 189 5.1.1 常用的数据清洗手段及日期格式的统一 189 5.1.2 文本内容过滤—剔除噪声数据 190 5.1.3 数据乱码问题处理 195 5.1.4 数据爬后处理之舆情评分 198 5.2 数据可视化分析—词云图绘制 200 5.2.1 用jieba库实现中文分词 200 5.2.2 用wordcloud库绘制词云图 204 5.2.3 案例实战:新浪微博词云图绘制 208 ★ 课后习题 211 第6章 数据结构化与数据存储 6.1 数据结构化神器—pandas库 212 6.1.1 用read_html()函数快速爬取网页表格数据 212 6.1.2 pandas库在爬虫领域的核心代码知识 214 6.2 新浪财经—资产负债表获取 225 6.3 百度新闻—文本数据结构化 229 6.3.1 将单家公司的新闻导出为Excel工作簿 229 6.3.2 将多家公司的新闻导出为Excel工作簿 230 6.4 百度爱企查—股权穿透研究 231 6.4.1 单层股权结构爬取 232 6.4.2 多层股权结构爬取 235 6.5 天天基金网—股票型基金信息爬取 237 6.5.1 爬取基金信息表格 238 6.5.2 爬取基金的详情页面网址 239 6.6 集思录—可转债信息爬取 242 6.7 东方财富网—券商研报信息爬取 243 6.7.1 爬取券商研报信息表格 244 6.7.2 爬取研报的详情页面网址 245 6.8 数据存储—MySQL快速入门 247 6.8.1 MySQL的安装 247 6.8.2 MySQL的基本操作 252 6.9 用Python操控数据库 261 6.9.1 用PyMySQL库操控数据库 261 6.9.2 案例实战:百度新闻数据爬取与存储 267 6.9.3 用pandas库操控数据库 271 ★ 课后习题 276 第7章 Python多线程和多进程爬虫 7.1 理解线程与进程 277 7.1.1 计算机硬件结构基础知识 277 7.1.2 线程与进程 279 7.1.3 单线程、多线程与多进程 281 7.1.4 爬虫任务中的多线程与多进程 282 7.2 Python多线程爬虫编程实战 285 7.2.1 Python多线程编程基础知识 285 7.2.2 Python多线程编程进阶知识 294 7.2.3 案例实战:多线程爬取百度新闻 300 7.3 Python多进程爬虫编程实战 302 7.3.1 Python多进程编程基础知识 303 7.3.2 Python多进程编程进阶知识 305 7.3.3 案例实战:多进程爬取百度新闻 307 ★ 课后习题 309 第8章 IP代理使用技巧与实战 8.1 结合Requests库使用IP代理 310 8.1.1 IP代理基础知识 310 8.1.2 IP代理的使用 311 8.2 IP代理实战1:用Requests库爬取公众号文章 315 8.2.1 直接用Requests库爬取 315 8.2.2 添加IP代理进行爬取 324 8.2.3 添加智能IP切换系统 327 8.3 结合Selenium库使用IP代理 334 8.4 IP代理实战2:用Selenium库爬取公众号文章 335 8.4.1 直接用Selenium库爬取 335 8.4.2 添加IP代理进行爬取 337 8.4.3 添加智能IP切换系统 338 ★ 课后习题 340 后记 342 ---------------------------8052829 - Python 3标准库--------------------------- 译者序 前言 第1章 文本 1 1.1 string:文本常量和模板 1 1.1.1 函数 1 1.1.2 模板 2 1.1.3 高级模板 3 1.1.4 Formatter 5 1.1.5 常量 5 1.2 textwrap:格式化文本段落 6 1.2.1 示例数据 6 1.2.2 填充段落 7 1.2.3 去除现有的缩进 7 1.2.4 结合dedent和fill 8 1.2.5 缩进块 8 1.2.6 悬挂缩进 10 1.2.7 截断长文本 10 1.3 re:正则表达式 11 1.3.1 查找文本中的模式 11 1.3.2 编译表达式 12 1.3.3 多重匹配 13 1.3.4 模式语法 14 1.3.5 限制搜索 22 1.3.6 用组解析匹配 24 1.3.7 搜索选项 29 1.3.8 前向或后向 35 1.3.9 自引用表达式 38 1.3.10 用模式修改字符串 42 1.3.11 利用模式拆分 44 1.4 difflib:比较序列 46 1.4.1 比较文本体 47 1.4.2 无用数据 49 1.4.3 比较任意类型 50 第2章 数据结构 52 2.1 enum:枚举类型 53 2.1.1 创建枚举 53 2.1.2 迭代 53 2.1.3 比较Enum 54 2.1.4 唯一枚举值 55 2.1.5 通过编程创建枚举 56 2.1.6 非整数成员值 58 2.2 collections:容器数据类型 60 2.2.1 ChainMap:搜索多个字典 60 2.2.2 Counter:统计可散列的对象 63 2.2.3 defaultdict:缺少的键返回一个默认值 66 2.2.4 deque:双端队列 67 2.2.5 namedtuple:带命名字段的元组子类 70 2.2.6 OrderedDict:记住向字典中增加键的顺序 74 2.2.7 collections.abc:容器的抽象基类 76 2.3 数组:固定类型数据序列 78 2.3.1 初始化 78 2.3.2 处理数组 79 2.3.3 数组和文件 79 2.3.4 候选字节顺序 80 2.4 heapq:堆排序算法 81 2.4.1 示例数据 81 2.4.2 创建堆 82 2.4.3 访问堆的内容 83 2.4.4 堆的数据极值 85 2.4.5 高效合并有序序列 85 2.5 bisect:维护有序列表 86 2.5.1 有序插入 86 2.5.2 处理重复 87 2.6 queue:线程安全的FIFO实现 88 2.6.1 基本FIFO队列 88 2.6.2 LIFO队列 89 2.6.3 优先队列 89 2.6.4 构建一个多线程播客客户程序 90 2.7 struct:二进制数据结构 93 2.7.1 函数与Struct类 93 2.7.2 打包和解包 93 2.7.3 字节序 94 2.7.4 缓冲区 95 2.8 weakref:对象的非永久引用 96 2.8.1 引用 96 2.8.2 引用回调 97 2.8.3 最终化对象 98 2.8.4 代理 100 2.8.5 缓存对象 101 2.9 copy:复制对象 103 2.9.1 浅副本 103 2.9.2 深副本 104 2.9.3 定制复制行为 105 2.9.4 深副本中的递归 106 2.10 pprint:美观打印数据结构 107 2.10.1 打印 108 2.10.2 格式化 108 2.10.3 任意类 109 2.10.4 递归 110 2.10.5 限制嵌套输出 110 2.10.6 控制输出宽度 111 第3章 算法 113 3.1 functools:管理函数的工具 113 3.1.1 修饰符 113 3.1.2 比较 119 3.1.3 缓存 122 3.1.4 缩减数据集 125 3.1.5 泛型函数 127 3.2 itertools:迭代器函数 129 3.2.1 合并和分解迭代器 129 3.2.2 转换输入 132 3.2.3 生成新值 133 3.2.4 过滤 135 3.2.5 数据分组 138 3.2.6 合并输入 139 3.3 operator:内置操作符的函数接口 144 3.3.1 逻辑操作 144 3.3.2 比较操作符 145 3.3.3 算术操作符 145 3.3.4 序列操作符 146 3.3.5 原地操作符 148 3.3.6 属性和元素“获取方法” 148 3.3.7 结合操作符和定制类 150 3.4 contextlib:上下文管理器工具 151 3.4.1 上下文管理器API 151 3.4.2 上下文管理器作为函数修饰符 153 3.4.3 从生成器到上下文管理器 154 3.4.4 关闭打开的句柄 156 3.4.5 忽略异常 157 3.4.6 重定向输出流 158 3.4.7 动态上下文管理器栈 159 第4章 日期和时间 166 4.1 time:时钟时间 166 4.1.1 比较时钟 166 4.1.2 墙上时钟时间 167 4.1.3 单调时钟 168 4.1.4 处理器时钟时间 169 4.1.5 性能计数器 170 4.1.6 时间组成 170 4.1.7 处理时区 171 4.1.8 解析和格式化时间 172 4.2 datetime:日期和时间值管理 174 4.2.1 时间 174 4.2.2 日期 175 4.2.3 timedelta 177 4.2.4 日期算术运算 178 4.2.5 比较值 179 4.2.6 结合日期和时间 179 4.2.7 格式化和解析 180 4.2.8 时区 182 4.3 calendar:处理日期 183 4.3.1 格式化示例 183 4.3.2 本地化环境 185 4.3.3 计算日期 186 第5章 数学运算 188 5.1 decimal:定点数和浮点数的数学运算 188 5.1.1 Decimal 188 5.1.2 格式化 189 5.1.3 算术运算 190 5.1.4 特殊值 191 5.1.5 上下文 192 5.2 fractions:有理数 196 5.2.1 创建Fraction实例 197 5.2.2 算术运算 198 5.2.3 近似值 199 5.3 random:伪随机数生成器 199 5.3.1 生成随机数 200 5.3.2 指定种子 200 5.3.3 保存状态 201 5.3.4 随机整数 202 5.3.5 选择随机元素 203 5.3.6 排列 203 5.3.7 采样 205 5.3.8 多个并发生成器 205 5.3.9 SystemRandom 206 5.3.10 非均匀分布 207 5.4 math:数学函数 208 5.4.1 特殊常量 208 5.4.2 测试异常值 208 5.4.3 比较 210 5.4.4 将浮点值转换为整数 212 5.4.5 浮点值的其他表示 213 5.4.6 正号和负号 214 5.4.7 常用计算 215 5.4.8 指数和对数 218 5.4.9 角 222 5.4.10 三角函数 224 5.4.11 双曲函数 226 5.4.12 特殊函数 227 5.5 statistics:统计计算 228 5.5.1 平均值 228 5.5.2 方差 230 第6章 文件系统 232 6.1 os.path:平台独立的文件名管理 233 6.1.1 解析路径 233 6.1.2 建立路径 236 6.1.3 规范化路径 237 6.1.4 文件时间 238 6.1.5 测试文件 238 6.2 pathlib:文件系统路径作为对象 240 6.2.1 路径表示 240 6.2.2 建立路径 240 6.2.3 解析路径 242 6.2.4 创建具体路径 243 6.2.5 内容 244 6.2.6 读写文件 246 6.2.7 管理和符号链接 246 6.2.8 文件类型 247 6.2.9 文件属性 248 6.2.10 权限 250 6.2.11 删除 250 6.3 glob:文件名模式匹配 252 6.3.1 示例数据 252 6.3.2 通配符 252 6.3.3 单字符通配符 253 6.3.4 字符区间 253 6.3.5 转义元字符 254 6.4 fnmatch:UNIX式glob模式匹配 254 6.4.1 简单匹配 254 6.4.2 过滤 255 6.4.3 转换模式 256 6.5 linecache:高效读取文本文件 257 6.5.1 测试数据 257 6.5.2 读取特定行 257 6.5.3 处理空行 258 6.5.4 错误处理 258 6.5.5 读取Python源文件 259 6.6 tempfile:临时文件系统对象 260 6.6.1 临时文件 260 6.6.2 命名文件 262 6.6.3 假脱机文件 262 6.6.4 临时 263 6.6.5 预测名 264 6.6.6 临时文件位置 264 6.7 shutil:高层文件操作 265 6.7.1 复制文件 265 6.7.2 复制文件元数据 268 6.7.3 处理树 269 6.7.4 查找文件 271 6.7.5 归档 272 6.7.6 文件系统空间 275 6.8 filecmp:比较文件 276 6.8.1 示例数据 276 6.8.2 比较文件 278 6.8.3 比较 279 6.8.4 在程序中使用差异 280 6.9 mmap:内存映射文件 283 6.9.1 读文件 284 6.9.2 写文件 285 6.9.3 正则表达式 286 6.10 codecs:字符串编码和解码 287 6.10.1 Unicode入门 287 6.10.2 处理文件 289 6.10.3 字节序 291 6.10.4 错误处理 293 6.10.5 编码转换 295 6.10.6 非Unicode编码 296 6.10.7 增量编码 297 6.10.8 Unicode数据和网络通信 299 6.10.9 定义定制编码 301 6.11 io:文本、十进制和原始流I/O工具 307 6.11.1 内存中的流 307 6.11.2 为文本数据包装字节流 308 第7章 数据持久存储与交换 310 7.1 pickle:对象串行化 311 7.1.1 编码和解码字符串中的数据 311 7.1.2 处理流 312 7.1.3 重构对象的问题 313 7.1.4 不可腌制的对象 314 7.1.5 循环引用 316 7.2 shelve:对象的持久存储 318 7.2.1 创建一个新shelf 318 7.2.2 写回 319 7.2.3 特定shelf类型 320 7.3 dbm:UNIX键-值数据库 320 7.3.1 数据库类型 321 7.3.2 创建一个新数据库 321 7.3.3 打开一个现有数据库 322 7.3.4 错误情况 322 7.4 sqlite3:嵌入式关系数据库 323 7.4.1 创建数据库 323 7.4.2 获取数据 326 7.4.3 查询元数据 327 7.4.4 行对象 328 7.4.5 在查询中使用变量 329 7.4.6 批量加载 331 7.4.7 定义新的列类型 331 7.4.8 确定列类型 334 7.4.9 事务 336 7.4.10 隔离级别 338 7.4.11 内存中的数据库 341 7.4.12 导出数据库内容 341 7.4.13 在SQL中使用Python函数 342 7.4.14 带正则表达式的查询 344 7.4.15 定制聚集 345 7.4.16 线程和连接共享 346 7.4.17 限制对数据的访问 347 7.5 xml.etree.ElementTree:XML操纵API 349 7.5.1 解析XML文档 349 7.5.2 遍历解析树 350 7.5.3 查找文档中的节点 351 7.5.4 解析节点属性 352 7.5.5 解析时监视事件 354 7.5.6 创建一个定制树构造器 356 7.5.7 解析串 357 7.5.8 用元素节点构造文档 359 7.5.9 美观打印XML 359 7.5.10 设置元素属性 360 7.5.11 由节点列表构造树 362 7.5.12 将XML串行化至一个流 364 7.6 csv:逗号分隔值文件 366 7.6.1 读文件 366 7.6.2 写文件 367 7.6.3 方言 368 7.6.4 使用字段名 373 第8章 数据压缩与归档 375 8.1 zlib:GNU zlib压缩 375 8.1.1 处理内存中的数据 375 8.1.2 增量压缩与解压缩 377 8.1.3 混合内容流 378 8.1.4 校验和 378 8.1.5 压缩网络数据 379 8.2 gzip:读写GNU zip文件 382 8.2.1 写压缩文件 382 8.2.2 读压缩数据 384 8.2.3 处理流 385 8.3 bz2:bzip2压缩 386 8.3.1 内存中的一次性操作 386 8.3.2 增量压缩和解压缩 388 8.3.3 混合内容流 388 8.3.4 写压缩文件 389 8.3.5 读压缩文件 390 8.3.6 读写Unicode数据 391 8.3.7 压缩网络数据 392 8.4 tarfile:tar归档访问 395 8.4.1 测试tar文件 396 8.4.2 从归档读取元数据 396 8.4.3 从归档抽取文件 397 8.4.4 创建新归档 399 8.4.5 使用候选归档成员名 399 8.4.6 从非文件源写数据 400 8.4.7 追加到归档 400 8.4.8 处理压缩归档 401 8.5 zipfile:ZIP归档访问 402 8.5.1 测试ZIP文件 402 8.5.2 从归档读取元数据 402 8.5.3 从归档抽取归档文件 404 8.5.4 创建新归档 404 8.5.5 使用候选归档成员名 406 8.5.6 从非文件源写数据 406 8.5.7 利用ZipInfo实例写数据 407 8.5.8 追加到文件 407 8.5.9 Python ZIP归档 408 8.5.10 限制 410 第9章 加密 411 9.1 hashlib:密码散列 411 9.1.1 散列算法 411 9.1.2 示例数据 412 9.1.3 MD5示例 412 9.1.4 SHA1示例 412 9.1.5 按名创建散列 413 9.1.6 增量更新 413 9.2 hmac:密码消息签名与验证 414 9.2.1 消息签名 415 9.2.2 候选摘要类型 415 9.2.3 二进制摘要 416 9.2.4 消息签名的应用 416 第 10 章 使用进程、线程和协程提供并发性 420 10.1 subprocess:创建附加进程 420 10.1.1 运行外部命令 421 10.1.2 直接处理管道 425 10.1.3 连接管道段 427 10.1.4 与其他命令交互 428 10.1.5 进程间传递信号 430 10.2 signal:异步系统事件 434 10.2.1 接收信号 434 10.2.2 获取已注册的处理器 435 10.2.3 发送信号 436 10.2.4 闹铃 436 10.2.5 忽略信号 437 10.2.6 信号和线程 438 10.3 threading:进程中管理并发操作 440 10.3.1 Thread对象 440 10.3.2 确定当前线程 441 10.3.3 守护与非守护线程 442 10.3.4 枚举所有线程 444 10.3.5 派生线程 445 10.3.6 定时器线程 447 10.3.7 线程间传送信号 447 10.3.8 控制资源访问 449 10.3.9 同步线程 453 10.3.10 限制资源的并发访问 456 10.3.11 线程特定的数据 457 10.4 multiprocessing:像线程一样管理进程 459 10.4.1 multiprocessing基础 460 10.4.2 可导入的目标函数 461 10.4.3 确定当前进程 461 10.4.4 守护进程 462 10.4.5 等待进程 463 10.4.6 终止进程 465 10.4.7 进程退出状态 466 10.4.8 日志 467 10.4.9 派生进程 469 10.4.10 向进程传递消息 469 10.4.11 进程间信号传输 472 10.4.12 控制资源访问 473 10.4.13 同步操作 474 10.4.14 控制资源的并发访问 475 10.4.15 管理共享状态 476 10.4.16 共享命名空间 477 10.4.17 进程池 479 10.4.18 实现MapReduce 480 10.5 asyncio:异步I/O、事件循环和并发工具 484 10.5.1 异步并发概念 484 10.5.2 利用协程合作完成多任务 485 10.5.3 调度常规函数调用 488 10.5.4 异步地生成结果 490 10.5.5 并发地执行任务 492 10.5.6 组合协程和控制结构 495 10.5.7 同步原语 499 10.5.8 提供协议类抽象的异步I/O 505 10.5.9 使用协程和流的异步I/O 510 10.5.10 使用SSL 514 10.5.11 与域名服务交互 516 10.5.12 使用子进程 518 10.5.13 接收UNIX信号 523 10.5.14 结合使用协程、线程与进程 525 10.5.15 用asyncio调试 527 10.6 concurrent.futures:管理并发任务池 530 10.6.1 利用基本线程池使用map() 531 10.6.2 调度单个任务 532 10.6.3 按任意顺序等待任务 532 10.6.4 Future回调 533 10.6.5 撤销任务 534 10.6.6 任务中的异常 535 10.6.7 上下文管理器 536 10.6.8 进程池 537 第 11 章 网络通信 539 11.1 ipaddress:Internet地址 539 11.1.1 地址 539 11.1.2 网络 540 11.1.3 接口 543 11.2 socket:网络通信 544 11.2.1 寻址、协议簇和套接字类型 544 11.2.2 TCP/IP客户和服务器 552 11.2.3 用户数据报客户和服务器 558 11.2.4 UNIX域套接字 560 11.2.5 组播 563 11.2.6 发送二进制数据 566 11.2.7 非阻塞通信和超时 568 11.3 selectors:I/O多路复用抽象 568 11.3.1 操作模型 569 11.3.2 回送服务器 569 11.3.3 回送客户 570 11.3.4 服务器和客户 571 11.4 select:高效等待I/O 572 11.4.1 使用select() 572 11.4.2 带超时的非阻塞I/O 577 11.4.3 使用poll() 579 11.4.4 平台特定的选项 582 11.5 socketserver:创建网络服务器 583 11.5.1 服务器类型 583 11.5.2 服务器对象 583 11.5.3 实现服务器 584 11.5.4 请求处理器 584 11.5.5 回送示例 584 11.5.6 线程和进程 588 第 12 章 互联网 592 12.1 urllib.parse:分解URL 592 12.1.1 解析 593 12.1.2 反解析 595 12.1.3 连接 596 12.1.4 解码查询参数 597 12.2 urllib.request:网络资源访问 599 12.2.1 HTTP GET 599 12.2.2 编码参数 600 12.2.3 HTTP POST 601 12.2.4 添加发出首部 602 12.2.5 从请求提交表单数据 602 12.2.6 上传文件 603 12.2.7 创建定制协议处理器 606 12.3 urllib.robotparser: Internet蜘蛛访问控制 608 12.3.1 robots.txt 608 12.3.2 测试访问权限 609 12.3.3 长寿命蜘蛛 610 12.4 base64:用ASCII编码二进制数据 611 12.4.1 Base64编码 611 12.4.2 Base64解码 612 12.4.3 URL安全的变种 612 12.4.4 其他编码 613 12.5 http.server:实现Web服务器的基类 615 12.5.1 HTTP GET 615 12.5.2 HTTP POST 616 12.5.3 线程和进程 618 12.5.4 处理错误 619 12.5.5 设置首部 620 12.5.6 命令行用法 621 12.6 http.cookies:HTTP cookie 622 12.6.1 创建和设置cookie 622 12.6.2 Morsel 622 12.6.3 编码的值 624 12.6.4 接收和解析Cookie首部 624 12.6.5 候选输出格式 625 12.7 webbrowser:显示Web页面 626 12.7.1 简单示例 626 12.7.2 窗口与标签页 626 12.7.3 使用特定浏览器 627 12.7.4 BROWSER变量 627 12.7.5 命令行接口 627 12.8 uuid:全局唯一标识符 628 12.8.1 UUID 1:IEEE 802 MAC地址 628 12.8.2 UUID 3和5:基于名字的值 630 12.8.3 UUID 4:随机值 631 12.8.4 处理UUID对象 631 12.9 json:JavaScript对象记法 632 12.9.1 编码和解码简单数据类型 633 12.9.2 人类可读和紧凑输出 633 12.9.3 编码字典 635 12.9.4 处理定制类型 636 12.9.5 编码器和解码器类 638 12.9.6 处理流和文件 640 12.9.7 混合数据流 641 12.9.8 命令行上处理JSON 641 12.10 xmlrpc.client:XML-RPC的客户库 642 12.10.1 连接服务器 643 12.10.2 数据类型 645 12.10.3 传递对象 648 12.10.4 二进制数据 648 12.10.5 异常处理 650 12.10.6 将调用组合在一个消息中 650 12.11 xmlrpc.server:一个XML-RPC服务器 652 12.11.1 一个简单的服务器 652 12.11.2 候选API名 653 12.11.3 加点的API名 654 12.11.4 任意API名 655 12.11.5 公布对象的方法 656 12.11.6 分派调用 657 12.11.7 自省API 659 第 13 章 email 662 13.1 smtplib:简单邮件传输协议客户 662 13.1.1 发送email消息 662 13.1.2 认证和加密 663 13.1.3 验证email地址 666 13.2 smtpd:示例邮件服务器 667 13.2.1 邮件服务器基类 667 13.2.2 调试服务器 669 13.2.3 代理服务器 670 13.3 mailbox:管理email归档 670 13.3.1 mbox 671 13.3.2 Maildir 673 13.3.3 消息标志 678 13.3.4 其他格式 680 13.4 imaplib:IMAP4客户库 680 13.4.1 变种 680 13.4.2 连接服务器 681 13.4.3 示例配置 682 13.4.4 列出邮箱 682 13.4.5 邮箱状态 684 13.4.6 选择邮箱 686 13.4.7 搜索消息 686 13.4.8 搜索规则 687 13.4.9 获取消息 689 13.4.10 完整消息 693 13.4.11 上传消息 694 13.4.12 移动和复制消息 695 13.4.13 删除消息 696 第 14 章 应用构建模块 699 14.1 argparse:命令行选项和参数解析 700 14.1.1 建立解析器 700 14.1.2 定义参数 700 14.1.3 解析命令行 700 14.1.4 简单示例 701 14.1.5 帮助输出 707 14.1.6 解析器组织 711 14.1.7 高级参数处理 716 14.2 getopt:命令行选项解析 722 14.2.1 函数参数 722 14.2.2 短格式选项 723 14.2.3 长格式选项 723 14.2.4 一个完整的例子 723 14.2.5 缩写长格式选项 725 14.2.6 GNU式选项解析 725 14.2.7 结束参数处理 726 14.3 readline:GNU readline库 727 14.3.1 配置readline 727 14.3.2 完成文本 728 14.3.3 访问完成缓冲区 731 14.3.4 输入历史 733 14.3.5 hook 736 14.4 getpass:安全密码提示 737 14.4.1 示例 737 14.4.2 无终端使用getpass 738 14.5 cmd:面向行的命令处理器 739 14.5.1 处理命令 739 14.5.2 命令参数 740 14.5.3 现场帮助 741 14.5.4 自动完成 742 14.5.5 覆盖基类方法 744 14.5.6 通过属性配置Cmd 745 14.5.7 运行shell命令 746 14.5.8 候选输入 747 14.5.9 sys.argv的命令 748 14.6 shlex:解析shell类语法 749 14.6.1 解析加引号的字符串 749 14.6.2 为shell建立安全的字符串 751 14.6.3 嵌入注释 751 14.6.4 将字符串分解为token 752 14.6.5 包含其他token源 752 14.6.6 控制解析器 753 14.6.7 错误处理 755 14.6.8 POSIX与非POSIX解析 756 14.7 configparser:处理配置文件 757 14.7.1 配置文件格式 757 14.7.2 读取配置文件 758 14.7.3 访问配置设置 759 14.7.4 修改设置 765 14.7.5 保存配置文件 766 14.7.6 选项搜索路径 767 14.7.7 用拼接合并值 768 14.8 logging:报告状态、错误和信息消息 772 14.8.1 日志系统的组成 773 14.8.2 应用与库中的日志记录 773 14.8.3 记入文件 773 14.8.4 旋转日志文件 774 14.8.5 详细级别 774 14.8.6 命名日志记录器实例 776 14.8.7 日志树 776 14.8.8 与warnings模块集成 777 14.9 fileinput:命令行过滤器框架 778 14.9.1 将m3u文件转换为RSS 778 14.9.2 进度元数据 779 14.9.3 原地过滤 781 14.10 atexit:程序关闭回调 782 14.10.1 注册退出回调 782 14.10.2 修饰符语法 783 14.10.3 撤销回调 784 14.10.4 什么情况下不调用atexit函数 785 14.10.5 处理异常 786 14.11 sched:定时事件调度器 787 14.11.1 有延迟地运行事件 788 14.11.2 重叠事件 788 14.11.3 事件优先级 789 14.11.4 取消事件 790 第 15 章 国际化和本地化 791 15.1 gettext:消息编目 791 15.1.1 转换工作流概述 791 15.1.2 由源代码创建消息编目 792 15.1.3 运行时查找消息编目 794 15.1.4 复数值 795 15.1.5 应用与模块本地化 797 15.1.6 切换转换 798 15.2 locale:文化本地化API 798 15.2.1 探查当前本地化环境 799 15.2.2 货币 803 15.2.3 格式化数字 804 15.2.4 解析数字 805 15.2.5 日期和时间 806 第 16 章 开发工具 807 16.1 pydoc:模块的联机帮助 808 16.1.1 纯文本帮助 808 16.1.2 HTML帮助 809 16.1.3 交互式帮助 809 16.2 doctest:通过文档完成测试 810 16.2.1 起步 810 16.2.2 处理不可预测的输出 811 16.2.3 traceback 814 16.2.4 避开空白符 815 16.2.5 测试位置 819 16.2.6 外部文档 822 16.2.7 运行测试 824 16.2.8 测试上下文 827 16.3 unittest:自动测试框架 829 16.3.1 基本测试结构 829 16.3.2 运行测试 829 16.3.3 测试结果 830 16.3.4 断言真值 831 16.3.5 测试相等性 832 16.3.6 几乎相等? 833 16.3.7 容器 833 16.3.8 测试异常 837 16.3.9 测试固件 838 16.3.10 用不同输入重复测试 840 16.3.11 跳过测试 842 16.3.12 忽略失败测试 842 16.4 trace:执行程序流 843 16.4.1 示例程序 843 16.4.2 跟踪执行 844 16.4.3 代码覆盖 845 16.4.4 调用关系 847 16.4.5 编程接口 848 16.4.6 保存结果数据 849 16.4.7 选项 850 16.5 traceback:异常和栈轨迹 850 16.5.1 支持函数 851 16.5.2 检查栈 851 16.5.3 traceback异常 853 16.5.4 底层异常API 854 16.5.5 底层栈API 857 16.6 cgitb:详细的traceback报告 859 16.6.1 标准traceback转储 859 16.6.2 启用详细的traceback 860 16.6.3 traceback中的局部变量 862 16.6.4 异常属性 864 16.6.5 HTML输出 866 16.6.6 记录traceback 866 16.7 pdb:交互式调试工具 868 16.7.1 启动调试工具 869 16.7.2 控制调试工具 871 16.7.3 断点 881 16.7.4 改变执行流 890 16.7.5 用别名定制调试工具 895 16.7.6 保存配置设置 897 16.8 profile和pstats:性能分析 898 16.8.1 运行性能分析工具 898 16.8.2 在上下文中运行 901 16.8.3 pstats:保存和处理统计信息 901 16.8.4 限制报告内容 903 16.8.5 调用者/被调用者图 903 16.9 timeit:测量小段Python代码执行的时间 905 16.9.1 模块内容 905 16.9.2 基本示例 905 16.9.3 将值存储在字典中 906 16.9.4 从命令行执行 908 16.10 tabnanny:缩进验证工具 909 16.11 compileall:字节编译源文件 910 16.11.1 编译一个 910 16.11.2 忽略文件 911 16.11.3 编译sys.path 912 16.11.4 编译单个文件 912 16.11.5 从命令行运行 913 16.12 pyclbr:类浏览器 914 16.12.1 扫描类 915 16.12.2 扫描函数 916 16.13 venv:创建虚拟环境 917 16.13.1 创建环境 917 16.13.2 虚拟环境的内容 917 16.13.3 使用虚拟环境 918 16.14 ensurepip:安装Python包安装工具 920 第 17 章 运行时特性 922 17.1 site:全站点配置 922 17.1.1 导入路径 922 17.1.2 用户 923 17.1.3 路径配置文件 924 17.1.4 定制站点配置 926 17.1.5 定制用户配置 927 17.1.6 禁用site模块 929 17.2 sys:系统特定配置 929 17.2.1 解释器设置 929 17.2.2 运行时环境 935 17.2.3 内存管理和限制 937 17.2.4 异常处理 942 17.2.5 底层线程支持 944 17.2.6 模块和导入 947 17.2.7 跟踪程序运行情况 963 17.3 os:可移植访问操作系统特定特性 968 17.3.1 检查文件系统内容 968 17.3.2 管理文件系统权限 971 17.3.3 创建和删除 973 17.3.4 处理符号链接 973 17.3.5 安全地替换现有文件 974 17.3.6 检测和改变进程所有者 975 17.3.7 管理进程环境 976 17.3.8 管理进程工作 977 17.3.9 运行外部命令 977 17.3.10 用os.fork()创建进程 979 17.3.11 等待子进程 980 17.3.12 Spawn创建新进程 982 17.3.13 操作系统错误码 982 17.4 platform:系统版本信息 983 17.4.1 解释器 983 17.4.2 平台 984 17.4.3 操作系统和硬件信息 985 17.4.4 可执行程序体系结构 986 17.5 resource:系统资源管理 987 17.5.1 当前使用情况 987 17.5.2 资源限制 988 17.6 gc:垃圾回收器 990 17.6.1 跟踪引用 990 17.6.2 强制垃圾回收 992 17.6.3 查找无法回收的对象引用 993 17.6.4 回收阈值和代 995 17.6.5 调试 998 17.7 sysconfig:解释器编译时配置 1002 17.7.1 配置变量 1002 17.7.2 安装路径 1004 17.7.3 Python版本和平台 1007 第 18 章 语言工具 1009 18.1 warnings:非致命警告 1009 18.1.1 分类和过滤 1010 18.1.2 生成警告 1010 18.1.3 用模式过滤 1011 18.1.4 重复的警告 1013 18.1.5 候选消息传送函数 1013 18.1.6 格式化 1014 18.1.7 警告中的栈层次 1014 18.2 abc:抽象基类 1015 18.2.1 ABC如何工作 1015 18.2.2 注册一个具体类 1016 18.2.3 通过派生实现 1017 18.2.4 辅助基类 1017 18.2.5 不完整的实现 1018 18.2.6 ABC中的具体方法 1019 18.2.7 抽象属性 1020 18.2.8 抽象类和静态方法 1022 18.3 dis:Python字节码反汇编工具 1023 18.3.1 基本反汇编 1023 18.3.2 反汇编函数 1024 18.3.3 类 1025 18.3.4 源代码 1026 18.3.5 使用反汇编调试 1027 18.3.6 循环的性能分析 1028 18.3.7 编译器优化 1033 18.4 inspect:检查现场对象 1035 18.4.1 示例模块 1035 18.4.2 检查模块 1035 18.4.3 检查类 1036 18.4.4 检查实例 1038 18.4.5 文档串 1038 18.4.6 获取源代码 1039 18.4.7 方法和函数签名 1041 18.4.8 类层次体系 1043 18.4.9 方法解析顺序 1044 18.4.10 栈与帧 1045 18.4.11 命令行接口 1047 第 19 章 模块和包 1048 19.1 importlib:Python的导入机制 1048 19.1.1 示例包 1048 19.1.2 模块类型 1049 19.1.3 导入模块 1049 19.1.4 加载工具 1051 19.2 pkgutil:包工具 1052 19.2.1 包导入路径 1052 19.2.2 包的开发版本 1054 19.2.3 用PKG文件管理路径 1055 19.2.4 嵌套包 1056 19.2.5 包数据 1058 19.3 zipimport:从ZIP归档加载Python代码 1060 19.3.1 示例 1060 19.3.2 查找模块 1061 19.3.3 访问代码 1061 19.3.4 源代码 1062 19.3.5 包 1063 19.3.6 数据 1063 附录A 移植说明 1066 附录B 标准库之外 1081 |