热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Heritrix初步优化(应用ELFHash优化线程数量)

Heritrix初步优化一.应用ELFHash算法优化开启线程策略0.在默认的情况下,Heritrix使用HostnameQueueAssignmentPolicy来产生ke

Heritrix 初步优化

一. 应用ELFHash 算法优化开启线程策略

0.   在默认的情况下,Heritrix使用HostnameQueueAssignmentPolicy来产生key值,而这个策略是用hostname作为key值的,因此一个域名下的所有链接都会被放在同一个线程中去。如果对Heritrix分配URI时的策略进行改进,利用ELFHash“可执行链接格式”(Executable and Linking Format,即ELF)算法把url尽量平均分布到各个队列中去,就能用较多的线程同时抓取一个域名下的网页,速度将得到大大的提高。具体算法介绍请到算法分类查看。

1.       复制org.archive.crawler.frontier.HostnameQueueAssignmentPolicy 更名为org.archive.crawler.frontier.ELFHashQueueAssignmentPolicy。添加方法:


private long  ELFHash(String str){
long hash=0;
long x=0;
for(inti=0;i hash = (hash <<4 )+str.charAt(i);
if((x= hash &0xF000000L) != 0){
hash ^= x>>24;
hash &= ~x;
}
}
return hash& 0x7FFFFFFFL;
}
然后在71行的else分支替换成:


    String uri = cauri.getUURI().toString();
long key =ELFHash(uri);
candidate= String.valueOf(key%100); //控制好一百条以内的线程


2. 替换获取key的策略

在org.archive.crawler.frontier.AbstractFrontier293行 替换更改的类

在heritrix.properties 也替换更改的类,每次换行均要加“\等号后面黑色字体是无效。

org.archive.crawler.frontier.AbstractFrontier.queue-assignment-policy= org.archive.crawler.frontier.ELFHashQueueAssignmentPolicy \
org.archive.crawler.frontier.IPQueueAssignmentPolicy \
org.archive.crawler.frontier.BucketQueueAssignmentPolicy \
org.archive.crawler.frontier.SurtAuthorityQueueAssignmentPolicy \
org.archive.crawler.frontier.TopmostAssignedSurtQueueAssignmentPolicy


3. 修改判断爬虫是否考虑robots协议的抓取

在org.archive.crawler.prefetch.PreconditionEnforcer的considerRobotsPreconditions方法,改为return false。


4. 重新建立job。不能用已经存在的job。因为之前当新建一个job 的时候会把相关的配置记录(不仅仅是前端显示的配置)在jobs的order.xml中。所以,当你用已经存在的job复制出新的job会出现异常:

2015-12-0910:46:46.024 警告 thread-10org.archive.crawler.settings.CrawlSettingsSAXHandler.handleValueError() Valuenot in legal values list
Attribute: 'frontier:queue-assignment-policy'
Value: 'org.archive.crawler.frontier.AbstractFrontier'
File: 'file:/F:/lucene/myheritrix/jobs/souhu2-20151209103025046/order.xml',line: 79, column: 100

5.效果展示:

前提:抓取同一个主题

---------------------------------------------------------------------------------优化前(针对同一个主题)------------------------------------------------------------------------------------------------------------------

 





-------------------------------------------------------------------------------------------优化后----------------------------------------------------------------------------------------------------------





 

 

 

 

 

 

 

 

 

 

 

 

 

 

---------------------------------------------------------------------------------------优化后(针对同一个主题)--------------------------------------------------------------------------------------------------------



 


推荐阅读
author-avatar
手机用户2502918445
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有