
本书用滚雪球的思维讲解 Python 的知识体系。 本书共 31 章,分为 3 个部分。 第 1 部分为基础篇,包括第 1~15 章,介绍 Python 语言核心知识点。 第 2 部分为进阶篇,包括第 16~28 章,是进阶内容,也是 Python 语言的魅力点所在。通过对这部分 内容的学习,读者会全方位地感受到 Python 的灵活、迅捷、禅意。 第 3 部分为实战篇,包括第 29~31 章,通过 3 个实战案例,介绍 Python 的数据处理能力,以及 Python 在网站方面的应用。
前 言 正如本书的书名《滚雪球学 Python》一样,笔者希望大家用滚雪球的思维学习 Python:第1 遍浏览 Python 核心内容;第 2 遍补齐周边知识;第 3 遍夯实;第 4 遍拔高。每一遍滚雪球式的学习,都能丰富自己的知识。 Python 是一种动态类型的高级编程语言,具有丰富的库和框架,能帮助开发者快速构建应用程序。它还具有较好的社区支持,被广泛应用于众多领域,包括网络服务、数据处理、科学计算和人工智能等。 Python 语言的特点是语法简洁和易读,代码易于编写、维护和理解。它还支持多种编程范式,包括面向对象、函数式和过程式编程。此外,Python 支持动态数据类型和自动内存管理,使得开发者能够更加专注于实际的应用逻辑,而无须过多地关注底层细节。 正因为这样,如果让大家选择一门编程语言,笔者一定会推荐 Python。 一、本书编写原则 1. 严格筛选知识点 本书专为初学者编写。笔者精心选择了初学者应首先掌握的知识点,帮助读者快速了解Python 语言的体系。 2. 易读 本书非常容易阅读,不会让读者感到枯燥。笔者希望读者能够无障碍地阅读本书,真正掌握 Python 语言的基础知识,并由浅入深地吸收 Python 语言的所有精华。 3. 知识面广 本书旨在帮助读者快速了解 Python 语言,因此笔者在本书中融入了大量的细节内容,希望读者在阅读完本书后能够流利地讲述 Python 语言的体系。 二、本书读者 本书读者对象分为如下几类。 1. 对于大中专在校学生,可以将本书作为学校教材的补充读物,让学习 Python 变得有趣。 2. 对于已经掌握其他语言的从业人员,本书可以帮助你快速掌握 Python。 3. 本书也适合用作培训机构教材或自学资料。 4. 对于其他行业的从业人员,如果想无门槛地进入 Python 世界,推荐你将本书作为“敲门砖”。 三、本书阅读建议 学习编程最简单、最高效的方式就是“看别人的代码”“临摹别人的代码”“自己写代码”,所以在阅读本书时,一定要在手边放置一台计算机,用于实践。 在阅读过程中,如果发现任何问题或者不确定的技术点,都可以在 CSDN 平台检索“梦想橡皮擦”直接私信咨询,或者加入“78 技术人”社群进行学习。 在编程学习的道路上,要永远相信:一个人或许走得很快,但一群人能走得更远。 四、本书内容 本书共 31 章,分为 3 个部分。 第 1 部分为基础篇,包括第 1~15 章,介绍 Python 语言最核心的知识点。任何学习者都要从这里开始。 第 2 部分为进阶篇,包括第 16~28 章,是进阶内容,也是 Python 语言的魅力点所在。通过对这部分内容的学习,读者会全方位地感受到 Python 的灵活、迅捷、禅意。 第 3 部分为实战篇,包括第 29~31 章,是实战内容。通过 3 个实战案例,介绍 Python 的数据处理能力,以及 Python 在网站方面的应用。 五、致谢 本书的完成离不开家人和朋友的帮助。 首先感谢擦姐,是她将滚雪球学习概念与“梦想橡皮擦”账号推到今天的高度,并在生活中全面地照顾家庭,让笔者有时间专注于写作。 感谢电子工业出版社编辑张晶、徐津平、梁卫红在出版过程中给笔者提供的建议和帮助,是你们的专业,让本书能够顺利与读者见面。 感谢为本书写推荐语的 CSDN 运营负责人路敏老师,感谢橡皮擦好友杨秀璋、1_bit、小傅哥,你们的推荐让本书赢在起点。 感谢 CSDN 平台的正反馈,正是因为有网友的支持,笔者才能坚持走在知识输出的道路上。 王德朕
第 1 部分 基础篇 1 Python 正确起手式 ................................................................................... 1 1.1 滚雪球学 Python 课程前置导语 ................................................................................... 1 1.2 Python 语言简介 ............................................................................................................ 1 1.2.1 Python 作者 ........................................................................................................ 2 1.2.2 Python 语言发展简介 ........................................................................................ 2 1.2.3 Python 语言的前景 ............................................................................................ 2 1.3 Python 环境安装 ............................................................................................................ 3 1.3.1 Python 3.7.x 安装 ............................................................................................... 3 1.3.2 PyCharm 安装 .................................................................................................... 4 1.4 学语言先学注释 ............................................................................................................ 8 1.4.1 注释符号 ............................................................................................................ 9 1.4.2 多行注释 ............................................................................................................ 9 1.5 认识变量 ...................................................................................................................... 10 1.5.1 变量命名规则 .................................................................................................. 11 1.5.2 不合规变量名举例 .......................................................................................... 11 1.6 打印输出函数 print() ................................................................................................... 12 1.7 数学运算及优先级问题 .............................................................................................. 12 1.8 赋值运算符 .................................................................................................................. 13 2 无门槛掌握数据类型与输入/输出函数 ..................................................... 14 2.1 基本数据类型 .............................................................................................................. 14 2.1.1 数值数据类型 .................................................................................................. 15 2.1.2 整数的不同形式表示 ...................................................................................... 15 2.1.3 数据类型强制转换 .......................................................................................... 16 2.1.4 扩展几个数值数据类型常用的函数 .............................................................. 17 2.1.5 布尔值数据类型 .............................................................................................. 18 2.1.6 字符串数据类型 .............................................................................................. 18 2.2 输入与输出 .................................................................................................................. 21 2.2.1 print()函数格式化输出 .................................................................................... 22 2.2.2 format()函数 ..................................................................................................... 23 2.2.3 input()函数数据输入 ....................................................................................... 24 3 无转折不编程 ......................................................................................... 25 3.1 关系运算符 .................................................................................................................. 25 3.2 算术运算符 .................................................................................................................. 26 3.3 逻辑运算符 .................................................................................................................. 27 3.4 编程中的转折——流程控制 ...................................................................................... 27 3.4.1 if 语句 .............................................................................................................. 27 3.4.2 if…else…语句 ................................................................................................. 29 3.4.3 if…elif…else…语句 ........................................................................................ 29 3.4.4 if 语句的嵌套................................................................................................... 30 4 列表一学完,Python 会一半 ................................................................... 31 4.1 列表是个啥 .................................................................................................................. 31 4.1.1 列表定义 .......................................................................................................... 31 4.1.2 列表读取 .......................................................................................................... 32 4.1.3 列表切片 .......................................................................................................... 33 4.1.4 列表相关内置函数 .......................................................................................... 33 4.1.5 列表元素的修改与删除 .................................................................................. 34 4.1.6 列表相加、相乘、删除 .................................................................................. 35 4.2 初识 Python 面向对象 ................................................................................................. 36 4.2.1 字符串对象的方法 .......................................................................................... 36 4.2.2 快速获取系统内置方法 .................................................................................. 37 4.3 通过方法增删列表元素 .............................................................................................. 38 4.3.1 追加列表元素 .................................................................................................. 38 4.3.2 插入列表元素 .................................................................................................. 39 4.3.3 删除列表元素 .................................................................................................. 40 4.4 列表排序 ...................................................................................................................... 40 4.4.1 排序方法 sort() ................................................................................................ 41 4.4.2 排序函数 sorted() ............................................................................................. 41 4.5 其他列表方法 .............................................................................................................. 42 4.5.1 检索元素索引 .................................................................................................. 42 4.5.2 统计列表元素出现次数 .................................................................................. 42 4.5.3 转换为字符串 .................................................................................................. 43 4.5.4 追加列表 .......................................................................................................... 43 4.6 多维列表 ...................................................................................................................... 43 4.7 特殊的列表字符串 ...................................................................................................... 44 4.7.1 字符串索引与切片 .......................................................................................... 44 4.7.2 可用于字符串的部分函数和方法 .................................................................. 44 4.7.3 将字符串转换为列表 ...................................................................................... 44 5 Python 循环的本质就是一段代码懒得重复写 .......................................... 45 5.1 for 循环 ........................................................................................................................ 45 5.1.1 for 循环基本使用 ............................................................................................ 45 5.1.2 for 循环嵌套 if 判断语句 ................................................................................ 46 5.2 range()函数 .................................................................................................................. 46 5.3 for 循环补充知识 ........................................................................................................ 48 5.3.1 for 循环嵌套 .................................................................................................... 48 5.3.2 break 终止循环 ................................................................................................ 49 5.3.3 continue 继续循环 ........................................................................................... 49 5.3.4 for…else 循环 .................................................................................................. 50 5.4 while 循环 .................................................................................................................... 51 5.4.1 while 循环的经典应用 .................................................................................... 51 5.4.2 while 循环其他说明 ........................................................................................ 52 6 Python 元组,不可变的列表 ................................................................... 53 6.1 元组的定义 .................................................................................................................. 53 6.2 读取元组中的元素 ...................................................................................................... 54 6.3 元组的其他知识补充 .................................................................................................. 54 6.4 元组与列表转换 .......................................................................................................... 55 6.5 内置函数 zip() ............................................................................................................. 55 6.6 元组的功能与应用场景 .............................................................................................. 56 7 字典怎么查,Python 字典就怎么用 ........................................................ 57 7.1 字典的基本操作 .......................................................................................................... 57 7.1.1 字典的定义 ...................................................................................................... 57 7.1.2 获取字典的值 .................................................................................................. 58 7.1.3 增加元素、修改元素、删除元素 .................................................................. 58 7.1.4 字典的补充知识 .............................................................................................. 59 7.2 字典的遍历 .................................................................................................................. 60 7.2.1 遍历字典的键值 .............................................................................................. 60 7.2.2 遍历字典的键 .................................................................................................. 61 7.2.3 遍历字典的值 .................................................................................................. 61 7.3 字典与其他数据类型的结合 ...................................................................................... 62 7.3.1 列表嵌套字典 .................................................................................................. 62 7.3.2 字典嵌套列表 .................................................................................................. 62 7.4 字典的方法 .................................................................................................................. 62 7.4.1 fromkeys()方法 ................................................................................................ 62 7.4.2 get()方法 .......................................................................................................... 63 7.4.3 setdefault()方法 ................................................................................................ 63 7.4.4 pop()方法 ......................................................................................................... 64 8 Python 中无序且元素唯一的数据类型——集合 ...................................... 65 8.1 集合是什么 .................................................................................................................. 65 8.1.1 集合的声明 ...................................................................................................... 65 8.1.2 set()函数定义集合 ........................................................................................... 66 8.2 集合的操作 .................................................................................................................. 67 8.2.1 交集 .................................................................................................................. 67 8.2.2 并集 .................................................................................................................. 67 8.2.3 差集 .................................................................................................................. 68 8.2.4 对称差集 .......................................................................................................... 68 8.3 集合的方法 .................................................................................................................. 69 8.3.1 集合的增删 ...................................................................................................... 69 8.3.2 集合的其地方法 .............................................................................................. 70 8.4 集合可用的内置函数和冻结集合 .............................................................................. 71 9 函数是 Python 基础部分的第一道难关.................................................... 72 9.1 函数出现的背景 .......................................................................................................... 72 9.2 函数初接触 .................................................................................................................. 72 9.2.1 函数的定义 ...................................................................................................... 72 9.2.2 无参数无返回值的函数 .................................................................................. 73 9.3 函数的参数设计 .......................................................................................................... 74 9.3.1 传递一个参数 .................................................................................................. 74 9.3.2 传递多个参数 .................................................................................................. 74 9.3.3 关键词参数 ...................................................................................................... 75 9.3.4 参数默认值 ...................................................................................................... 75 9.4 函数返回值 .................................................................................................................. 76 9.4.1 返回 None ........................................................................................................ 76 9.4.2 返回一个值 ...................................................................................................... 76 9.4.3 返回多个值 ...................................................................................................... 77 9.4.4 返回字典与列表 .............................................................................................. 77 9.5 调用函数时参数是列表 .............................................................................................. 77 9.6 局部变量与全局变量 .................................................................................................. 78 9.7 传递任意数量的参数 .................................................................................................. 79 9.7.1 普通参数与任意参数的组合 .......................................................................... 79 9.7.2 普通参数与任意数量的关键词参数 .............................................................. 80 9.8 函数的扩展学习 .......................................................................................................... 81 10 Python 面向对象的编程 ....................................................................... 82 10.1 类的定义与使用 ........................................................................................................ 82 10.1.1 定义类、属性与方法 .................................................................................... 82 10.1.2 属性与方法的调用 ........................................................................................ 83 10.1.3 类的构造函数 ................................................................................................ 84 10.1.4 属性初始值 .................................................................................................... 85 10.2 封装 ............................................................................................................................ 86 10.2.1 私有属性 ........................................................................................................ 86 10.2.2 私有方法 ........................................................................................................ 87 10.3 继承 ............................................................................................................................ 88 10.3.1 继承的简单应用 ............................................................................................ 88 10.3.2 子类与父类有相同名称的属性或方法 ........................................................ 89 10.3.3 子类用父类的方法 ........................................................................................ 90 10.4 多态 ............................................................................................................................ 91 10.5 多重继承 .................................................................................................................... 92 10.6 对象的数据类型判断 ................................................................................................ 92 10.7 isinstance()函数 ......................................................................................................... 92 10.8 特殊属性、方法 ........................................................................................................ 93 11 Python 模块的设计与应用 ................................................................... 95 11.1 将函数放到模块中 .................................................................................................... 95 11.2 应用函数模块 ............................................................................................................ 96 11.2.1 import 导入模块 ............................................................................................ 96 11.2.2 导入模块的某个函数 .................................................................................... 97 11.2.3 as 别名 ............................................................................................................ 97 11.3 将类放到模块中 ........................................................................................................ 98 11.3.1 import 导入模块 ............................................................................................ 98 11.3.2 导入模块中的类 ............................................................................................ 99 11.4 常见模块 .................................................................................................................... 99 11.4.1 随机数 random 模块 ...................................................................................... 99 11.4.2 时间模块 ...................................................................................................... 101 12 Python 文件读取与写入 ..................................................................... 102 12.1 文件夹和文件路径 .................................................................................................. 102 12.1.1 绝对路径和相对路径 .................................................................................. 103 12.1.2 os 模块与 os.path 模块 ................................................................................ 103 12.1.3 路径检查方法 .............................................................................................. 105 12.1.4 目录操作 ...................................................................................................... 105 12.1.5 获取文件大小 .............................................................................................. 106 12.1.6 获取指定目录下的所有内容 ...................................................................... 106 12.2 Python 读写文件 ...................................................................................................... 106 12.2.1 读取文件 ...................................................................................................... 106 12.2.2 写入文件 ...................................................................................................... 109 12.3 shutil 模块 ................................................................................................................ 110 12.3.1 文件复制 ...................................................................................................... 110 12.3.2 复制目录 ...................................................................................................... 111 12.3.3 多功能 move()方法 ..................................................................................... 111 12.3.4 删除有数据的目录 ...................................................................................... 111 13 Python 程序异常处理与 logging 模块 ................................................ 112 13.1 程序异常 .................................................................................................................. 112 13.1.1 最常见的错误——除数为 0 ....................................................................... 112 13.1.2 try…except 语句 .......................................................................................... 113 13.1.3 try…except…else 语句 ................................................................................ 114 13.2 异常类型 .................................................................................................................. 115 13.2.1 常见的异常类型 .......................................................................................... 115 13.2.2 捕捉多个异常 .............................................................................................. 116 13.2.3 一个 except 捕获多个异常 .......................................................................... 116 13.2.4 直接抛出异常 .............................................................................................. 116 13.3 finally 语句 .............................................................................................................. 117 13.4 日志模块 logging ..................................................................................................... 117 13.4.1 日志信息等级 .............................................................................................. 117 13.4.2 格式化 logging 日志信息 ............................................................................ 118 13.4.3 将程序日志输出到文件中 .......................................................................... 119 13.4.4 停用程序日志 .............................................................................................. 120 14 在 Python 中操作 SQLite 数据库 ....................................................... 121 14.1 SQLite 基本使用 ..................................................................................................... 121 14.2 建立 SQLite 数据库表 ............................................................................................ 122 14.3 向表中增加数据 ...................................................................................................... 124 14.4 查询数据库中的表数据 .......................................................................................... 125 14.5 更新表数据 .............................................................................................................. 126 14.6 删除表数据 .............................................................................................................. 127 15 Python 中的多线程与多进程.............................................................. 128 15.1 Python 中的多线程 .................................................................................................. 128 15.1.1 简单的多线程 .............................................................................................. 129 15.1.2 向子线程中传递参数 .................................................................................. 130 15.1.3 线程命名 ...................................................................................................... 131 15.1.4 Daemon 守护线程 ....................................................................................... 133 15.1.5 堵塞主线程 .................................................................................................. 134 15.1.6 使用 is_alive()方法检验子线程是否在工作 .............................................. 135 15.1.7 自定义线程类 .............................................................................................. 136 15.1.8 资源锁定与解锁 .......................................................................................... 136 15.2 subprocess 模块 ....................................................................................................... 137 15.2.1 Popen()方法 ................................................................................................. 138 15.2.2 Popen()方法的参数 ..................................................................................... 138 15.2.3 通过关键字 start 打开程序 ......................................................................... 138 第 2 部分 进阶篇 16 列表与元组、字典与集合 .................................................................. 139 16.1 为何列表和元组总放在一起 .................................................................................. 139 16.1.1 列表和元组的切片 ...................................................................................... 140 16.1.2 负数索引与二者相互转换 .......................................................................... 140 16.1.3 列表与元组的存储方式 .............................................................................. 140 16.1.4 列表和元组的应用场景 .............................................................................. 141 16.2 字典与集合的那些事儿 .......................................................................................... 143 16.2.1 字典和集合的基础操作 .............................................................................. 143 16.2.2 字典与集合的排序 ...................................................................................... 145 16.2.3 字典与集合的效率问题 .............................................................................. 146 17 列表推导式与字典推导式 .................................................................. 148 17.1 列表推导式 .............................................................................................................. 148 17.2 字典推导式 .............................................................................................................. 150 17.3 元组推导式与集合推导式 ...................................................................................... 151 18 lambda 表达式 .................................................................................. 152 18.1 lambda 表达式的基本使用 ..................................................................................... 152 18.2 lambda 表达式与 def 定义函数的区别 .................................................................. 153 18.3 lambda 表达式的应用场景 ..................................................................................... 154 18.4 不要滥用 lambda 表达式 ........................................................................................ 155 19 内置函数 filter()、map()、reduce()、zip()、enumerate() .................. 156 19.1 filter()函数 ............................................................................................................... 156 19.2 map()函数 ................................................................................................................ 156 19.3 reduce()函数 ............................................................................................................. 157 19.4 zip()函数 .................................................................................................................. 158 19.5 enumerate()函数 ....................................................................................................... 159 20 函数装饰器 ........................................................................................ 160 20.1 装饰器的基本使用 .................................................................................................. 160 20.2 对带参数的函数进行装饰 ...................................................................................... 162 20.3 多个装饰器 .............................................................................................................. 164 20.4 functools.wraps ........................................................................................................ 168 20.5 基于类的装饰器 ...................................................................................................... 169 20.6 内置装饰器 .............................................................................................................. 170 21 闭包................................................................................................... 171 21.1 闭包的基本操作 ...................................................................................................... 171 21.2 闭包的作用域 .......................................................................................................... 172 21.3 闭包的作用 .............................................................................................................. 173 21.4 判断闭包函数 .......................................................................................................... 173 21.5 闭包存在的问题 ...................................................................................................... 174 22 Python 中的日期与时间 ..................................................................... 175 22.1 日期/时间模块简介 ................................................................................................. 175 22.2 time 时间模块 .......................................................................................................... 176 22.2.1 get_clock_info()函数 ................................................................................... 176 22.2.2 获取时间戳 .................................................................................................. 178 22.2.3 获取可读时间 .............................................................................................. 178 22.2.4 单调时间 monotonic time ............................................................................ 179 22.2.5 处理器时钟时间 .......................................................................................... 179 22.2.6 性能计数器 time.perf_counter ..................................................................... 180 22.2.7 时间组件 ...................................................................................................... 180 22.2.8 解析和格式化时间 ...................................................................................... 181 22.2.9 time 模块 ...................................................................................................... 182 22.3 datetime 模块 ........................................................................................................... 182 22.3.1 date 类 .......................................................................................................... 182 22.3.2 time 类 .......................................................................................................... 184 22.3.3 datetime 类 ................................................................................................... 184 22.3.4 timedelta 类 .................................................................................................. 184 22.4 calendar 模块 ........................................................................................................... 185 23 global 和 nonlocal 作用域 .................................................................. 186 23.1 Python 中的作用域 .................................................................................................. 186 23.2 global 关键字 ........................................................................................................... 187 22.3 nonlocal 关键字 ....................................................................................................... 189 24 Python 中的哈希表与可哈希对象 ...................................................... 191 24.1 哈希表(散列表) .................................................................................................. 191 24.2 可哈希与不可哈希 .................................................................................................. 191 24.3 hash()函数 ................................................................................................................ 192 24.4 hashlib 模块 ............................................................................................................. 193 25 Python 内置模块之 random ............................................................... 194 25.1 基本随机函数 .......................................................................................................... 194 25.1.1 seed()与 random()函数 ................................................................................ 194 25.1.2 getstate()和 setstate(state)函数 .................................................................... 195 25.2 扩展随机函数 .......................................................................................................... 196 25.2.1 randint()和 randrange()函数 ........................................................................ 196 25.2.2 getrandbits(k)和 choice(seq)函数 ................................................................ 197 25.2.3 shuffle(seq)和 sample(pop,k)函数 ............................................................... 197 25.3 分布随机函数 .......................................................................................................... 197 25.3.1 uniform(a,b)、betavariate 和 triangular 函数 .............................................. 198 25.3.2 其他分布随机函数 ...................................................................................... 198 26 Python 内置模块之 re,正则表达式的初阶用法 ................................ 199 26.1 re 库的应用 .............................................................................................................. 199 26.1.1 正则表达式语法 .......................................................................................... 199 26.1.2 re 库的基本用法 .......................................................................................... 200 26.2 re 库相关函数说明 .................................................................................................. 201 26.2.1 re.search()函数 ............................................................................................. 201 26.2.2 re.match()函数 ............................................................................................. 202 26.2.3 re.findall()函数 ............................................................................................. 202 26.2.4 re.split()函数 ................................................................................................ 202 26.2.5 re.finditer()函数 ........................................................................................... 204 26.2.6 re.sub()函数 .................................................................................................. 204 26.3 re 库的面向对象写法 .............................................................................................. 205 26.4 re 库的 match 对象 .................................................................................................. 205 26.4.1 match 对象的属性 ....................................................................................... 205 26.4.2 match 对象的方法 ....................................................................................... 206 27 sys 库、os 库、getopt 库与 filecmp 库 .............................................. 207 27.1 os 库 ......................................................................................................................... 207 27.1.1 os 库路径操作 ............................................................................................. 208 27.1.2 os 库进程管理 ............................................................................................. 209 27.1.3 os 库运行环境相关参数.............................................................................. 209 27.2 sys 库 ........................................................................................................................ 210 27.2.1 常见参数 ...................................................................................................... 210 27.2.2 常见方法 ...................................................................................................... 211 27.3 getopt 库 ................................................................................................................... 212 27.4 filecmp 库 ................................................................................................................. 213 27.4.1 filecmp.cmp()、filecmp.cmpfiles()函数 ...................................................... 213 27.4.2 目录比较 ...................................................................................................... 214 28 类函数、成员函数、静态函数、抽象函数和方法伪装属性 ................ 215 28.1 类函数 ...................................................................................................................... 215 28.2 静态函数 .................................................................................................................. 216 28.3 类函数与静态函数在继承类中的表现 .................................................................. 217 28.4 抽象函数 .................................................................................................................. 218 28.5 方法伪装属性 .......................................................................................................... 219 第 3 部分 实战篇 29 爬虫案例——某育儿网问答数据抓取................................................. 222 29.1 爬虫分析 .................................................................................................................. 222 29.1.1 类别页面分析 .............................................................................................. 222 29.1.2 问题列表页面分析 ...................................................................................... 224 29.2 爬虫逻辑编码 .......................................................................................................... 225 29.2.1 逻辑编码(伪代码) .................................................................................. 225 29.2.2 requests 库中的 get()方法说明 ................................................................... 225 29.2.3 获取所有的分类页面地址 .......................................................................... 228 29.2.4 循环所有的分类页面地址 .......................................................................... 228 29.2.5 获取每个分类对应的列表页面,并获取总页码 ...................................... 229 29.2.6 从第 1 页循环到总页码 .............................................................................. 229 29.3 案例收尾 .................................................................................................................. 230 30 爬虫案例——奥特曼图片采集 ........................................................... 232 30.1 目标站点分析 .......................................................................................................... 232 30.2 编码 .......................................................................................................................... 234 31 Python 开源框架:Flask ................................................................... 239 31.1 Flask 简介 ................................................................................................................ 239 31.1.1 完成一个 hello world 网页 .......................................................................... 239 31.1.2 获取用户请求数据 ...................................................................................... 241 31.1.3 在 URL 中提供多个参数 ............................................................................ 242 31.2 在 Flask 中操作数据库 ........................................................................................... 244 31.3 使用 Flask 模块实现 ajax 数据入库 ....................................................................... 247