一、新建项目并将Heritrix源码导入

1、下载heritrix-1.14.4-src.zip和heritrix-1.14.4.zip两个压缩包,并解压,以后分别简称SRC包和ZIP包;

2、在Eclipse下新建Java项目,取名Heritrix.1.14.4;

3、复制SRC包下面src/java文件夹下org和st两个文件夹到项目中的src包下;

4、复制SRC包下src下conf文件夹到项目根目录;

5、复制SRC包下lib文件夹到项目根目录;

6、复制ZIP包下webapps文件夹到项目根目录;



7、修改项目下conf下heritrix.properties文件

heritrix.version = <span style="color:#ff0000;">1.14.4</span>

# Location of the heritrix jobs directory.
heritrix.jobsdir = jobs # Default commandline startup values.
# Below values are used if unspecified on the command line.
heritrix.cmdline.admin = <span style="color:#ff0000;">admin:admin</span>
heritrix.cmdline.port = <span style="color:#ff0000;">8080</span>

主要修改 version, 用户名、密码及端口号



8、在项目上右键选择构建路径->配置构建路径->库选项卡->添加Jar,将lib目录下的所有.jar文件选中,点击完成!

9、在项目/src/org.archive.crawler包下Heritrix.java上点击右键选Run as->Run Configurations->Classpath->User Entries->Advanced->Add Folder->选择项目下conf文件夹,最后点击Run

然后,就可以从http://127.0.0.1:8080/中登录系统。

在Liunx上运行heritrix

(1)export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/jediael/Heritirx1.14.4/lib/*:/home/jediael/Heritirx1.14.4/bin/*:/home/jediael/Heritirx1.14.4/conf/*

(2)cp -r webapps/ bin/

(3)cd bin

 (4)java org.archive.crawler.Heritrix

注意此种方法只能在本机上通过127.0.0.1来进行访问,因为代码中写了:

final String ROOTURI = "127.0.0.1:" + Integer.toString(port);

        String selfTestUrl = "http://" + ROOTURI + '/';

即只用于本机测试。

二、配置爬虫任务并开始下载

1、登录系统 admin/admin

2、点击Jobs--->create new job---->with defaults

每次新建一个job,都等于创建一个新的order.xml。在Heritrix中,每个任务对应一个order.xml,用于描述任务的属性。它用于指定Job的Processor类、Frontier类、Fetcher类、抓取时的最大线程数、最长超时等属性。

3、输入基本信息,注意seeds中最后必须有一个"/"

4、选择下边的"Modules",进入Module配置页(Heritrix的扩展功能都是通过模块概念实现的,可以实现自己的模块完成自己  想要的功能)。其中第一项 "Select Crawl Scope" 使用默认的"org.archive.crawler.deciderules.DecidingScope"     。倒数第三项 "Select Writers " 删除默认的 "org.archive.crawler.writer.ARCWriterProcessor" ,后添加  "org.archive.crawler.writer.MirrorWriterProcessor",这样执行任务的时候抓取到的页面会以镜像的方式放在本地的 目录结构中,而不是生成ARC存档文件。

5、选择"Modules"右边的"Submodules",在第一项内容中 "crawl-order ->scope->decide-rules->rules" 删除掉其中的 "acceptIfTranscluded" (org.archive.crawler.deciderules.TransclusionDecideRule) 的这一项抓取作用域的 规则。否则当Http请求返回301或者302时Heritrix会去抓取其他域下的网页。 

 

6、在WUI的第二行导航栏中选择"Settings"进入Job的配置页面,其中主要修改两项:http-headers 下的user-agent 和from,他们的"PROJECT_URL_HERE" 和 "CONTACT_EMAIL_ADDRESS_HERE" 替换为自己的内容 ("PROJECT_URL_HERE" 要以 "http://" 开头)

 

7、在WUI的第二行导航栏中选择最右边的"Submit job"

 

8、在WUI的第一行导航栏中选择第一项的"Console",点击"Start",抓取任务正式开始,时间长短有网络状况和所抓取网站的 深度有关。点击"refresh"可以监控下载情况

还可点击logs等观察日志。

9、默认情况下,文件下载至"项目位置\jobs"。

三、一些说明

1、创建项目后,Heritrix中报错:sun.net.www.protocol.file.FileURLConnection,原因为sun包是受保护的包,默认只有sun公司的软件才能使用。Eclipse会报错,把对保护使用waring就可以了。

步骤如下:Windows -> Preferences -> Java -> Compiler -> Errors/Warnings-> Deprecated and trstricted API -> Forbidden reference (access rules):
-> change to warning

2、在进入module配置页,若发现所有的配置可以删除,移动,但是不可以添加和修改,没有可选的下拉框。原因为配置文件找不到,应该在classpath标签页添加配置文件的路径。

即第一部分的第9步。

3、问题: thread-10 org.archive.util.ArchiveUtils.<clinit>()
TLD list unavailable

java.lang.NullPointerException

at java.io.Reader.<init>(Unknown Source)

at java.io.InputStreamReader.<init>(Unknown Source)

at org.archive.util.ArchiveUtils.<clinit>(ArchiveUtils.java:759)

解决:将heritrix-1.14.4-src.zip解压中src/resources/org/archive/util中tlds-alpha-by-domain.txt文件复制到工程中org.archive.util包下。

四、Modules中的一些配置项

在Modules界面中,共有8个选项需要配置,包括以下

1、Crawl Scope

用于配置抓取范围。选项请见下图。

根据名称可以直观的知道抓取范围,默认是BroadScope,即不限制范围。

从下拉框中选择某一项后,点击chang按键,则下拉框上面的解释会相应的发生变化,描述当前选项的特征。

2、URI Frontier

用于确定待抓取的url的顺序,亦即相应的算法。默认项为BdbFrontier。

3、Pre Processors:Processors
that should run before any fetching

在抓取前,处理器对一些先决条件做的判断。比如判断robot.txt等信息,它是整个处理器链的入口。

4、Fetchers:Processors
that fetch documents using various protocols

指定解释、提取哪些类型的文件

5、Extractors:Processors
that extracts links from URIs

用于提取当前获取到文件的信息。

6、Writers:Processors
that write documents to archive files

选择保存的方式,常用的有2种:

org.archive.crawler.writer.MirrorWriterProcessor:保存镜像,即将文件直接下载下来。

org.archive.crawler.writer.ARCWriterProcessor:以归档的格式下载下来,此时文件不可直接查看。此项为default模块的默认选项。

7、Post Processors Processors that do cleanup and feed the Frontier with new URIs

抓取后的收尾工作。

8、Statistics Tracking

用于一些统计信息。

五、Setting中的一些配置项

修改下载文件的路径

版权声明:本文为博主原创文章,未经博主允许不得转载。

【Heritrix基础教程之1】在Eclipse中配置Heritrix 分类: H3_NUTCH 2014-06-01 00:00 1262人阅读 评论(0) 收藏的更多相关文章

  1. Java获取项目中的路径 分类: Java Game 2014-08-14 10:17 122人阅读 评论(0) 收藏

    在项目中经常需要获取某个文件的路径: 在这里提供一些获取路径的方法.. 1.此种方式获取的路径,是当前类所在的路径: UserDAOTest.class.getResource("UserD ...

  2. ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏

    ACM 中常用的算法有哪些?作者: 张俊Michael 网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以水题为主(就是没有任何算法, ...

  3. C/C++中const的用法 分类: C/C++ 2015-07-05 00:43 85人阅读 评论(0) 收藏

    const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结 ...

  4. 认识C++中的临时对象temporary object 分类: C/C++ 2015-05-11 23:20 137人阅读 评论(0) 收藏

    C++中临时对象又称无名对象.临时对象主要出现在如下场景. 1.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象. Integer inte= Integer(5); ...

  5. makefile基础实例讲解 分类: C/C++ 2015-03-16 10:11 66人阅读 评论(0) 收藏

    一.makefile简介 定义:makefile定义了软件开发过程中,项目工程编译链.接接的方法和规则. 产生:由IDE自动生成或者开发者手动书写. 作用:Unix(MAC OS.Solars)和Li ...

  6. C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏

    1.     概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...

  7. iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏

    //初始化textfield并设置位置及大小   UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 13 ...

  8. Eclipse和MyEclipse的区别 分类: 编程工具 2015-07-18 11:12 23人阅读 评论(0) 收藏

    今天,在一个Q群里有人问Eclipse和MyEclipse的区别.虽然对于知道的人来说答案很简单,但是对于不知道的人来说就很难,很多问题也都是这样的,会者不难,难者不会. 其实,网上搜搜答案就挺多的, ...

  9. 解决ORA-29857:表空间中存在域索引和/或次级对象 & ORA-01940:无法删除当前连接的用户问题 分类: oracle sde 2015-07-30 20:13 8人阅读 评论(0) 收藏

    今天ArcGIS的SDE发生了一点小故障,导致系统表丢失,所以需要重建一下SDE数据库,在删除SDE用户和所在的表空间过程中遇到下面两个ORA错误,解决方法如下: 1)删除表空间时报错:ORA-298 ...

随机推荐

  1. Java7与G1

    Lucene 4.8開始不支持java6了,所以在下次版本号升级之前我们要先升级至java7. 我使用1/3的全量索引(7.3G).进行測试,20并发,40万请求: sun jdk 1.6.0_26 ...

  2. jQuery Easy UI Panel(面板)组件

    panel(面板)组件,跟前面的组件使用方法差点儿都差点儿相同,也是从设置一些面板属性.操作面板触发的事件.我们可针对面板对象的操作方法这三个点去学习. 后面有一些组件要依赖于这个组件. 另一点跟前面 ...

  3. 徒弟们对话,遇到sb领导,离职吧

     由于涉及私密,所以qq号做了干扰.见谅. 非常多人以为在公司,你优化了几十个sql老板就给你涨工资了.或者你bbed搞点特殊恢复就涨工资了. 或者解决某些棘手问题就涨工资了. 那是不正确的. 遇 ...

  4. Visual Studio Code配置GoLang开发环境

    Visual Studio Code配置GoLang开发环境 在Visual Studio Code配置GoLang开发环境 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页: ...

  5. jQuery返回值:jQuery对象

    $(function(){ //返回值 alert($); //jQuery //以下返回的全是jQuery对象 alert($()); alert($('#box')); alert($('#box ...

  6. Mysql数据库的瓶颈处理一点建议

    Mysql数据库的瓶颈处理一点建议         我们在使用Mysql数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候.磁盘I/O瓶颈的出 ...

  7. Android 使用AIDL实现进程间的通信

    在Android中,如果我们需要在不同进程间实现通信,就需要用到AIDL技术去完成. AIDL(android Interface Definition Language)是一种接口定义语言,编译器通 ...

  8. Redmine安装

    http://www.itnpc.com/news/web/146433249372595.html http://www.cnblogs.com/iluzhiyong/p/redmine.html ...

  9. Android开发工具之adt-bundle-windows

    adt-bundle-windows是非常久之前的android开发工具.是集成了ADT版本号的eclipse,可是里面并没有下载SDK.这个须要自己单独下载,这个工具适合刚開始学习的人使用. 由于刚 ...

  10. Xcode6:No architectures to compile for(ONLY_ACTIVE_ARCH=YES...)

    1.问题描写叙述 Xcode6真机測试旧project,不能执行,报错例如以下: 2.解决方式 问题非常明显,当前的执行模式设置了ONLY_ACTIVE_ARCH为Yes,当时的project的Val ...