《Python网络爬虫技术手册:基础·实战·强化》是“计算机科学与技术手册系列”图书之一,该系列图书内容全面,以理论联系实际、能学到并做到为宗旨,以技术为核心,以案例为辅助,引领读者全面学习基础技术、代码编写方法和具体应用项目,旨在为想要进入相应领域或者已经在该领域深耕多年的技术人员提供新而全的技术性内容及案例。 本书是一本侧重编程基础+实践的Python爬虫图书,从基础、实战、强化三个层次循序渐进地介绍了网络爬虫入门必备知识:基础篇主要讲解网络爬虫的基础内容;实战篇主要讲解目前应用最广的各类数据库爬虫相关技术和案例;强化篇结合数据库、数据分析、可视化等进行大型项目综合实战练习。本书内容充实,给读者提供了较为丰富全面的技术支持和案例强化,通过各种示例将学习与应用相结合,打造轻松学习、零压力学习的环境,通过案例对所学知识进行综合应用,通过开发实际项目将网络爬虫的各项技能应用到实际工作中,帮助读者实现学以致用,快速掌握网络爬虫的各项技能。 本书提供丰富的资源,包含109个实例、13个实战案例、2个应用强化项目,力求为读者打造一本基础+实战+强化一体化的、精彩的Python网络爬虫图书。 本书不仅适合初学者、数据采集相关技术人员、对数据感兴趣的人员,而且适合从事其他岗位想掌握一定的数据采集能力的职场人员阅读参考。
从工业4.0到“十四五”规划,我国信息时代正式踏上新的阶梯,电子设备已经普及,在人们的日常生活中随处可见。信息社会给人们带来了极大的便利,信息捕获、信息处理分析等在各个行业得到普遍应用,推动整个社会向前稳固发展。 计算机设备和信息数据的相互融合,对各个行业来说都是一次非常大的进步,已经渗入到工业、农业、商业、军事等领域,同时其相关应用产业也得到一定发展。就目前来看,各类编程语言的发展、人工智能相关算法的应用、大数据时代的数据处理和分析都是计算机科学领域各大高校、各个企业在不断攻关的难题,是挑战也是机遇。因此,我们策划编写了“计算机科学与技术手册系列”图书,旨在为想要进入相应领域的初学者或者已经在该领域深耕多年的从业者提供新而全的技术性内容,以及丰富、典型的实战案例。 现如今大数据已经渗透到每一个行业当中,成为重要的生产因素。由于人们不断对海量数据的挖掘与运用,爬虫工程师在互联网数据公司中占据非常重要的地位。 可以制作爬虫的编程语言有多种,其中最受欢迎的便是Python编程语言,该语言简单、易学,并且支持多种第三方模块,使得其应用范围越来越广。本书侧重网络爬虫的编程基础与实践,为保证读者学以致用,在实践方面循序渐进地进行3个层次的篇章介绍,即基础篇、实战篇和强化篇。 本书内容 全书共分为31章,主要通过“基础篇(16章)+实战篇(13章)+强化篇(2章)”三大维度一体化的讲解方式,具体的学习结构如下图所示。 本书特色 1.突出重点、学以致用 书中每个知识点都结合了简单、易懂的示例代码以及非常详细的注释信息,力求读者能够快速理解所学知识,提高学习效率,缩短学习路径。 实例代码与运行结果 2.提升思维、综合运用 本书以知识点综合运用的方式,带领读者学习各种趣味性较强的爬虫案例,让读者不断提升编写网络爬虫的思维,还可以快速提升对知识点的综合运用能力,让读者能够回顾以往所学的知识点,并结合新的知识点进行综合应用。 3.综合技术、实际项目 本书在强化篇中提供了两个贴近生活应用的项目,力求通过实际应用使读者更容易地掌握爬虫技术与应对业务的需求。爬虫项目都是根据实际开发经验总结而来的,包含了在实际开发中所遇到的各种问题。项目结构清晰、扩展性强,读者可根据个人需求进行扩展开发。 4.精彩栏目、贴心提示 本书根据实际学习的需要,设置了“注意”“说明”等许多贴心的小栏目,辅助读者轻松理解所学知识,规避编程陷阱。 本书由明日科技的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
ISBN:978-7-122-40009-3
语种:汉文
开本:16
出版时间:2022-01-01
装帧:平
页数:378