网络爬虫(又称为网页蜘蛛,网络机器人,更经常的称为网页追逐者),它按照一定的规则自动地抓取网络信息。
1. 产生背景
随着时代的进步,互联网上拥有大量的信息,但是我们该如何高效的获取这些信息成为了一个挑战,传统的搜索引擎可以帮助我们解决部分问题,但是具有一定的局限性:
1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通过搜索引擎所返回的结果包含大量用户不关心的网页。
2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。
4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询
为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。
2. 爬虫的分类
网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。
1) 通用网络爬虫
通用网络爬虫又称全网爬虫,它的爬行范围和数量比较庞大,因此对速度和存储空间要求比较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。为提高工作效率,通用网络爬虫会采取一定的爬行策略,常用的爬行策略有深度优先策略和广度优先策略。
2) 聚焦网络爬虫
聚焦网络爬虫,又称主题网络爬虫,根据预定义的主题来进行相关页面的爬取,与通用网络爬虫想必,它的爬取范围更为精准,会爬取与主题相关的页面,节省了硬件和网络资源。
3) 增量式网络爬虫
增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面
4) 深层网络爬虫
Web 页面按存在方式可以分为表层网页和深层网页,深层网页是指大多内容不能通过静态获取,需要用户提交关键词才能获取到隐藏在搜索表单后面的内容。Deep Web 爬虫体系结构包含六个基本功能模块 (爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS 控制器)和两个爬虫内部数据结构(URL 列表、LVS 表), 其中 LVS(Label Value Set)表示标签/数值集合,用来表示填充表单的数据源。
3. 爬虫的基本流程
爬虫的基本工作流程如下图:
1) 发送请求
通过HTTP库向目标网站发送一个请求,等待响应。
2) 获取响应内容
服务器正常响应后能得到一个Response,内容为获取页面的内容,可能是HTML、Json字符或者二进制数据等类型。
3) 解析内容
得到的内容如果是html,可以通过正则表达式或网页解析库进行解析,如果是json可以直接转换为json对象解析,如果是二进制数据可以保存后作进一步处理。
4) 保存数据
把解析后的数据保存下来,可以是文本,也可以保存到数据库当中。
4. 总结
本节我们先进行爬虫的简单介绍,爬虫可以使用Python或者PHP等多种语言,但是大多数人会选择Python来编写爬虫程序,因为Python不仅语法简单易上手,它还拥有庞大的开发者社区和规模巨大的模块库,是写爬虫程序的最好选择。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程