`
shaosmh
  • 浏览: 30119 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Heritrix的Modules界面不能改变选择项的问题

阅读更多
在Eclipse环境中配置好我的Heritrix后,就可以使用Heritrix了。(参见:在Windows平台上配置Heritrix的Eclipse开发环境)。很快我就遇到了第一个问题(实际是两个,但是只能先解决第一个了)。我在新建Job的时候,按照书上说的,先选Jobs,再With defauls,再输入名字,然后”Modules”,这时候我发现我的界面和书上说的不一样。书上说这个界面里面应该是显示现在已经缺省设置的 Scope,Frontier,PreProcessor,Fetcher,Extractor,Writer,PostProcessor,然后用户可以选择添加或者替换这些Class的。但是我的界面里面只显示了现在设置的Class,可以改变次序,可以删除。但是所有本来应该是添加新Class或者改变现在选择项目的功能在我的界面上都没有。例如书上说缺省有CrawlScope,可以选HostScope,我这里只有DecidingScope,没有下面的列表框可以选择其他的。我的Writer也只有ARCWriterProcessor,没有其他的。

我本想先这么试试看的,就没有改选择而是直接启动了Job。首先发现速度非常慢,抓我这个www.sitemasterkit.com,一共100 来页文章用了一个小时(我自己拷都比这快,猜测可能和我在Eclipse中运行有关系,先不管它)。然后发现抓完存在本地的是一个XXXX.arc.gz 的文件。先用WinZIP将其解成XXXX.arc,但是再想解这个arc文件,无论7-ZIP,WinZIP还是WinRAR都报错。我想可能是 ARCWriterProcessor的问题。在工程目录中查找,发现和ARCWriterProcessor在同一个Package中还有好几个其他的 Processor,尤其是MirrorWriterProcessor应该是只做镜像的,好像是我的需求。现在要想办法把它用上。

因为我知道所有Job的设置都在 order.xml里面,我先看看里面有没有关于Writer的设置。很容易找到了关于ARCWriterProcessor的部分。

<map name=”write-processors”>
<newObject name=”Archiver” class=”org.archive.crawler.writer.ARCWriterProcessor”>
<boolean name=”enabled”>true</boolean>
<newObject name=”Archiver#decide-rules” class=”org.archive.crawler.deciderules.DecideRuleSequence”>
<map name=”rules”>
</map>
</newObject>
<boolean name=”compress”>true</boolean>
<string name=”prefix”>IAH</string>
<string name=”suffix”>${HOSTNAME}</string>
<long name=”max-size-bytes”>100000000</long>
<stringList name=”path”>
<string>arcs</string>
</stringList>
<integer name=”pool-max-active”>5</integer>
<integer name=”pool-max-wait”>300000</integer>
<long name=”total-bytes-to-write”>0</long>
<boolean name=”skip-identical-digests”>false</boolean>
</newObject>
</map>

先简单试试,把 ARCWriterProcessor改成了MirrorWriterProcessor。然后生成一个新Job看看。结果浏览器得到了一个 java.lang.ClassCastException: java.lang.String cannot be cast to org.archive.crawler.settings.ListType。在我的Eclipse窗口可以看到:

03/11/2008 03:52:15 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ‘compress’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 181, column: 48
03/11/2008 03:52:16 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ‘prefix’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 182, column: 43
03/11/2008 03:52:16 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ’suffix’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 183, column: 51
03/11/2008 03:52:16 +0000 WARNING org.archive.crawler.settings.CrawlSettingsSAXHandler$SimpleElementHandler endElement Unknown attribute ‘max-size-bytes’ in ‘file:/E:/Heritrix/src/conf/profiles/default/order.xml’, line: 184, column: 59

我想应该是order.xml中后面部分的属性是为 ARCWriterProcessor服务的,而MirrorWriterProcessor不认。没办法,只好下决心先来解决不能选择其他的Class 的问题了。希望通过界面选择合适的Writer可以帮我正确设置需要的参数。

首先需要定位是在哪里确定显示这个页面的。这个页面上有几个标志字符串,例如“Select Writers”。在Eclipse中全局查找,发现这个页面是在webapps->admin->jobs下面的Modules.JSP生成的,其中有这么一个调用(我没用过JSP,猜想和Java语法差不多吧)

<p>
<b>Select Writers</b>
<i>Processors that write documents to archive files</i>
<p>
<%=buildModuleMap(
(ComplexType)settingsHandler.getOrder().getAttribute(
CrawlOrder.ATTR_WRITE_PROCESSORS),
Processor.class,
“Writers”)%>

看样子选择部分就是靠这个buildModuleMap来生成的,这个函数的定义在webapps->admin->includes ->modules.jsp(还有一个在webapps->admin->includes-> jobcredentials.jsp,但是通过加打印发现调用的是这个)。其中主要有3部分功能,第一部分用于显示现在已经选择的项目,第二部分是统计还有多少可以选择的配置项目,第三部分就是如果判断还有可以选择的配置项目,就显示让用户选择。跟踪发现就是第二部分数出的数字 unusedOptions.size()是0,所以第三部分没有得到调用。再向前跟踪,发现第二部分的循环是基于函数第一句的一个变量定义来的, List availableOptions = getOptionsForType(allowableType),这里的availableOptions里面的元素个数是0,造成第二部分也没有执行。现在看起来问题就是出在getOptionsForType(allowableType)没有返回需要的列表。

进入 getOptionsForType函数,基本一眼就可以看出问题了。这个函数里面除了return CrawlJobHandler.loadOptions(optionsFilename);一句有意义的话以外,就是前面的设置变量和后面的 Exception处理了。基本猜测就是出了Exception。加打印看了一下(发现Eclipse可以直接修改代码不重启就生效,和解释语言差不多了),果然是在Classpath没有找到需要的文件。看了一下,找相关的Options文件是在Modules相对路径下的,而Modules目录是在 conf目录下。在Eclipse里面设置conf为Classpath( 在Eclipse的Run Dialog中,Classpath标签Table,选中User Entries,然后右边会有Advance选项,选Add External Folder,把你的Conf加进去就行了)。再试,在Modules页面中的功能正常了。

简单来看,这真的是一个小问题。但是却用了我差不多4个小时。实际还是网上相关的资源太少了,例如我就没有找到一个详细一些地说如何在 Eclipse下配置Heritrix的文章,只好自己写一篇了。而我实际对Eclipase和Heritrix都是新手。本文我写得这么详细,也就是希望能对万一遇到这个问题的朋友有个帮助。也希望大家能一起努力让网上的相关文章逐渐多起来。
  • 大小: 42.9 KB
分享到:
评论
2 楼 lin405634383 2010-10-22  
你好,请问一下,你说的“加打印”是什么意思,怎么操作
1 楼 liliang_xf 2008-09-01  
谢谢了,老兄,我也郁闷了几个小时

相关推荐

    Heritrix部署直接能运行的项目

    主题爬虫:集中于被选择的问题。 持续爬虫:不仅仅爬更当前的网页还负责爬日后更新的网页。 实验爬虫:对爬虫技术进行实验,以决定该爬什么,以及对不同协议的爬虫爬行结果进行分析的。 Heritrix的主页是...

    配置Heritrix及常见问题解决

    在配置Heritrix时,我们需要理解其核心概念,如工作流、存档项和处理器。 1. **工作流(Workflow)**: Heritrix的工作流定义了爬虫如何处理每个URL。它由一系列的处理器组成,每个处理器负责特定的任务,如HTTP...

    网络爬虫Heritrix1.14.4可直接用

    7. **日志和监控**:Heritrix有完善的日志记录系统,可以帮助开发者跟踪爬虫状态,定位问题。同时,它还提供了一些性能指标,如抓取速度、错误率等,方便用户监控爬虫运行情况。 8. **安全性与伦理**:使用Heritrix...

    Heritrix在windows下运行成功

    Heritrix的安装并不需要复杂的步骤,主要是确保软件包中的所有文件都被正确放置。 ### 三、环境变量配置 为了使Heritrix能够顺利运行,需要设置环境变量。具体来说,需要设置`Heritrix_HOME`变量,使其指向...

    heritrix1.14.0jar包

    Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,用于抓取和保存网页数据。在IT行业中,爬虫是获取大量网络数据的重要手段,Heritrix因其灵活性、可扩展性和定制性而备受青睐。标题...

    Heritrix搭建好的工程

    在新窗口中,创建一个新的“Java Application”配置,选择Heritrix主类(通常是包含`main`方法的类)作为启动类。 运行Heritrix后,你可以在浏览器中访问其管理界面。通常,默认的访问地址是...

    Heritrix-1.4.4.src.zip +Heritrix-1.4.4.zip

    6. 常见问题可能包括依赖库不完整、版本冲突、运行时环境配置不当等,这些问题的解决通常需要检查项目设置,更新库,或者查阅Heritrix的官方文档或社区论坛。 在Heritrix的使用过程中,开发者需要理解它的核心概念...

    heritrix爬虫安装部署

    ### Heritrix爬虫安装部署知识点详解 #### 一、Heritrix爬虫简介 Heritrix是一款由互联网档案馆(Internet Archive)开发的开源网络爬虫框架,它使用Java语言编写,支持高度定制化的需求。Heritrix的设计初衷是为了...

    heritrix抓取的操作和扩展

    Heritrix的工作模型基于一个循环过程,包括选择URI、下载内容、分析归档、选择新URI并添加到队列,以及标记已处理的URI。它的整体结构包括多个组件,协同工作以实现高效和可控的网页抓取。 配置和使用Heritrix主要...

    Heritrix的安装与配置

    选择源代码版本的原因在于可能需要对Heritrix进行自定义扩展以满足特定需求。下载完成后,解压缩文件,你会看到两个主要的文件夹:`lib`和`src`。 `lib`文件夹包含了Heritrix运行所需的第三方类库,这些.jar文件...

    heritrix1.14.4(内含src)

    在使用Heritrix 1.14.4时,需要注意的是,由于这是一个较旧的版本,可能会有一些已知的问题或者不支持现代网站的新特性。因此,在实际应用中,可能需要升级到最新版本以获取更好的性能和兼容性。同时,源代码的可用...

    开发自己的搜索引擎 lucene + heritrix

    开发自己的搜索引擎是一项复杂且具有挑战性的任务,涉及信息检索、数据处理、网络爬虫等多个领域的知识。在这个过程中,Lucene 和 Heritrix 是两个非常关键的工具,它们分别在搜索引擎的构建中扮演着不同的角色。 ...

    heritrix 3.1

    在Heritrix 3.1中,核心概念包括种子(Seeds)、作业(Jobs)、模块(Modules)和策略(Policies)。种子是指定爬虫起始抓取的URL集合,作业则包含了完整的爬取配置,包括种子、模块和策略。模块是可插拔的组件,...

    Heritrix3手册翻译

    Heritrix 3 是一款强大的网络爬虫工具,主要用于网页抓取和互联网存档。它在2009年12月发布了3.0.0版本,并随着时间的推移不断更新,提供了3.0.1补丁版和3.2.0版,增加了新的特性和功能,比如更简单的使用方式、持续...

    heritrix-3.4.0-SNAPSHOT-src.zip

    Heritrix 是一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。官网下载好像要翻墙,我下下来方便大家使用,这是3.4版本,配合heritrix-3.4.0-SNAPSHOT-dist.zip使用

    heritrix系统使用.ppt

    Heritrix的灵活性和可扩展性使其成为大规模网页抓取任务的理想选择。用户可以根据实际需求定制各种策略和模块,以满足不同的数据收集和分析目的。然而,理解和掌握Heritrix的内部机制,如线程管理、数据结构和算法,...

    Heritrix(windows版)

    如果你打算对Heritrix进行二次开发,或者需要解决特定问题,那么这个源代码包是必不可少的。 此外,还有一个名为“官方下载地址.txt”的文件,它很可能包含了Heritrix的最新版本或其他相关资源的下载链接。确保从...

    Heritrix使用详解与高级开发应用

    此外,conf目录下的heritrix.properties文件是Heritrix运行的关键,因为它包含了运行时的各种配置参数,如默认工具、Web用户界面(WebUI)的设置以及日志格式等。 在首次运行Heritrix之前,你需要修改heritrix....

Global site tag (gtag.js) - Google Analytics