Heritrix —— eclipse 安装与配置

1.Heritrix 下载

    Heritrix使用的是1.14.42010-5-10 发布),从SourceForgehttp://sourceforge.net/projects/archive-crawler/files/)上下载。每个版本都有四个压缩包,两个 .tar.gz 包用于 Linux 下,.zip 用于 windows 下。其中heritrix-1.14.4.zip 是源代码经过编译打包后的文件,而 heritrix-1.14.4-src.zip 中包含原始的源代码,方便进行二次开发。我用 heritrix-1.14.4-src.zip,将其下载并解压至 heritrix-1.14.4-src 文件夹。

2.    Eclipse 中的配置

    首先在 Eclipse 中新建 Java 工程WHeritrix。然后利用下载的源代码包根据以下步骤来配置这个工程。

 

1. 导入类库

Heritrix 所用到的工具类库都在heritrix-1.14.4-src\lib 目录下,需要将其导入 WHeritrix 工程。

1)将heritrix-1.14.4-src 下的 lib 文件夹拷贝到 WHeritrix 项目根目录;

2)在 WHeritrix 工程上右键单击选择“Build PathConfigure Build Path …”,然后选择 Library 选项卡,单击“Add JARs …”

3)在弹出的“JAR Selection”对话框中选择 WHeritrix 工程lib 文件夹下所有的 jar 文件,然后点击 OK按钮。

 

2. 拷贝源代码

1)将heritrix-1.14.4-src\src\java 下的 comorg 和 st 三个文件夹拷贝进 WHeritrix 工程的src 下。这三个文件夹包含了运行 Heritrix 所必须的核心源代码;

2)将heritrix-1.14.4-src\src\resources\org\archive\util 下的文件tlds-alpha-by-domain.txt 拷贝到 WHeritrix\src\org\archive\util 中。该文件是一个顶级域名列表,在 Heritrix启动时会被读取;

3)将 heritrix-1.14.4-src\src 下 conf 文件夹拷贝至 Heritrix 工程根目录。它包含了 Heritrix运行所需的配置文件;

4)将heritrix-1.14.4-src\src 中的 webapps 文件夹拷贝至 Heritrix 工程根目录。该文件夹是用来提供 servlet 引擎的,包含了 Heritrix 的 web UI 文件。需要注意的是它不包含帮助文档,如果想使用帮助,可以将 heritrix-1.14.4.zip\docs 中的 articles 文件夹拷贝到WHeritrix\webapps\admin\docs(需新建 docs 文件夹)下。或直接用 heritrix-1.14.4.zip 的webapps 文件夹替换 heritrix-1.14.4-src\src 中的 webapps 文件夹,缺点是这个是打包好的 .war文件,无法修改源代码。

至此,运行 Heritrix 所需的源代码等已经准备完备,下面需要修改配置文件并添加运行参数。

 

3. 修改配置文件

    conf 文件夹是用来提供配置文件的,里面包含了一个很重要的文件:heritrix.propertiesheritrix.properties 中配置了大量与 Heritrix 运行息息相关的参数,这些参数的配置决定了 Heritrix 运行时的一些默认工具类、Web UI 的启动参数,以及 Heritrix 的日志格式等。当第一次运行 Heritrix 时,只需要修改该文件,为其加入 Web UI 的用户名和密码。设置heritrix.cmdline.admin = admin:admin,“admin:admin”分别为用户名和密码。然后设置版本参数为1.14.4

 

4. 配置运行文件

    在 WHeritrix 工程上右键单击选择“Run AsRun Configurations”,确保 Main 选项卡中的Project 和 Main class 选项内容正确,其中的Name 参数可以设置为wangcg

    然后在 Classpath 页选择 UserEntries 选项,此时右边的 Advanced 按钮处于激活状态,点击它,在弹出的对话框中选择“Add Folders”,然后选择 WHeritrix 工程下的conf 文件夹。

    至此WHeritrix 工程已经可以运行起来了。接着,讲述如何启动 Heritrix 并设置一个具体的抓取任务。

3.   创建网页抓取任务

    找到 org.archive.crawler 包中的 Heritrix.java 文件,它是 Heritrix 爬虫启动的入口,右键单击选择“Run As Java Application”,如果配置正确,会在控制台输出启动信息。

    输入之前设置的用户名 / 密码:admin/admin,进入到 Heritrix 的管理界面。

    Heritrix 使用 Web 用户界面来启动、设置爬行参数并监控爬行,简单直观,易于管理。下面以“深圳研究生院”的网站: http://www.szpku.edu.cn 为种子站点来创建一个抓取实例。在Jobs 页面创建一个新的抓取任务,如图 1 所示,可以创建四种任务类型。


使用Heritrix对网站进行爬取,及其配置、安装、使用方法

 

 1 创建抓取任务

 

l  Based on existing job:以一个已经有的抓取任务为模板生成新的抓取任务。

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

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

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

选择“With defaults”,然后输入任务相关信息,如图2所示。

使用Heritrix对网站进行爬取,及其配置、安装、使用方法

 

 2创建抓取任务sz

 

    首先点击“Modules”按钮,在相应的页面为此次任务设置各个处理模块,一共有七项可配置的内容,这里设置 Crawl Scope 和 Writers 两项,下面简要介绍各项的意义。

1Select Crawl ScopeCrawl Scope 用于配置当前应该在什么范围内抓取网页链接。例如选择BroadScope 则表示当前的抓取范围不受限制,选择 HostScope 则表示抓取的范围在当前的 Host 范围内。在这里选择org.archive.crawler.scope.BroadScope,并单击右边的 Change 按钮保存设置状态。

2Select URI FrontierFrontier 是一个 URL 的处理器,它决定下一个被处理的 URL 是什么。同时,它还会将经由处理器链解析出来的 URL 加入到等待处理的队列中去。这里使用默认值。

3Select Pre Processors:这个队列的处理器是用来对抓取时的一些先决条件进行判断。比如判断robot.txt 信息等,它是整个处理器链的入口。这里使用默认值。

4Select Fetchers:这个参数用于解析网络传输协议,比如解析 DNSHTTP 或 FTP 等。这里使用默认值。

5Select Extractors:主要是用于解析当前服务器返回的内容,取出页面中的 URL,等待下次继续抓取。这里使用默认值。

6Select Writers:它主要用于设定将所抓取到的信息以何种形式写入磁盘。一种是采用压缩的方式(Arc),还有一种是镜像方式(Mirror)。这里选择简单直观的镜像方式:org.archive.crawler.writer.MirrorWriterProcessor

7Select Post Processors:这个参数主要用于抓取解析过程结束后的扫尾工作,比如将 Extrator 解析出来的 URL 有条件地加入到待处理的队列中去。这里使用默认值。设置完毕后的效果如图 3

使用Heritrix对网站进行爬取,及其配置、安装、使用方法

 

 3 设置 Modules

 

    设置完“Modules”后,点击“Settings”按钮,这里只需要设置 user-agent 和 from,其中:

@VERSION@”字符串需要被替换成Heritrix 的版本信息。

PROJECT_URL_HERE”可以被替换成任何一个完整的 URL 地址。

from”属性中不需要设置真实的E-mail 地址,只要是格式正确的邮件地址就可以了。

对于各项参数的解释,可以点击参数前的问号查看。本次任务设置如图 4 所示。

使用Heritrix对网站进行爬取,及其配置、安装、使用方法

 

 4 设置 Settings

 

    完成上述设置后点击“Submit job”链接,然后回到 console 控制台,可以看到刚刚创建的任务处于pending 状态。

    点击“Start”启动任务,刷新一下即可看到抓取进度以及相关参数。同时可以暂停或终止抓取过程,如图16 所示。需要注意的是,进度条的百分比数量并不是准确的,这个百分比是实际上已经处理的链接数和总共分析出的链接数的比值。随着抓取工作不断进行,这个百分比的数字也在不断变化。

使用Heritrix对网站进行爬取,及其配置、安装、使用方法

 

 5开始抓取

    同时,在 WHeritrix 工程目录下自动生成“jobs”文件夹,包含本次抓取任务。抓取下来网页以镜像方式存放,也就是将 URL 地址按“/”进行切分,进而按切分出来的层次存储。因为选择了 BroadScope 的抓取范围,爬虫会抓取所有遇到的 URL,这样会造成 URL 队列无限制膨胀,无法终止,只能强行终止任务。尽管Heritrix 也提供了一些抓取范围控制的类,但是根据实际测试经验,如果想要完全实现自己的抓取逻辑,仅仅靠 Heritrix 提供的抓取控制是不够的,只能修改扩展源代码。

下面以实现抓取“深圳研究生院”的网站: http://www.szpku.edu.cn下相关页面为例说明如何扩展Heritrix 实现自己的抓取逻辑。

4.   扩展 Heritrix

    先来分析一下 Heritrix 的总体结构和 URI 的处理链。

1)     Heritrix 的总体结构

    Heritrix 采用了模块化的设计,用户可以在运行时选择要用的模块。它由核心类(core classes)和插件模块(pluggable modules)构成。核心类可以配置,但不能被覆盖,插件模块可以由第三方模块取代。所以可以用实现了特定抓取逻辑的第三方模块来取代默认的插件模块,从而满足自己的抓取需要。

    Heritrix 的整体结构如图 6 所示。其中CrawlController(下载控制器)整个下载过程的总控制者,整个抓取工作的起点,决定整个抓取任务的开始和结束。每个 URI 都有一个独立的线程,它从边界控制器(Frontier)获取新的 URI,然后传递给 Processor chains(处理链)经过一系列 Processor(处理器)处理。

 

使用Heritrix对网站进行爬取,及其配置、安装、使用方法

  Heritrix 整体结构

2)     URI 处理流程

    处理链由多个处理器组成,共同完成对 URI 的处理,如图 7 所示。

使用Heritrix对网站进行爬取,及其配置、安装、使用方法

 

 7 URI 处理链

 

1Pre-fetch processing chain( 预处理链 ),用来判断抓取时的一些先决条件,如 robot 协议、DNS等。

2Fetch processing chain(抓取处理链),解析网络传输协议,从远程服务器获取数据。

3Extractor processing chain(抽取处理链),从网页中抽取新的 URL

4Write/index processing chain(写处理链),负责把数据写入本地磁盘。

5Post-processing chain(后置处理链),在整个抓取解析过程结束后,进行一些扫尾工作,比如将前面Extractor 解析出来的 URL 有条件的加入到待处理队列中去。这里只需要控制加入到待处理队列中的 URL,就可以控制抓取的范围。

3)     扩展 FrontierScheduler 来抓取特定网站内容

    FrontierScheduler 是 org.archive.crawler.postprocessor 包中的一个类,它的作用是将在Extractor 中所分析得出的链接加入到 Frontier 中,以待继续处理。在该类的innerProcess(CrawlURI) 函数中,首先检查当前链接队列中是否有一些属于高优先级的链接。如果有,则立刻转走进行处理;如果没有,则对所有的链接进行遍历,然后调用 Frontier 中的 schedule() 方法加入队列进行处理。innerProcess() 函数并未直接调用 Frontier 的 schedule() 方法,而是调用自己内部的schedule() 方法,进而在这个方法中再调用 Frontier 的 schedule() 方法。而 FrontierScheduler的 schedule() 方法实际上直接将当前的候选链接不加任何判断地直接加入到抓取队列当中了。这种方式为FrontierScheduler 的扩展留出了很好的接口。构造一个FrontierScheduler 的派生类FrontierSchedulerForszpku,这个类重载了 schedule(CandidateURI caUri) 这个方法,限制抓取的URI 必须包含“szpku”、“pku”,以保证抓取的链接都是北大深圳内部的地址。在 modules 文件夹中的Processor.options 中添加一行“org.archive.crawler.postprocessor.FrontierSchedulerForszpku |FrontierSchedulerForszpku”,这样在爬虫的 WebUI 中就可以选择我们扩展的org.archive.crawler.postprocessor.FrontierSchedulerForszpku 选项。

    最终抓取的页面如图 8 所示,全部都是 http://www.szpku.edu.cn下的页面。

使用Heritrix对网站进行爬取,及其配置、安装、使用方法

 

 8扩展后的抓取效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值