`
zhaohaolin
  • 浏览: 1003131 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Heritrix3.0教程 使用入门(四) 载入种子的四种方式

阅读更多

Heritrix3.0新特性一大亮点就是,相比以前版本载入种子更灵活(甚至你可以动态载入种子),同时可以载入N个种子.以前版本载入种子是全部加载到内存

,而一旦种子过多,那容易导致内存溢出.而新版本会分批次写入硬盘(通过调度器写入).所以避免了这个问题.下面就说一下Heritrix3.0

载入种子的四种方式,分别是:直接载入,通过seeds.txt载入,通过ActionDirectory动态载入(注意是动态,你随时可以载入),自定义载入.
1. 直接载入 :
直接载入比较方便,只需直接在crawler.beans.cxml中设置就可以,具体设置如下.

  1. <bean  class = "org.archive.modules.seeds.TextSeedModule" >  
  2. <property>  
  3. <bean>  
  4. <property>  
  5. <value>  
  6. # your seeds  
  7. </value>  
  8. </property>  
  9. </bean>  
  10. </property>  
  11. -->  
  12. <!-- <property name='sourceTagSeeds'  value= 'false' /> -->  
  13. <!--  
  14. </bean>  


其中只要把your seeds替换成你想要抓取的URL即可,如http://www.yun5u.com.其中sourceTagSeeds表示是否让新抽取出来的URL记录它的种子.
这个最方便,缺点就是如果种子太多,会使得crawler-beans.xml文件过于庞大,不美观
2. 通过 seeds.txt 载入
也只需要在crawler.beans.cxml中配置,同时将种子填充到seeds.txt中即可:

  1. <bean  class = "org.archive.modules.seeds.TextSeedModule" >  
  2. <property>  
  3. <bean>  
  4. <property value="seeds.txt"  />  
  5. </bean>  
  6. </property>  
  7. <property name='sourceTagSeeds'  value= 'false' />  
  8. </bean>  


也很方便,同时保持了crawler-beans.cxml的美观.缺点其实1)也有,没有动态性,不能自定义扩展.比如想从数据库导入,甚至加上自己的属性.
3. 通过 ActionDirectory 动态载入
我觉得ActionDirectory是Heritrix3.0最有作用的新特性.因为可以动态控制抓取.比如想新增抓取的种子,想临时存放一些你不想抓取的URL,以及
临时让Heritrix抓取一些URL.ActionDirectory都可以很好的满足.我想这个还是以后要着重介绍下.下面先介绍动态载入种子的适用方法:
首先需要在crawler-beans.cxml中配置ActionDirectory:

  1. <bean  class = "org.archive.crawler.framework.ActionDirectory" >  
  2. <property name="actionDir"  value= "action"  />  
  3. <property name="initialDelaySeconds"  value= "10"  />  
  4. <property name="delaySeconds"  value= "30"  />  
  5. </bean>  


其中actionDir表示你的action目录,你得把动态加载的URL文件放到该目录下.默认为action,表示在Heritrix运行的目录下.
initialDelaySeconds表示,初始化时需要延迟的时间,这里是10秒
delaySeconds表示定时扫描actionDir的间隔时间,这里是30秒.
其中启动actionDirectory这个bean并且运行Heritrix3.0之后,你就会在你的抓取目录下看到action这个目录.当然这里你也可以自己指定.
随后可以生成一个文件,但必须以.seeds或.seeds(.gz)结尾.Heritrix会把以这两种文件名结尾的文件当做种子文件来处理.其中.seeds(.gz)
表示压缩文件.将你的种子写入.seeds文件,如test.seeds,再放入action目录,30秒后会发现该文件转移到./action/done目录下,格式为时间.test.seeds.
这个时候就表示test.seeds这个种子文件已经被加载了.你再观察下控制台,或者crawl.log就有可能发现你的种子已经被处理了.
当然,这种载入方式,你可以根据你的需要随时运行.
4. 自定义载入 .
相信很多人,都有自定义载入种子的这个需求.比如从数据库中载入,或者加上自己的属性.这个就要扩展Heritrix的SeedModule了.我写了一个示例,代码如下:

  1. import java.io.File;  
  2. import java.util.Vector;  
  3. import org.apache.commons.httpclient.URIException;  
  4. import org.archive.modules.CrawlURI;  
  5. import org.archive.modules.SchedulingConstants;  
  6. import org.archive.modules.seeds.SeedModule;  
  7. import com.crawl.config.CrawlGlobal;  
  8. import com.crawl.controller.MyHeritrixController;  
  9. public   class  MySeedModule  extends  SeedModule {  
  10. private   static  final long serialVersionUID = 1L;  
  11. public   static  MyHeritrixController mhc=MyHeritrixController.getInstance();  // 单例模式,实现获得种子   
  12. /**  
  13. * 对ActionDirectory下.seeds或.seeds.gz的处理  
  14. */   
  15. @Override  
  16. public  void actOn(File f) {  
  17. }  
  18. /**  
  19. * 添加种子,比如动态添加了种子,这里既要将其载入,又要将其记录下来  
  20. */   
  21. @Override  
  22. public  void addSeed(CrawlURI curi) {  
  23. }  
  24. /**  
  25. * 载入种子  
  26. */   
  27. @Override  
  28. public  void announceSeeds() {  
  29. Vector seeds=mhc.getSeeds(); // 获得种子,这里需要根据你的需要自己实现.   
  30. String url=null;  
  31. CrawlURI curi=null;  
  32. try {  
  33. for (int i=0; i< seeds .size();i++){ url=seeds.get(i);  if (url!=null&&!url.equals( "" )){ curi=HeritrixUrlUtil.urlToCrawlURI(url, SchedulingConstants.MEDIUM);  // 自 己实现的方法,将String类型的URL转换为CrawlURI curi.setSeed(true); // 设置为种 子 curi.setSourceTag(curi.toString()); // 记录该URL来源的种子 URL curi.getData().put(CrawlGlobal.SITE_ID,new Integer(i) ); // 自定义属 性 curi.makeHeritable(CrawlGlobal.SITE_ID); // 持久化自定义属 性 curi.setForceFetch(true); // 设置为强制抓取,已经抓取过也继续抓 取 publishAddedSeed(curi); // 提交种 子 } } } catch (URIException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }   

 

  1. // HeritrixUrlUtil.urlToCrawlURI(url, SchedulingConstants.MEDIUM); 代码   
  2. /**  
  3. * 将字符串形式的URL转换为CrawlURI  
  4. * @param url  
  5. * @param priority  
  6. * @return  
  7. * @throws URIException  
  8. */   
  9. public   static  CrawlURI urlToCrawlURI(String url,int priority) throws URIException{  
  10. if  (!url.matches( "[a-zA-Z][\\w+\\-]+:.*" )) {  
  11. url = "http://"  + url;  
  12. }  
  13. url=url.replace("&" "&" );  
  14. UURI uuri=UURIFactory.getInstance(url);  
  15. CrawlURI curi=new  CrawlURI(uuri);  
  16. curi.setSchedulingDirective(priority);  
  17. return  curi;  
  18. }  
分享到:
评论

相关推荐

    Heritrix3.0教程 使用入门(三) 配置文件crawler-beans.cxml介绍.docx

    Heritrix 3.0 是一个强大的网络抓取框架,其设计目的是为了高效、灵活地爬取互联网上的信息。在Heritrix 3.0中,`crawler-beans.cxml` 文件扮演着至关重要的角色,它是整个爬虫的配置中心,负责定义和管理爬虫的行为...

    heritrix3种子载入方式

    Heritrix3种子载入方式共有四种,分别是: 1. 直接载入方式: 直接载入是通过配置文件直接指定种子的方式。这种方式操作简单,适合种子数量较少且不需要频繁更换种子的场景。用户在配置文件中直接指定种子URL列表...

    Heritrix的使用入门

    在开始使用Heritrix之前,首先要了解如何下载和运行它。Heritrix的最新版本可以在SourceForge的下载页面找到。下载完成后,将其解压缩到本地目录,并注意其结构,包括`lib`目录,其中包含了Heritrix运行所需的类库,...

    网络爬虫Heritrix1.14.4可直接用

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

    Heritrix3手册翻译

    它在2009年12月发布了3.0.0版本,并随着时间的推移不断更新,提供了3.0.1补丁版和3.2.0版,增加了新的特性和功能,比如更简单的使用方式、持续爬行以及处理大规模爬行任务的能力。Heritrix 3 的文档包括用户指南和...

    heritrix系统使用.ppt

    它提供了一种高效、可配置的方式来收集和处理网页数据。本篇将详细解释Heritrix系统的使用、核心概念、工作原理以及关键组件。 首先,Heritrix的安装和配置涉及到几个主要步骤。用户需要下载Heritrix源码,然后按照...

    heritrix3.1 官方指导手册

    为了帮助新手用户快速上手,Heritrix 提供了一个简单的教程,引导用户完成从创建任务到执行任务的全过程。主要包括以下几个步骤: 1. **创建任务**:通过 Web 界面创建一个新的抓取任务。 2. **配置参数**:设置任务...

    heritrix爬虫工具的使用

    2. **种子URL**:种子URL是Heritrix开始爬取的起点。你可以添加一个或多个种子URL,Heritrix将从这些URL出发,按照预设的规则抓取相关的网页。 3. **爬取策略**:Heritrix支持多种爬取策略,如深度优先、广度优先等...

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

    启动方式有两种:一是使用CrawlController进行后台加载任务,这需要编程知识;二是更常见的WebUI方式,通过浏览器访问和管理爬虫任务。 Heritrix的主要入口点是org.archive.crawler.Heritrix类。在运行这个类时,...

    Heritrix用户手册

    Heritrix用户手册,Heritrix简介与入门 Heritrix配置与开发指南

    heritrix 3.1

    了解Heritrix 3.1的默认配置以及类之间的关系对于有效使用和定制它至关重要。 在Heritrix 3.1中,核心概念包括种子(Seeds)、作业(Jobs)、模块(Modules)和策略(Policies)。种子是指定爬虫起始抓取的URL集合...

    很好的heritrix学习资料

    标题和描述都表明这是一份关于Heritrix学习的宝贵资料集合,包含了一系列的教程和经验分享。 首先,我们来看"利用Heritrix构建特定站点爬虫.mht"这个文件。这个文件很可能详细介绍了如何定制Heritrix来抓取特定网站...

    heritrix 的详细配置 与 使用资料

    在配置和使用 Heritrix 时,有几个关键步骤和注意事项需要了解。 首先,要开始配置 Heritrix,你需要从官方网站下载源码包(如 heritrix 1.12.1-src.zip)和预编译的二进制包(如 heritrix 1.12.1.zip)。这两个...

    Heritrix1.14.4(含源码包)

    5. **使用教程**:描述中提到的链接是一个CSDN博客文章,提供了Heritrix的安装、配置和使用指南。在这个教程中,你将学习如何设置运行环境,配置Heritrix的配置文件,启动爬虫,以及监控和管理爬虫的运行状态。 6. ...

    heritrix-1.14.2.zip

    Heritrix 1.14.2 是一个开源的网络爬虫工具,它主要用于抓取互联网上的网页和其他在线资源。...尽管现在有更新的版本(如Heritrix 3.x系列)可用,但1.14.2版本仍具有很高的历史价值和学习价值,尤其适合初学者入门。

    heritrix爬虫安装部署

    - 通过命令行方式启动Heritrix服务。 - 确认服务已成功监听8080端口。 2. **访问WebUI**: - 在浏览器中输入`http://127.0.0.1:8080`访问Heritrix的Web用户界面。 - 使用预先设置的用户名和密码登录。 3. **创建...

    Heritrix-1.14.4源代码

    Heritrix的设计遵循模块化和可扩展的原则,它将爬虫的功能分解为多个独立的组件,如种子管理器、下载器、解析器等,这些组件可以通过插件系统进行更换或增强。这种设计使得Heritrix能够灵活地处理各种复杂的网页抓取...

Global site tag (gtag.js) - Google Analytics