在大数据的时代背景下,使用网络爬虫是获取数据的一种重要手段,它可以减少我们生活中不必要的工作量。但是,千万不能乱用,因为涉及数据安全法,建议大家了解相关资料,合理规划爬虫。 《网络爬虫技术与应用(微课版)》介绍爬虫相关的常用工具及类库,基于Web、App的采集及项目的部署,不使用框架的普通爬虫脚本及使用两种爬虫框架的项目级爬虫。在实际工作中,feapder、scrapy这两个爬虫框架比较热门,企业使用得也比较多。掌握了爬虫框架,会让我们的开发工作事半功倍。《网络爬虫技术与应用(微课版)》主要包含requests、HTML、lxml、MySQL、JSON、JavaScript、Redis、jadx、pycharm、feappder、scrapy等内容,具体包含7个爬虫案例:基于requests xpath采集网站文本数据、使用feapder爬虫框架爬取房屋租售数据、使用分布式爬虫采集金融数据、使用批次分布式爬虫采集天气数据、使用scrapy爬虫爬取电影数据、App爬虫的实践、企业项目部署与应用。 《网络爬虫技术与应用(微课版)》入门门槛低,为便于上手操作,从所需技术和基础理论出发,再到每个步骤都经过验证,帮助读者创建开发环境。《网络爬虫技术与应用(微课版)》既可以作为高等院校大数据及其相关专业学生的教材,又可以作为对数据类工作感兴趣、有一定Python基础的人员的参考书。
《网络爬虫技术与应用(微课版)》可作为大数据工程化处理与应用职业技能等级标准实训与高职大数据技术专业核心课程教学的选用教材。《网络爬虫技术与应用(微课版)》从原生爬虫的使用开始,以框架爬虫、分布式爬虫等不同类型爬虫工具的应用作为项目,带领学习者体验当前大数据行业企业的爬虫工程师常用工具与工作流程,以此掌握工程化的爬虫应用能力。
随着互联网的发展,人们经常通过网络获取信息。在互联网发展初期,人们主要通过浏览门户网站的方式获取所需信息,但是随着Web的急速发展,用这种方式寻找所需的信息变得越来越困难。目前,人们大多通过搜索引擎获取有用信息,因此搜索引擎技术的发展将直接影响人们获取信息的速度和质量。
1994年,世界上第一个网络检索工具Web Crawler问世,目前较流行的搜索引擎有Baidu、Google、Yahoo、Infoseek、Inktomi、Teoma、Live Search等。出于保护商业机密的考虑,现在各个搜索引擎使用的Crawler 系统的技术内幕一般都不公开,现有的文献资料也仅限于概要性介绍。随着网络信息资源呈指数级增长及网络信息资源的动态变化,传统的搜索引擎提供的信息检索已无法满足人们日益增长的对个性化服务的需求。以何种策略访问网络,提高搜索效率,已成为近年来专业搜索引擎网络爬虫研究的主要问题之一。
网络爬虫源自Spider(或Crawler、robots、wanderer)等的意译。网络爬虫的定义有广义和狭义之分。狭义的网络爬虫定义认为:网络爬虫是指利用标准的HTTP 协议,根据超级链接和Web 文档检索的方法遍历万维网信息空间的软件程序。广义的网络爬虫定义认为:所有能利用HTTP协议检索Web 文档的软件都可称为网络爬虫。
网络爬虫是一个功能强大的自动提取网页的程序,它为搜索引擎从万维网下载网页,是搜索引擎的重要组成部分。它通过请求站点上的HTML文档访问某一站点。网络爬虫遍历Web 空间,不断地从一个站点移动到另一个站点,自动建立索引,并加入到网页数据库中。当它进入某个超级文本时,利用HTML 的标记结构来搜索信息并获取指向其他超级文本的URL 地址,可以完全不依赖用户干预实现网络上的自动爬行和搜索。网络爬虫在搜索时往往采用一定的搜索策略。
那么,网络爬虫如何爬取数据呢?它又有哪些种类呢?本书分7个项目进行了详细的介绍:基于requests xpath采集网站文本数据、使用feapder爬虫框架爬取房屋租售数据、使用分布式爬虫采集金融数据、使用批次分布式爬虫采集天气数据、使用Scrapy爬虫爬取电影数据、App爬虫的实践、企业项目部署与应用。
本书由郑淑晖、张正球担任主编,其中郑淑晖负责项目一至项目四的编写,张正球负责项目五至项目七的编写。
由于时间紧迫和编者的水平所限,书中难免有疏漏之处,敬请读者批评指正。
编 者
郑淑晖,北京信息职业技术学院人工智能学院学院大数据专业负责人,副教授。承担专业多门核心课程的教学工作。参与2021年北京市职业教育教学成果奖项目基于标准引领 智能测评的教师职业能力提升模式研究与实践(一等奖);主持校级课题基于粒子群算法改进的数据优化策略及应用研究(三等奖)。曾获北京市职业院校信息技术类专业《基于工作过程导向的课程》设计与实践竞赛专业组二等奖、校互动教学一等奖、青年教师课堂教学能力竞赛学院二等奖、信息化课程教学大赛二等奖。在国内外公开发行刊物、EI检索及核心刊物发表多篇论文,参与多本教材的编写,参加企业实践锻炼,有丰富的教学和项目开发经验。
项目一 基于requests xpath 采集网站文本数据 1
任务一 开发环境的准备和搭建 1
职业能力目标 1
任务描述与要求 2
知识储备 2
一、Python和PyCharm程序编辑器 2
二、原生类库requests 10
三、原生类库lxml 12
四、原生类库pymysql 12
任务计划与决策 13
任务实施 13
任务检查与评价 20
任务小结 21
任务拓展 21
任务二 爬虫程序实践 21
职业能力目标 21
任务描述与要求 21
知识储备 21
一、认识HTML 21
二、网页代码结构 23
三、通过浏览器查看网页源代码 23
任务计划与决策 24
任务实施 24
任务检查与评价 32
任务小结 32
任务拓展 33
项目二 使用feapder爬虫框架爬取房屋租售数据 35
任务一 开发环境的准备和搭建 35
职业能力目标 35
任务描述与要求 36
知识储备 36
任务计划与决策 36
任务实施 37
任务检查与评价 42
任务小结 42
任务拓展 43
任务二 爬虫程序实践 43
职业能力目标 43
任务描述与要求 43
知识储备 43
任务计划与决策 46
任务实施 46
任务检查与评价 56
任务小结 57
任务拓展 57
项目三 使用分布式爬虫采集金融数据 59
任务一 开发环境的准备和搭建 59
职业能力目标 59
任务描述与要求 59
知识储备 60
一、redis 60
二、Another Redis Desktop Manager 63
任务计划与决策 66
任务实施 66
任务检查与评价 71
任务小结 72
任务拓展 72
任务二 Spider爬虫程序实践 72
职业能力目标 72
任务描述与要求 72
知识储备 72
一、分布式爬虫Spider 72
二、Spider进阶 74
三、Spider的方法 76
任务计划与决策 78
任务实施 78
任务检查与评价 90
任务小结 91
任务拓展 91
项目四 使用批次分布式爬虫采集天气数据 93
任务一 学习feapder架构设计 93
职业能力目标 93
任务描述与要求 93
知识储备 94
任务计划与决策 95
任务实施 95
任务检查与评价 100
任务小结 101
任务拓展 101
任务二 爬虫程序实践 102
职业能力目标 102
任务描述与要求 102
知识储备 102
任务计划与决策 106
任务实施 106
任务检查与评价 121
任务小结 122
任务拓展 122
项目五 使用Scrapy爬虫爬取电影数据 125
任务一 开发环境的准备和搭建 125
职业能力目标 125
任务描述与要求 126
知识储备 126
一、Scrapy 126
二、JavaScript 128
任务计划与决策 129
任务实施 129
任务检查与评价 132
任务小结 133
任务拓展 133
任务二 爬虫程序实践 133
职业能力目标 133
任务描述与要求 133
知识储备 133
一、JSON简介 133
二、JSON使用场景 134
三、在Python中使用JSON 136
任务计划与决策 137
任务实施 138
任务检查与评价 153
任务小结 154
任务拓展 154
项目六 App爬虫的实践 157
任务一 开发环境的准备和搭建 157
职业能力目标 157
任务描述与要求 157
知识储备 158
一、Charles 158
二、Jadx 159
任务计划与决策 159
任务实施 159
任务检查与评价 164
任务小结 165
任务拓展 165
任务二 爬虫程序实践 166
职业能力目标 166
任务描述与要求 166
知识储备 166
任务计划与决策 166
任务实施 166
任务检查与评价 174
任务小结 175
任务拓展 175
项目七 企业项目部署与应用 179
任务一 开发环境的准备和搭建 179
职业能力目标 179
任务描述与要求 180
知识储备 180
一、Linux系统 180
二、Docker简介 181
三、FEAPLAT简介 182
任务计划与决策 183
任务实施 183
任务检查与评价 187
任务小结 188
任务拓展 188
任务二 爬虫管理和部署 188
职业能力目标 188
任务描述与要求 188
知识储备 189
一、使用说明 189
二、项目运行 189
三、示例演示 189
任务计划与决策 191
任务实施 191
任务检查与评价 196
任务小结 197
任务拓展 197