`
eimhee
  • 浏览: 2150574 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

heritrix queue 分配策略

阅读更多

 

最近用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

 

0
0
分享到:
评论

相关推荐

    网络爬虫Heritrix1.14.4可直接用

    2. **Heritrix架构**:Heritrix采用模块化设计,包括种子管理器、URI调度器、爬取策略、处理器链、存储模块等。每个模块都有其特定功能,如种子管理器负责管理起始抓取URL,调度器负责控制爬取速率和优先级。 3. **...

    heritrix1.14.0jar包

    Heritrix的工作原理是通过模拟浏览器行为,逐个访问网页并按照预设的策略下载页面。它支持HTTP、HTTPS、FTP等协议,并可以处理重定向、Cookies和登录认证。用户可以通过配置文件定义爬取规则,例如深度限制、URL过滤...

    Heritrix(windows版)

    - **爬行策略**:Heritrix支持多种爬行策略,如广度优先、深度优先等,可以根据需求选择合适的策略。 - **爬行范围**:通过种子URL和排除规则来控制爬行范围,防止爬虫超出预定的网站或页面。 - **抓取模块**:...

    heritrix-3.1.0 最新jar包

    - **模块化架构**:Heritrix的组件可以通过配置文件进行添加、删除或修改,如爬行策略、解析器、存儲策略等,提供了极大的灵活性。 - **爬行策略**:Heritrix支持多种爬行策略,如深度优先、广度优先,甚至可以...

    heritrix-1.14.2.zip

    在Heritrix 1.14.2中,用户可以通过XML配置文件来定制爬行策略。这些配置文件可以设置爬虫的行为,如设定爬行速度、定义种子URL、选择要抓取的文件类型、排除特定的URL模式等。此外,Heritrix还提供了丰富的插件系统...

    heritrix爬虫安装部署

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

    heritrix系统使用.ppt

    Heritrix提供了三种策略来识别已抓取过的页面。策略一是基于URI和摘要值的哈希表对比;策略二是利用content-length变化进行判断;策略三是通过比较链接到的页面摘要值来避免抓取重复页面。TrapSuppressExtractor是...

    Heritrix搭建好的工程

    总的来说,Heritrix工程在Eclipse中的运行使得开发者可以专注于爬虫的逻辑和策略,而无需关心底层的技术细节。这大大简化了开发流程,提高了工作效率。通过深入理解和熟练运用Heritrix,你可以构建自己的网络爬虫,...

    很好的heritrix学习资料

    Heritrix的灵活性允许用户通过配置不同的模块和策略来实现定制化爬取。这可能包括设置起始URL、定义抓取规则(如遵循或忽略某些链接)、设置下载速率限制以及选择如何处理不同类型的网络内容(如HTML、图片、PDF等)...

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

    对于高级开发者来说,Heritrix的可扩展性允许自定义处理器、策略和过滤器,以实现定制化的网络抓取需求。例如,你可以创建自己的URI选择策略,以决定哪些网页应该被爬取,或者编写自定义的抓取模块,处理特定的网页...

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

    Heritrix支持通过XML配置文件来定义爬取规则,包括深度限制、URL过滤、重试策略等。此外,它还提供了一个命令行界面和Web管理界面,方便监控和控制爬虫的运行状态。 在运行Heritrix时,需要注意的常见问题包括: - ...

    heritrix正确完整的配置heritrix正确完整的配置

    6. **存储与归档**: Heritrix可以配置不同的存储策略,如本地磁盘存储、数据库存储或云存储。你需要设置存储路径、文件格式和备份策略。 7. **日志与监控**: 设置合适的日志级别和位置,以便于跟踪和分析爬虫运行...

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

    Heritrix 支持各种复杂的抓取策略和规则,如深度优先、广度优先,以及各种过滤器和钩子,能够有效地抓取互联网上的资源。它能够处理大规模的网页抓取任务,并支持对抓取内容的归档管理。 综合Lucene和Heritrix,...

    heritrix-1.14.4爬虫框架及源码

    Heritrix支持多种策略和模块,如深度优先和广度优先的爬行策略,以及基于正则表达式或DOM结构的URL过滤器。此外,它还提供了丰富的接口,允许开发者编写自定义的模块,如新的爬行策略、内容处理器或存储适配器。这...

    heritrix源码

    3. **配置与策略**:Heritrix通过XML配置文件定义爬取行为,如设置种子URL、选择爬取策略、过滤规则等。策略可以定制,比如深度优先、广度优先、基于链接关系的爬取等。 4. **链接管理**:Heritrix使用Crawler-...

    Heritrix的使用入门

    启动命令通常会包含Java内存分配和Heritrix的安装路径。例如,下面是一个示例的批处理文件内容: ```batch java -Xmx512m -Dheritrix.home=e:\\heritrix -cp "E:\\heritrix\\lib\\*" ``` 这里,`-Xmx512m`设置了...

Global site tag (gtag.js) - Google Analytics