一、新建项目并将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, username、password及端口号



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文件拷贝到project中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的更多相关文章

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

    一.新建项目并将Heritrix源码导入 1.下载heritrix-1.14.4-src.zip和heritrix-1.14.4.zip两个压缩包,并解压,以后分别简称SRC包和ZIP包: 2.在Ec ...

  2. 【Heritrix基础教程之3】Heritrix的基本架构

    Heritrix可分为四大模块: 1.控制器CrawlController 2.待处理的uri列表  Frontier 3.线程池 ToeThread 4.各个步骤的处理器 (1)Pre-fetch ...

  3. 【Heritrix基础教程之3】Heritrix的基本架构 分类: H3_NUTCH 2014-06-01 16:56 1267人阅读 评论(0) 收藏

    Heritrix可分为四大模块: 1.控制器CrawlController 2.待处理的uri列表  Frontier 3.线程池 ToeThread 4.各个步骤的处理器 (1)Pre-fetch ...

  4. 【Heritrix基础教程之2】Heritrix基本内容介绍

    1.版本说明 (1)最新版本:3.3.0 (2)最新release版本:3.2.0 (3)重要历史版本:1.14.4 3.1.0及之前的版本:http://sourceforge.net/projec ...

  5. 【Heritrix基础教程之2】Heritrix基本内容介绍 分类: B1_JAVA H3_NUTCH 2014-06-01 13:02 878人阅读 评论(0) 收藏

    1.版本说明 (1)最新版本:3.3.0 (2)最新release版本:3.2.0 (3)重要历史版本:1.14.4 3.1.0及之前的版本:http://sourceforge.net/projec ...

  6. 【Heritrix基础教程之4】开始一个爬虫抓取的全流程代码分析

    在创建一个job后,就要开始job的运行,运行的全流程如下: 1.在界面上启动job 2.index.jsp 查看上述页面对应的源代码 <a href='"+request.getCo ...

  7. OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务

    OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务   1.  OpenVAS基础知识 OpenVAS(Open Vulnerability Assessment Sys ...

  8. Python基础教程之List对象 转

    Python基础教程之List对象 时间:2014-01-19    来源:服务器之家    投稿:root   1.PyListObject对象typedef struct {    PyObjec ...

  9. Python基础教程之udp和tcp协议介绍

    Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...

随机推荐

  1. ASP.NET在主题中添加CSS文件

    ASP.NET在主题中添加CSS文件 在ASP.NET中,可以使用CSS来控制页面上HTML元素和ASP.NET控件的皮肤.如果在主题文件夹中添加了CSS文件,则在页面应用主题时也会自动应用CSS. ...

  2. Android 如何在ScrollView中嵌套ListView

    前几天因为项目的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView.但刚开始的时候,会发现放入的小ListVie ...

  3. Android最佳实践指南

    Updated on 2016/1/6 修正了一些翻译段落欢迎转载,但请保留译者链接:http://www.jianshu.com/p/613d28a3c8a0 Lessons learned fro ...

  4. 使用Timer执行定时任务

    一.Timer概述 在Java开发中,会碰到一些需要定时或者延时执行某些任务的需求,这时,我们可以使用Java中的Timer类实现. 二.Timer介绍 Timer是一个定时器类,通过该类可以为指定的 ...

  5. bzoj3796

    好像已经很久没有做后缀数组的题目,导致这种题一开始没想出来看到公共子串肯定想到后缀数组吧,但我都忘了最长公共子串怎么求了重要的性质:最长公共子串=max(h[i])名次相邻的两个后缀要分别属于s1,s ...

  6. 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程

    基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boi ...

  7. 两种应该掌握的排序方法--------2.quick Sort

    介绍 http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F 用些里面的c++ 实现,感觉这个空间复杂度比较小.还挺好 in ...

  8. 一步一步学Remoting系列文章

    转自:http://www.cnblogs.com/lovecherry/archive/2005/05/24/161437.html (原创)一步一步学Remoting之一:从简单开始(原创)一步一 ...

  9. hibernate之参数绑定

    hibernate之参数绑定 ---------- 我们应该拒绝SQL(或HQL)的拼装,应该永远不要编写这样的代码,有这很严重的安全问题,众所周知的SQL注入.我们可以考虑参数绑定,在hiberna ...

  10. haporoxy的keeplaive ZZ

    转载一个别人总结的http://hi.baidu.com/%D3%E3%B5%C1%B5%C1/blog/item/04ffd1b1854f69ef30add1e8.html httpclose, h ...