分享

Heritrix个性化设置抓取目标

 复杂网络621 2013-11-22
    本文是关于Heritrix的优化配置的。尽管我们组的工作已经基本上完成了,但是我们仍然在坚持进行持续性的改进,因为这总是能够让我们学到新的东西。

之前我们在 我们得到的Heritrix Crawl Job Report 一文中已经说到了一些优化配置Heritrix的方法——将一些参数适当设小。但是实际上还是不够的,因为我们并不想将时间浪费在下载JPG/PDF/DOC甚至AVI/RM文件上,从前面的统计报告我们也可以看到,整个抓取工作共下载了1.6GB的数据,而其中只有text/html是我们真正需要的,而且这部分数据只有899MB。如果我们能够不下载其它的一些“无关”数据,就可以减少工作量,节省花费的时间。

基于这个想法,我们仔细研究了Heritrix的文档,并且对Heritrix的配置进行了改进。

1. Modules -> Writer Processor
我们将Writer Processor改回了ARCWriterProcessor,因为将数据保存为ARC文件能够保持网页基本信息(URL等)的原貌,便于我们此后的数据分析。

2. Modules -> Extractor
我们只对html文件中的链接感兴趣, 所以去除了以下三个extractor:
  • ExtractorCSS
  • ExtractorJS
  • ExtractorSWF

3. Submodules -> midfetch-decide-rules
添加org.archive.crawler.deciderules.FilterDecideRule 到 midfetch-decide-rules,
再添加org.archive.crawler.filter.ContentTypeRegExpFilterorg.archive.crawler.deciderules.DecidingFilter,
然后添加org.archive.crawler.deciderules.FetchStatusDecideRule 到 DecidingFilter.

添加后的效果图如下:
Project <wbr>1-1: <wbr>Ubuntu下配置和运行Heritrix <wbr>鈥斺 <wbr>号外篇

4. Submodules -> Archiver#decide-rules
同3.

5. Settings -> midfetch-decide-rules
修改regexp的值为"text/html.*"(没有引号)
修改target-status的值为200

这样Heritrix就不会下载除了Content-Type为text/html并且Status Code为200之外的其它文件.

修改后的效果图为:
Project <wbr>1-1: <wbr>Ubuntu下配置和运行Heritrix <wbr>鈥斺 <wbr>号外篇

6. Settings -> Archiver#decide-rules
同5.
这样Heritrix就不会保存除了Content-Type为text/html并且Status Code为200之外的其它文件的HTTP Head信息.

最后, 我们用这个设置重新进行了一遍抓取工作, 得到的报告如下:

Project <wbr>1-1: <wbr>Ubuntu下配置和运行Heritrix <wbr>鈥斺 <wbr>号外篇

从报告中可以看到, 我们只抓取了849MB的数据, 其中text/html类型的数据为848MB, 其它类型文件只有1MB左右, 应该只是些HTTP Header信息.

总用时16h19m, 比上次少了大约3个小时.
按照我们之前的预测应该能节约将近一半的时间, 但是实际节约的时间小于预期, 可能和网络状况有关.

参考:
A. Common Heritrix Use Cases

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多