heritrix queue 分配策略

本文探讨了Heritrix爬虫中不同QUEUE分配策略的影响,并通过自定义分配策略解决了单一队列导致的爬取效率低下问题。使用SurtAuthorityQueueAssignmentPolicy改进策略并结合特定网站URL结构特点进行优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

最近用heritrix 爬网站, 发现很慢,

heritrix 的QUEUE的分配策略 会影响速度, 

比如用HostnameQueueAssignmentPolicy, 一个网站只分配一个Queue, 

如果这个网站有很多页面要爬取, 这些页面全部放到一个queue里面,

很多页面就会阻塞在这个Queue里, 要经过很长时间才能处理。

 

相比之下, 对一个网站的取用SurtAuthorityQueueAssignmentPolicy 策略会好很多,

会根据网站的URL结构放入不同的queue中, 

比如

http://www.ebookl.com/magazine/men

http://www.ebookl.com/937100-restorative-therapies-parkinsons-disease-repost

这倆个页面会放在不同的Queue当中, 一个是category页面(共二级), 一个是内容页。

 有兴趣可以看一下源代码的实现。

 

但是有些网站并不能考URL 来区分, 这时候可以考虑自定一个queueAssignmentPolicy, 修改SRPING XML配置,

 

 <!-- QUEUE ASSIGNMENT POLICY -->

 <bean id="queueAssignmentPolicy" 
   class="com.spider.util.CustomQueueAssignmentPolicy">
  <property name="forceQueueAssignment" value="" />
  <property name="deferToPrevious" value="true" />
  <property name="parallelQueues" value="10" />
 </bean>
 

 

 这里我是继承SurtAuthorityQueueAssignmentPolicy,由于category页面URL包含all-ebo, 我就用第六个Queue, 其他内容页以html结尾, 我就用hashcode 取余数来分配到哪一个Queue.

 

public class CustomQueueAssignmentPolicy extends
        SurtAuthorityQueueAssignmentPolicy {

    private static final long serialVersionUID = -282094213180482046L;

    private static final Logger logger = Logger
            .getLogger(CustomQueueAssignmentPolicy.class.getName());

    @Override
    protected int getSubqueue(UURI basisUuri, int parallelQueues) {

        if (basisUuri.toString().contains("all-ebo")) {
            return 6;
        } else if (basisUuri.toString().endsWith(".html")) {
            
            int hashCode = basisUuri.toString().hashCode();
            return Math.abs(hashCode) % 3;
        }

        return super.getSubqueue(basisUuri, parallelQueues);
    }

}

 

 虽然我写的很简单, 但是经过测试category和内容页都是很公平的处理, 内容页不会阻塞category页面的处理, 速度自然块了一些。

 

来自:http://laravel.iteye.com/blog/2052920

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值