网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。

传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件,流程图所示。

聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止, 如图所示。

另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
   相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题: (1) 对抓取目标的描述或定义; (2) 对网页或数据的分析与过滤; (3) 对URL的搜索策略。
   Heritrix既是一种开源的聚焦网络爬虫。

Heritrix项目介绍:

Heritrix在古语里是女继承人的意思,我们的网络爬虫是从网络上搜集和保存资料以利于未来的研究者和后代,也是一种继承,所以命名为Heritrix很符合这个软件。是IA(IntelArchitecture)的一个开源,可扩展的web爬虫项目。

Heritrix工程始于2003年初,IA的目的是开发一个特殊的爬虫,对网上的资源进行归档,建立网络数字图书馆。在过去的6年里,IA已经建立了400TB的数据。 IA期望他们的crawler包含以下几种: 宽带爬虫:能够以更高的带宽去站点爬。 主题爬虫:集中于被选择的问题。 持续爬虫:不仅仅爬更当前的网页还负责爬日后更新的网页。 实验爬虫:对爬虫技术进行实验,以决定该爬什么,以及对不同协议的爬虫 爬行结果进行分析的。

Heritrix工作原理:

Heritrix是一个爬虫框架,可加入一些可互换的组件。它的执行是递归进行的,主要有以下几步:
在预定的URL( Uniform Resource Locator )中选择一个。;
获取URL;
分析,归档结果;
选择已经发现的感兴趣的URL。加入预定队列;
标记已经处理过的URL。

如下图所示,heritrx爬取网页的流程,每次只获取一张网页,并不考虑充分利用它的资源。由爬虫维护的尚未访问URL列表被称为队列(Frontier)。该队列初始化的时候仅存放由用户或其他程序提供的种子URL。每次程序的主循环中,爬虫先从队列中取出下一个URL,通过HTTP协议将对应的网页爬取下来,然后解析内容,并且提取出包含的URL,将其中新发现的URL追加到队列中。最后将网页存放到本地磁盘的网页库中。爬取过程在积累到一定数量网页时即可终止;或者在队列为空的时候终止。

Heritrix的三大部件:

范围部(CrawlScope),边界部件(Frontier),处理器链(processor chain)。

范围部件:主要按照规则决定将哪个URL入队。
边界部件:跟踪哪个预定的URL将被收集,和已经被收集的URL,选择下一个 URL,剔除已经处理过的URL。
处理器链:包含若干处理器获取URL,分析结果,将它们传回给边界部件 。

Heritrix关键特性:

用单个爬虫在多个独立的站点一直不断的进行递归的爬。
从一个提供的种子进行爬,收集站点内的精确URL和精确主机。
主要是用广度优先算法进行处理。
主要部件都是高效的可扩展的。
良好的配置,可设置输出日志,归档文件和临时文件的位置。
可设置下载的最大字节,最大数量的下载文档,和最大的下载时间。
可设置工作线程数量。
可设置所利用的带宽的上界。
可在设置之后一定时间重新选择。
包含一些可设置的过滤机制,表达方式,URL路径深度选择等等。

 

Heritrix的下载地址: http://sourceforge.net/projects/archive-crawler/

Heritrix的具体配置过程,可以参考相关文献,也可参考笔者的收集的文章《如何配置在eclipse下配置Heritrix》。

Heritrix的使用,可以参考《使用Heritrix爬虫爬取网页》。

Heritrix的扩展编程,可以参考《Heritrix+Lucene构建自己搜索引擎》一书。

 

 

 

posted on 2013-01-04 21:41  烤德  阅读(2200)  评论(0编辑  收藏  举报