作为搜索引擎技术核心元素之一,自1993年初 Matthew Gray’s Wandered 在麻省理工学院开发出有史记载的第一个网络爬虫以来,爬虫技术历经20多年的发展[6],技术已日趋多样。为满足不同用户多种多样的需求,创建开发了类型众多的爬虫系统。按照实现技术和其系统构成,爬虫系统主要可以分为以下几种:
1.通用网络爬虫
通用网络爬虫[7](General Purpose Web Crawler)也可称之为全站爬虫(Scalable Web Crawler),它通过一系列预设的初始链接开始,获取页面上所有链接,根据预设规则,提取链接,进入待爬取队列,进而不断访问网页下载网页或取链接。然后通过HTML解析技术,获取页面数据,提取所需信息并保存,与此同时将新获取的链接放入待爬取队列,直到达到系统预设指定条件为止。通用网络爬虫有两种常用的爬取策略:28856
(1)深度优先策略(Depth first strategy)[8]:这个是在爬虫发展早期使用比较多的方法。这种策略最终要达到的效果是一直搜索到由站点分布抽象出来的树的叶子节点(即网页站点的最底层不包含任何其他不重复的网页链接的网页) 。在一个网页文件中,当爬虫获得当前网页中的第一个链接后,就对该链接所指向的网页文件执行深度优先搜索策略,也就是说在搜索当前页面的其他的链结结果之前,必须先搜索出一条路径使其形成一条独立的完整的链。形象点说深度优先搜索策略就是沿着该网页解析出的HTML文件的一个链接转接到另一个链接从而由链接组成的链接网络一直走到不能更加深入为止,然后返回到之前所在的某一个网页文件中,再继续选择该网页文件中的下一个不重复的链接,重复上述动作。当初始网页中不再存在其他链接可供选择时,说明此次搜索已经结束。但如果所需爬取网页节点结构比较深时的时候,该策略会引起较大的资源浪费,爬取效率也不太高。论文网
(2)广度优先策略(Breadth first strategy)[9]:简称BFS,又称之为宽度优先搜索策略,或横向优先搜索策略,作为一种图形搜索算法提出来,其思想亦可用于网络爬虫的设计。简单的说,广度优先搜索策略是从树根节点开始,沿着树的宽度遍历树在同一层的节点。如果该树的所有节点均被访问,则算法结束。广度优先搜索策略的实现一般采用open-closed表。广度优先搜索策略先将所需爬取网页的站点按照页面结构划分成不同的层次,然后沿着划分好的层次一层一层的由上到下进行爬取。先爬取浅层次的链接,将处于同一层次的所有网页处理完成之后再向下一个层次继续爬取。广度优先策略可以以并发的方式进行爬取,由于程序并发会提高程序的工作效率,所以这种特性在一定程度上可以提高爬虫的爬取效率,而且同时也可以任意控制爬虫爬取网站站点的深度,从而避免了使用深度优先策略是爬虫陷入无穷深度从而导致爬虫不能正常结束的状态。
利用通用爬虫策略实现爬虫算法的Google crawl[10] 爬取目前存在于互联网上所有网站网页,谷歌公司通过建立分布式系统网络加上异步输入输出的技术来用以提高整个爬虫系统的并发度,期间还使用了包括PageRank算法在内的众多提升系统运行效率的算法来优化Google crawl爬虫的爬取性能。
2.增量网络爬虫
增量网络爬虫(Incremental Web Crawler)是一种根据不同同一网站上不同页面更新的频率的不同来对应不同的策略的爬取策略,是一种对已经爬取过的页面在数据存储中采取增量式的更新的策略,也就是说这种爬虫策略只会爬取当前新出现页面的数据和页面产生更新的数据。增量更新的策略相对于优先策略来说其不会出现大量重复爬取页面的情况,避免不能充分利用硬件或网络等资源,最终导致整个系统使用效率低下的情况的发生。 网络爬虫技术国内外研究现状:http://www.youerw.com/yanjiu/lunwen_23858.html