`

heritrix 基本介绍

阅读更多

Heritrix使用小结

1.   Heritrix 简介

Heritrix是一个专门为互联网上的网页进行存档而开发的网页检索器。它使用Java编写并且完全开源。它主要的用户界面可以通过一个web流量器来访问并通过它来控制检索器的行为,另外,它还有一个命令行工具来供用户选择调用。

Heritrix是由互联网档案馆和北欧国家图书馆联合规范化编写于2003年初。第一次正式发布是在20041月,并不断的被互联网档案馆和其他感兴趣的第三方改进着。到现在已经成为一个成熟的开源爬虫,并被广泛使用。

Heritrix的操作模型:

从模型中可以看到,利用Heritrix我们可以轻松从互联网上获取信息并将它们全部存储下来,然后可以任意的访问获取到的网页信息并可以查看报告。

 

Heritrix的整体结构简图如下:

 

 

它的工作流程是一个循环,具体流程是:

  1 在预定的URI中选择一个。

  2 从选择的URI的网址下载远程文件

  3 分析,归档下载到的内容

  4 从分析到的内容里面选择感兴趣的URI。加入预定队列。

  5 标记已经处理过的URI

 

在大概的了解了Heritrix及它的工作机制之后,我们就可以开始Heritrix的使用了。

 

2.   Heritrix 的配置与使用

 1)    安装与配置

从官方网站http://crawler.archive.org/下载最新版本的Heritrix运行包,解压到一个文件夹内。其中,Heritrix所用到的工具类库都存于lib下,另外,在Heritrix目录下有一个conf目录,其中包含了一个很重要的文件:heritrix.properties

heritrix.properties中配置了大量与Heritrix运行息息相关的参数,这些参数主要是配置了Heritrix运行时的一些默认工具类、WebUI的启动参数,以及Heritrix的日志格式等。当第一次运行Heritrix时,只需要修改该文件,为其加入WebUI的登录名和密码。在"heritrix.cmdline.admin="后面增加账户和密码,比如heritrix.cmdline.admin=admin:admin 。其中,用户名和密码是以一个冒号进行分隔,使用者可以指定任何的字符串做为用户名密码。

新建一个文件Heritrix.cmd 作为启动Heritrix的命令文件,在文件内写入:

(假设文件夹路径为D:\heritrix


 

 

运行上述脚本,在浏览器输入http://localhost:8080/,输入之前设置的用户名密码,即可进入Heritrix管理页面。

 

2)    新建抓取任务

(1)       单击菜单栏上的“Jobs”标签,就可以进入任务创建页面。如下图所示:

 

 

 

(2)       在任务创建页面中,有4种创建任务的方式,具体含义如下:

l  Based on existing job:以一个已经有的抓取任务为模板,创建所有抓取属性和抓取起始URL的列表

l  Based on a recovery:在以前的某个任务中,可能设置过一些状态点,新的任务将从这个设置的状态点开始。

l  Based on a profile:专门为不同的任务设置了一些模板,新建的任务将按照模板来生成。

l  With defaults:这个最简单,表示按默认的配置来生成一个任务。

 

(3)       单击With defaults链接,创建一个新的抓取任务。

(4)       在新建任务的名称上,填入任务名称。在Description中随意填入字符,然后再在seeds框中,填入待抓取的起始网址。如下图所示:

 

 

 

(5)       单击“Modules”按钮,就进入了配置抓取时的处理链的页面。

在倒数第三项 "Select Writers "内删除默认的"org.archive.crawler.writer.ARCWriterProcess”,加 "org.archive.crawler.writer.MirrorWriterProcessor",这样执行任务的时候抓取到的页面会以镜像的方式放在本地的目录结构中,而不是生成ARC存档文件。如下图:

 

 

 

(6)       单击“Settings” 按钮,进入了属性设置的页面。

在属性设置页面上有非常多的输入域,Heritrix在抓取网页时,这些域是用来对的各个组件的值进行预设。由于页面上的内容非常多,使用者可能无法全部了解它们的作用。所以Heritrix提供了一个辅助功能,来在最大程度上让使用者了解每个参数的含义。在每个属性的右侧都有一个小问号,当单击问号时,就会弹出一个JavascriptAlert提示框,上面介绍了当前属性的作用。

当在第一次使用Heritrix时,所需要设置的参数并不多,以默认设置为主。但有一些参数是必须在第一次使用时就设置好的,就是HTTP-Header这个属性域。

如下图所示,红色框内是修改前后对照。其中“user-agent”中的“PROJECT_URL_HERE”对应自己的完整URL地址,“from”中设置自己的合法email地址,这两项设置其实可随便设置,只要格式规则合法即可。图中的@VERSION@设置为1.12.1,即1.12.1版本的。

 

 

(7)       设置完成后,点击“Submit job”,即完成全部任务的建立工作。 这时就可以在Console页面中点击start启动任务。

 

抓取到的所有文件在” %Heritrix_HOME%/jobs/任务名-任务时间/mirror”这个路径下,按照域名分开存放。

 

 

3.   Heritrix 的扩展开发

1)   
Heritrix 结构分析

 

 

        

从上图可以看出,Heritrix总体上是一个平台结构,内部的组件都具有松耦合的特点。任何一个部分都可以进行拆卸并替换,这就给我们进行基于Heritrix的自定义开发提供了条件。

 

下面简单介绍一下每个组件的作用

1.      CrawlController

CrawlController(中央控制器)是抓取任务的核心组件,它控制着整个抓取的流程。

 

2.      CrawlOrder

CrawlOrder (抓取任务)是整个抓取工作的起点,它记录了任务的所有属性,即在创建任务时的一系列设置。


3.      Frontier

Frontier (链接制造工厂)负责所有链接的处理。将已经爬过的URI做标记,并将未处理的链接放入待处理队列。

 

4.      ToeThread

ToeThread(处理线程)Heritrix是多线程的,每个 URL 被一个线程处理,这个线程就叫做 ToeThread,每个线程都会包括一条处理链,如下图所示。

 

5.       Processor

Processor(处理器)代表着单个的处理器,所有的处理器都是它的子类。它包括以下几种:PreProcessor(预处理器)、Fetcher(获取器)、Extractor(抽取器)、Writer(存储器)、PostProcessor(后处理器)。

                                                          

 

 

 

 

 

 

2)    Heritrix 的组件开发

在使用Heritrix的过程中,可能会需要一些特定功能,比如说只想抓取一个域名下的网页等。这时就需要扩展原有的Heritrix,自己写一些组件来满足这些要求。

 

(1)   扩展FrontierScheduler

首先在Heritrix工程中创建类包my. processor. ,之后新建类MyFrontierScheduler。代码如下:


 

 

 

         之后打开Heritrix目录下的module文件夹,里面是所有模块的配置文件。打开Processor.options,在里面加入一行my. processor.MyFrontierScheduler|MyFrontierScheduler。然后保存退出,之后你就可以在新建任务的时候选择使用自己扩展的FrontierScheduler了。

 

 

(2)   扩展MirrorWriterProcessor

有的时候我们需要在网页下载之前将网页进行分析并提取有效内容存储起来,这时我们可以扩展MirrorWriterProcessor这个模块。利用一个开源的包htmlparser分析网页结构,并将结果存储起来。htmlparser可以在http://htmlparser.sourceforge.net 获得。将下载的包添加到项目的引用列表中。

新建MyMirrorWriterProcessor,将之前MirrorWriterProcessor的代码复制过来,改掉类名及构造函数的名称。添加新的引用:

 


 

新建一个方法AnalysisFile(),在writeToPath这个函数中调用它:



 之后就可以在AnalysisFile()中处理dest这个文件,将其进行分析并保存为想要的格式。以下例子将其去掉Html标签之后封装进一个XML文件:

4.   Heritrix 的常用技巧

1)    只保存html类型的文件

对于大多数的搜索引擎,我们所要做的只是对于纯文本的搜索。因此只需要保存html类型的内容。Heritrix的官方文档”Heritrix User Manual”中给出了一个解决方案

         在新建任务时点击”submodules”,如下图:

 

 

     添加一个新的规则,类型为NotMatchesFilePatternDecideRule,并将其放置在PrerequisiteAccept-

DecideRule之前,不然dns将不会被正确解析。之后在设置面板中如下设置:

 

 

这样设置之后,爬虫就会只抓取html类型的文件,而将其它类型的文件都忽略掉。

 

2)    Queue-assignment-policy的设置。

当我们设置了在特定的域名下爬行的时候,经常会碰到永远只有一个线程在运行的情况,导致爬行十分缓慢。这是因为在默认的情况下,Heritrix使用HostnameQueueAssignmentPolicy来产生key值,从这个策略的名字,我们也可以很容易的看出,keyhostname是有关系的。而事实上,这个策略正是用hostname作为key值的。因此一个域名下的所有链接都会放到同一个线程中去。

为解决这个问题,我们新建一个策略:

 

 

这样用ELF hash算法把url尽量平均分部到各个队列中去,采集的速度大大的加快了。

 

 

 

参考资料:

1.   Gordon Mohretal : An introduction to Heritrix. Accessed Apr 2009.

http://crawler.archive.org/An%20Introduction%20to%20Heritrix.pdf

2.    Wikipedia Heritrix Homepage. Accessed Apr 2009.    http://en.wikipedia.org/wiki/Heritrix

3.    John Erik Halse : Heritrix developer documentation. Accessed Apr 2009.

http://crawler.archive.org/articles/developer_manual.html

4.    Kristinn Sigurđsso: Heritrix User Manual. Accessed Apr 2009.

http://crawler.archive.org/articles/user_manual/index.html

5.    邱哲 符滔滔:《开发自己的搜索引擎-Lucene 2.0+Heritrix人民邮电出版社 ISBN:711516000  

分享到:
评论

相关推荐

    heritrix爬虫安装部署

    ### Heritrix爬虫安装部署知识点...通过以上详细介绍,我们不仅了解了Heritrix的基本概念和工作原理,还掌握了其安装部署的详细步骤以及如何运行示例项目。这对于初次接触Heritrix的用户来说是非常有价值的参考资料。

    很好的heritrix学习资料

    它可能涵盖了Heritrix的基本概念、安装步骤、启动和运行爬虫的基本流程,以及一些常见的问题和解决方法。对于新接触Heritrix的人来说,这份资料将是宝贵的起点。 "Heritrix1_14_1在Eclipse下的配置总结 - Java - ...

    扩展Heritrix3指定内容提取.pdf

    在文档的【部分内容】中,首先介绍了系统的基本情况,Heritrix3.1.0版本在ubuntu13.10环境下运行。接着,文档提出了扩展需求分析,这一步骤涉及到网页抓取后需要提取的信息种类,例如题目、内容、时间、作者、价格等...

    heritrix3.1 官方指导手册

    ### Heritrix 3.1 官方指导手册 #### 一、简介 Heritrix 是互联网档案馆...通过上述介绍,我们对 Heritrix 3.0 和 3.1 版本有了较为全面的了解,无论是初学者还是高级用户,都可以从中找到适合自己的功能和应用场景。

    Heritrix在Eclipse中的源文件

    下面将详细介绍如何在Eclipse中设置Heritrix项目,并解释相关知识点。 首先,确保你已经安装了Eclipse IDE以及Java Development Toolkit(JDK)。Eclipse Helios是Eclipse的一个版本,适用于Java开发,因此它是配置...

    Heritrix-User-Manual.rar_heritrix

    下面将详细介绍Heritrix的基本概念、安装步骤、任务创建以及任务分析。 1. **Heritrix简介**: Heritrix是由Internet Archive开发的,旨在提供一个灵活且可定制的框架,用于抓取互联网上的静态和动态内容。它支持...

    Heritrix3.0教程 使用入门(三) 配置文件crawler-beans.cxml介绍.docx

    Heritrix 3.0 是一个强大的网络抓取框架,其设计目的是为了高效、灵活地爬取互联网上的信息。在Heritrix 3.0中,`crawler-beans.cxml` 文件扮演着至关重要的角色,它是整个爬虫的配置中心,负责定义和管理爬虫的行为...

    Heritrix developer_manual

    整体来看,Heritrix开发文档为开发者提供了详尽的开发指南,涵盖了从基本的环境设置到具体组件开发的每一个细节,并且考虑到了文档的持续更新,确保了开发者的知识能够与Heritrix的开发保持同步。文档强调了遵循一定...

    基于Lucene_Heritrix的垂直搜索引擎的研究与应用

    #### 一、垂直搜索引擎的基本介绍 垂直搜索引擎是一种专注于特定领域或特定主题的信息检索工具。与通用搜索引擎相比,垂直搜索引擎更加聚焦,旨在为用户提供更为精准、高效的信息查询体验。这类搜索引擎通常会对...

    利用 Heritrix 构建特定站点爬虫

    完成上述步骤后,MyHeritrix项目的目录结构如图4所示,此时已具备了运行Heritrix的基本条件。 ##### 3. 修改配置文件 Heritrix的配置文件位于`conf`目录下,其中最重要的文件是`heritrix.properties`,用于配置...

    heritrix爬虫,安装tomcat

    在本篇中,我们将详细介绍如何安装Heritrix以及如何在Tomcat服务器上部署和运行它。 首先,我们需要了解Heritrix的基本概念。Heritrix是一个基于Java的爬虫框架,支持深度爬取、断点续爬、URL过滤和内容处理等功能...

    基于Lucene和Heritrix的职位垂直搜索引擎的设计与实现

    在论文中,作者可能详细介绍了如何利用Lucene的API对职位信息进行建索引,包括字段划分、分词处理、权重计算等步骤,以确保搜索结果的相关性和精度。 其次,Heritrix是一个网络爬虫框架,用于抓取互联网上的网页...

    Heritrix运行和任务设置

    本文将详细介绍Heritrix的运行和任务设置,旨在帮助初学者理解其核心配置和操作流程。 **Heritrix的基本概念** 1. **种子(Seeds)**:启动爬虫的起点,即要抓取的第一个或一组URL。 2. **策略(Policies)**:...

    heritrix 下载方法

    为了让更多初学者能够顺利地获取并使用Heritrix,下面将详细介绍如何从Heritrix官方网站下载该软件的步骤。 ##### 1. 打开搜索引擎 首先,在您的电脑上打开任意一款常用的搜索引擎(如百度、谷歌等),并在搜索框内...

    heritrix3 实例

    通过这些实例,学习者可以理解Heritrix 3 的基本操作,为进一步的爬虫项目打下坚实的基础。在实际应用中,Heritrix 3 的强大之处在于其灵活性和可扩展性,能够处理复杂的爬取任务,包括登录抓取、动态内容抓取、多...

Global site tag (gtag.js) - Google Analytics