Heritrix的Modules界面不能改变选择项的问题(涉及Scope, Frontier, PreProcessor, Fetcher, Extractor, Writer, PostProcessor)

2008-03-10 – 9:50 pm

在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可以帮我正确设置需要的参数。

Popularity: 42% [?]

Pages: 1 2

One Response to “Heritrix的Modules界面不能改变选择项的问题(涉及Scope, Frontier, PreProcessor, Fetcher, Extractor, Writer, PostProcessor)”

  1. 1
    在Windows平台上配置Heritrix的Eclipse开发环境 | 站长工具箱 Says:

    […] 在Classpath标签页中,增加conf为Classpath。这样就可以找到相应的配置文件。否则会遇到奇怪的问题(参见:Heritrix的Modules界面不能改变选择项的问题) […]

Leave a Reply

You must be logged in to post a comment.