Heritrix3.0新特性一大亮点就是,相比以前版本载入种子更灵活(甚至你可以动态载入种子),同时可以载入N个种子.以前版本载入种子是全部加载到内存
,而一旦种子过多,那容易导致内存溢出.而新版本会分批次写入硬盘(通过调度器写入).所以避免了这个问题.下面就说一下Heritrix3.0
载入种子的四种方式,分别是:直接载入,通过seeds.txt载入,通过ActionDirectory动态载入(注意是动态,你随时可以载入),自定义载入.
1.
直接载入
:
直接载入比较方便,只需直接在crawler.beans.cxml中设置就可以,具体设置如下.
-
<bean
class
=
"org.archive.modules.seeds.TextSeedModule"
>
-
<property>
-
<bean>
-
<property>
-
<value>
-
# your seeds
-
</value>
-
</property>
-
</bean>
-
</property>
-
-->
-
<!-- <property name='sourceTagSeeds'
value=
'false'
/> -->
-
<!--
-
</bean>
其中只要把your seeds替换成你想要抓取的URL即可,如http://www.yun5u.com.其中sourceTagSeeds表示是否让新抽取出来的URL记录它的种子.
这个最方便,缺点就是如果种子太多,会使得crawler-beans.xml文件过于庞大,不美观
2.
通过
seeds.txt
载入
也只需要在crawler.beans.cxml中配置,同时将种子填充到seeds.txt中即可:
-
<bean
class
=
"org.archive.modules.seeds.TextSeedModule"
>
-
<property>
-
<bean>
-
<property value="seeds.txt"
/>
-
</bean>
-
</property>
-
<property name='sourceTagSeeds'
value=
'false'
/>
-
</bean>
也很方便,同时保持了crawler-beans.cxml的美观.缺点其实1)也有,没有动态性,不能自定义扩展.比如想从数据库导入,甚至加上自己的属性.
3.
通过
ActionDirectory
动态载入
我觉得ActionDirectory是Heritrix3.0最有作用的新特性.因为可以动态控制抓取.比如想新增抓取的种子,想临时存放一些你不想抓取的URL,以及
临时让Heritrix抓取一些URL.ActionDirectory都可以很好的满足.我想这个还是以后要着重介绍下.下面先介绍动态载入种子的适用方法:
首先需要在crawler-beans.cxml中配置ActionDirectory:
-
<bean
class
=
"org.archive.crawler.framework.ActionDirectory"
>
-
<property name="actionDir"
value=
"action"
/>
-
<property name="initialDelaySeconds"
value=
"10"
/>
-
<property name="delaySeconds"
value=
"30"
/>
-
</bean>
其中actionDir表示你的action目录,你得把动态加载的URL文件放到该目录下.默认为action,表示在Heritrix运行的目录下.
initialDelaySeconds表示,初始化时需要延迟的时间,这里是10秒
delaySeconds表示定时扫描actionDir的间隔时间,这里是30秒.
其中启动actionDirectory这个bean并且运行Heritrix3.0之后,你就会在你的抓取目录下看到action这个目录.当然这里你也可以自己指定.
随后可以生成一个文件,但必须以.seeds或.seeds(.gz)结尾.Heritrix会把以这两种文件名结尾的文件当做种子文件来处理.其中.seeds(.gz)
表示压缩文件.将你的种子写入.seeds文件,如test.seeds,再放入action目录,30秒后会发现该文件转移到./action/done目录下,格式为时间.test.seeds.
这个时候就表示test.seeds这个种子文件已经被加载了.你再观察下控制台,或者crawl.log就有可能发现你的种子已经被处理了.
当然,这种载入方式,你可以根据你的需要随时运行.
4.
自定义载入
.
相信很多人,都有自定义载入种子的这个需求.比如从数据库中载入,或者加上自己的属性.这个就要扩展Heritrix的SeedModule了.我写了一个示例,代码如下:
-
import java.io.File;
-
import java.util.Vector;
-
import org.apache.commons.httpclient.URIException;
-
import org.archive.modules.CrawlURI;
-
import org.archive.modules.SchedulingConstants;
-
import org.archive.modules.seeds.SeedModule;
-
import com.crawl.config.CrawlGlobal;
-
import com.crawl.controller.MyHeritrixController;
-
public
class
MySeedModule
extends
SeedModule {
-
private
static
final long serialVersionUID = 1L;
-
public
static
MyHeritrixController mhc=MyHeritrixController.getInstance();
-
-
-
-
@Override
-
public
void actOn(File f) {
-
}
-
-
-
-
@Override
-
public
void addSeed(CrawlURI curi) {
-
}
-
-
-
-
@Override
-
public
void announceSeeds() {
-
Vector seeds=mhc.getSeeds();
-
String url=null;
-
CrawlURI curi=null;
-
try {
-
for
(int i=0; i< seeds .size();i++){ url=seeds.get(i);
if
(url!=null&&!url.equals(
""
)){ curi=HeritrixUrlUtil.urlToCrawlURI(url, SchedulingConstants.MEDIUM);
-
-
-
-
-
-
-
-
-
public
static
CrawlURI urlToCrawlURI(String url,int priority) throws URIException{
-
if
(!url.matches(
"[a-zA-Z][\\w+\\-]+:.*"
)) {
-
url = "http://"
+ url;
-
}
-
url=url.replace("&"
,
"&"
);
-
UURI uuri=UURIFactory.getInstance(url);
-
CrawlURI curi=new
CrawlURI(uuri);
-
curi.setSchedulingDirective(priority);
-
return
curi;
-
}
分享到:
相关推荐
Heritrix3.0教程 使用入门(三) 配置文件crawler-beans.cxml介绍.docx
heritrix3 灵活载入种子的方式进行了详细的介绍,通过学习可以方便的想heritrix3 载入种子!
Heritrix的使用入门
Heritrix3(或简称H3)指Heritrix的3.0发布。 目前官方的Heritrix 3.0.0版已经发布(2009年12月)。 后续的发行H3将是3.0.1补丁版包括小的修改和增强将在2010年上半年,3.2.0将包含以使用简单、持续爬行和大规模爬行...
heritrix3.0/3.1官方手册 原版为英文 在此基础做了部分翻译
在/Heritrix1/src/org/archive/crawler/Heritrix.java启动之后,访问https://localhost:8089登录admin密码admin直接用
heritrix系统使用、一个ppt 介绍heritrix的基本概念、以及原理知识
Heritrix用户手册,Heritrix简介与入门 Heritrix配置与开发指南
Heritrix使用详解与高级开发应用 Heritrix开发应用详细
Heritrix1.4.4安装配置使用手册,有研究索引技术的可以下载看看.
无比强大的网络爬虫Heritrix 绝好的入门级。 绝对的高清。
heritrix 的详细配置 与 使用资料.里面对heritrix配置有详细的说明!
Heritrix 使用手册 全doc 文本
heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置heritrix正确完整的配置
按照这个步骤安装绝对会让你安装成功的。步骤非常的清晰。Heritrix是一个不错的选择。网络爬虫,更快更好的帮你捕捉到你想要的网页
heritrix系统使用,本文详细介绍了heritrix系统使用,是个很不错的入门级资源。。。
heritrix1.14.4的源码包,包含heritrix1.14.4.zip和heritrix...heritrix是一种开源的网络爬虫,用于爬去互联网中的网页。如何配置和使用heritrix爬虫,请移步:http://blog.csdn.net/kath_y/article/details/9385015
爬虫时我们会使用heritrix,搭建工程时要导入这些jar包,该jar包是1.14.0版本的。
Heritrix是IA的开放源代码,可扩展的,基于整个Web的,归档网络爬虫工程 Heritrix工程始于2003年初,IA的目的是开发一个特殊的爬虫,对网上的 资源进行归档,建立网络数字图书馆,在过去的6年里,IA已经建立了400...
包含: heritrix-3.1.0-dist.zip heritrix-3.1.0-src.zip 官网下载地址。