Heritrix使用入门

通过第一篇的Eclipse配置成功Heritrix之后,便可以通过运行 org.archive.crawler.Heritrix.java来启动工程以便进行抓取内容。不过最常用的方法是通过WebUI来进行一系列的配置。


[b]1. 运行Heritrix并通过浏览器访问http://localhost:8080来进行登录[/b](admin/admin)。登陆界面如下:

[align=center][img]http://dl.iteye.com/upload/attachment/326390/bd555195-df37-3b21-a04e-9b5588dfcf5c.jpg[/img][/align]

登录后便打开了WebUI的主界面(默认是console)如下:

[align=center][img]http://dl.iteye.com/upload/attachment/326395/1d6bd12e-a3bd-3058-95ec-78087a24d656.jpg[/img][/align]

这说明配置并运行成功,可以进行下面的抓取工作啦。

[b]2. 创建一个新的抓取任务。[/b]
[b](1) 单击WebUI菜单栏上的“Jobs”标签,就可以进入任务创建页面。[/b]如下图。

[align=center][img]http://dl.iteye.com/upload/attachment/326397/4257ca65-e92d-327e-bcd4-946eafa70708.jpg[/img][/align]

Based on existing job -- 以一个已经有的抓取任务为模板,创建所有抓取属性和抓取起始URL的列表。
Based on a recovery -- 在以前的某个任务中,可能设置过一些状态点,新的任务将从这个设置的状态点开始。
Based on a profile -- 专门为不同的任务设置了一些模板,新建的任务将按照模板来生成。
With defaults -- 这个最简单,表示按默认的配置来生成一个任务。

在Heritrix中,一个任务对应一个描述文 件。这个描述文件的默认的名称为order.xml。每次创建一个新任务时,都相当于生成了一个order.xml的文件。文件中详细记录了 Heritrix在运行时需要的所有信息。例如,它包括该用户所选择的Processor类、Frontier类、Fetcher类、抓取时线程的最大数 量、连接超时的最大等待时间等信息。上面所说的4种创建抓取任务的方式,其实都是在生成一个order.xml文件。其中,第4种With defaults,则是直接拷贝默认的order.xml文件。在所创建的Eclipse工程或是命令行启动的Heritrix下载包中,该默认的 order.xml文件均是放于profiles\default目录下的。


这里选择 [b]With default[/b]来创建一个默认的任务。
[b](2) 在Name、description和seed里填写相应的内容[/b]。如图:(注:可同时输入多个seed,每个占用一行)
[align=center][img]http://dl.iteye.com/upload/attachment/327510/2c992faa-c840-3f69-bfae-524b7ce1c239.jpg[/img][/align]

[b](3) 接着是要对modules进行一些配置。[/b]
需要配置的内容共有8项,Crawl Scope、URI Frontier和Writers 的配置比较重要,其他的按照默认就可以,不影响建立一个简单的job。如下图。

[align=center][img]http://dl.iteye.com/upload/attachment/327512/7785f22c-965c-3319-8628-31f0c429c1b0.jpg[/img][/align]

[align=center][img]http://dl.iteye.com/upload/attachment/327514/df48ca25-e4dc-3706-bc5a-21070ea66568.jpg[/img][/align]

[align=center][img]http://dl.iteye.com/upload/attachment/327516/9ceb5e4e-3442-3325-ba8a-d169433c7a7f.jpg[/img][/align]


下面一一对其进行解释:
[b]CrawlScope:[/b] 用于配置当前应该在什么范围内抓取网页链接。比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内。

[b]Frontier:[/b] 则是一个URL的处理器,它将决定下一个被处理的URL是什么。同时,它还会将经由处理器链所解析出来的URL加入到等待处理的队列中去。在例子中,使用BdbFrontier类来做为处理器,全权掌管URL的分配。

[b]PreProcessor:[/b]这个队列中,所有的处理器都是用来对抓取时的一些先决条件做判断的。比如判断robot.txt的信息等,它是整个处理器链的入口。

[b]Fetcher:[/b]从名称上看,它用于解析网络传输协议,比如解析DNS、HTTP或FTP等。在演示中,主要使用FetchDNS和FetchHTTP两个类。

[b]Extractor:[/b]它的名字就很好的揭示了它的作用。它主要用是于解析当前获取到的服务器返回内容,这些内容通常是以字符串形式缓存的。在这个队列中,包括了一系列的工具,如解析HTML、 CSS等。在解析完毕,取出页面中的URL后,将它们放入队列中,等待下次继续抓取。在演示中,使用两种Extractor,即 ExtractorHTTP和ExtractorHTML。

[b]Writer[/b]:主要是用于将所抓取到的信 息写入磁盘。通常写入磁盘时有两种形式,一种是采用压缩的方式写入,在这里被称为Arc方式,另一种则采用镜象方式写入。当然处理起来,镜象方式要更为容 易一些,因此,在演示中命名用镜象Mirror方式。

[b]PostProcessor:[/b]在整个抓取解析过程结束后,进行一些扫尾的工作,比如将前面Extractor解析出来的URL有条件的加入到待处理队列中去。

[b]Statistics Tracking:[/b] 和WebUI整合在一起,用来创建处理过程中的静态内容日志。

值得一提的是,在处理器链的设置过程中,每一个队列中的处理器都是要分先后顺序的,信息的处理流程实际上是不可逆的,因此,在设置时,可以看见在队列的右侧总是有“Up”、“Down”和“Remove”这样的操作,以帮助能够正确的设置其顺序。
在设置完Hertrix所需的处理链后,仍然还不能够马上开始抓取任务,还需对默认的运行时参数做一些修改,以适应真正的需要。

[b](4) 进入Setting项设置运行时参数。[/b]
在属性设置页面上有非常多的输入域,Heritrix在抓取网页时,这些域是用来对的各个组件的值进行预设,由于页面上的内容非常多,使用者可能无法全部了解它们的作用。所以Heritrix提供了一个辅助功能,来在最大程度上让使用者了解每个参数的含义。可以看到,在每个属性的右侧都有一个小问号,当单击问号时,就会弹出一个Javascript的Alert提示框,上面介绍了当前属性的作用。例如,在上图中单击“max-bytes- download”属性,通过Alert的提示可以知道,它表示的是抓取器最大下载的字节数,当下载字节数超过这个属性上所设定的值时,抓取就会自动停止。另外,如果将这个值设为0,则表示没有限制。
事实上,当在第一次使用Heritrix时,所需要设置的参数并不多,以默认设置为主。以下就来介绍一些必须要在第一次使用时就要配置好的参数。

[b]HTTP-Header[/b]
在HTTP-Header这个属性域下面,包括两个属性值“user-agent”和“from”。改成如下格式(只需要格式正确就好,不需要agent和from真实存在):

[align=center][img]http://dl.iteye.com/upload/attachment/327518/ce18181f-7e62-347f-80b4-65d61e0bd88e.jpg[/img][/align]

至此便可以单击“Submit”链接,提交这个抓取任务。
[b](5) 提交任务。[/b]
点击submit便得到了如下图。

[align=center][img]http://dl.iteye.com/upload/attachment/327520/47b90c3f-c3c0-3897-bf1d-6e425ba4b343.jpg[/img][/align]

其中可以看到Pending Jobs 和 Completed Jobs。 点击console回到控制界面,点击start便开始了在Pendign Jobs中的任务。如图:

[align=center][img]http://dl.iteye.com/upload/attachment/327522/1b11cd4a-4096-3c4c-b271-8dfba5920286.jpg[/img][/align]

[b](6) 运行抓取包任务。[/b]
以下截图是正在运行的抓取过程。
[align=center][img]http://dl.iteye.com/upload/attachment/327524/25103203-9f36-30a2-8a81-0cb5f630f345.jpg[/img][/align]

至此一个简单的任务便完成了。

[b]3. Heritrix的镜象存储结构[/b]
通过Heritrix抓取的内容会保存到Eclipse工程根目录下的jobs文件夹下。不同的抓取任务的命名以抓取任务的名称来加以区分。
里面的内容根据URI中的“/”来分层次,即如果在URI中有“/”,则在本地mirror镜像下的内容会以对应的文件夹来存储到本地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值