`
guoyunsky
  • 浏览: 855219 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:206442
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

Heritrix3.0教程(三) 开始抓取

 
阅读更多

      本人新浪微博:http://weibo.com/guoyunwb

      本博客属原创文章,转载请注明出处:http://guoyunsky.iteye.com/blog/1744456

       上一篇博客介绍了,Heritrix3.0的下载,安装以及启动,可以通过UI去配置,和控制抓取任务.这一篇博将讲述,如何在Heritrix上创建抓取任务(CrawlJob)并运行.

       首先创建抓取,本可以通过WEB界面来创建,但有时会出现一些莫名奇妙的问题,我这里通过手工创建的方式.上一篇我的Heritrix所在目录为D:\heritrix\heritrix-3.0.0,所有的抓取任务默在jobs目录下.这里我们手动在jobs目录下创建一个目录,我这里取名为test_job.然后进入D:\heritrix\heritrix-3.0.0\jobs目录下有个profile-defaults目录,再进入,里面有个profile-crawler-beans.cxml文件.将该文件拷贝到刚才创建的test_job下.并将其改名为crawler-beans.cxml.不改名的话,Heritrix会默认你的job为模板job.不会进行相关抓取.

这里简单介绍下crawler-beans.cxml.该文件相比Heritrix早期版本改进很多,首先使用Spring管理该文件.同时用该文件代替了Heritrix早期版本多个配置文件,如order.xml和seeds.txt.也算Heritrix3.0的一个新特性,我接下来会介绍Heritrix的所有新特性.我们只要在该文件中修改相关bean就可以很好的控制一个爬虫的抓取.特别是垂直爬虫,可以说可以很方便进行配置.至于详细介绍crawler-bean.cxml中各个bean以及它的属性,请看我下一篇博客.也只有了解了各个bean的左右,才可以很好的控制爬虫.

运行一个简单的抓取,先要修改以下地方.

1.创建Job

 

<bean id="simpleOverrides">
       <property name="properties">
       <value>
metadata.operatorContactUrl=ENTER_AN_URL_WITH_YOUR_CONTACT_INFO_HERE_FOR_WEBMASTERS_AFFECTED_BY_YOUR_CRAWL
metadata.jobName=basic
metadata.description=Basic crawl starting with useful defaults            </value>
     </property>
</bean>

 

1)metadata.operatorContactUrl   你控制Heritrix的URL,一般是http://127.0.0.1

2)metadata.jobName 表示你的抓取名字,我们刚才创建的是test_job,那就修改为test_job

3)metadata.description 表示对这个抓取任务的简单描述,我们这里就描述为 firt crawl job

2.设置种子

 

<bean id="longerOverrides">
     <property name="properties">
         <props>
                <prop key="seeds.textSource.value">
                       # URLS HERE
                       http://example.example/example
               </prop>
       </props>
   </property>
</bean>

 

以上的http://example.example/example就表示是种子了,这里设置你想抓取的种子.比如我这里设置http://guoyunsky.blogcn.com

3)完善job信息和本机信息

<bean id="metadata" autowire="byName">
     <property name="operatorContactUrl" value="[see override above]"/>
      <property name="jobName" value="[see override above]"/>
      <property name="description" value="[see override above]"/>
      <!-- <property name="operator" value=""/> -->
      <!-- <property name="operatorFrom" value=""/> -->
      <!-- <property name="organization" value=""/> -->
      <!-- <property name="audience" value=""/> -->
      <property name="userAgentTemplate"
value="Mozilla/5.0 (compatible; heritrix/@VERSION@ +@OPERATOR_CONTACT_URL@)"/>
</bean>

 

这个Bean按道理可以通过刚才设置的simpleOverrides来获取,但貌似不完善,我们还是自己再设置下吧.

1) operatorContactUrl 控制爬虫的URL,一般是http://127.0.0.1

2)jobName  抓取任务名字,这里是test_job

3) description 描述,这里是first crawl job

4)以上几个属性除了userAgentTemplate有必要设置的话,都可以不设置.userAgentTemplate这里设置是为了伪造浏览器去抓取数据,

如果没有设置该值,则很容易被防爬虫的网站K掉,这里设置@VERSION为3.0,+@OPERATOR_CONTACT_URL为操作爬虫联系方式,

我这里填我的emal:guoyunsky@hotmail.com

以上三个bean设置完毕的话,就可以运行抓取了.不过是全网抓取.

这里回到操作界面,默认的是https://localhost:8443/,正常的话会在Job Directories下显示刚才创建的test_job,如果没有的话点下rescan按钮,重新扫描一下.显示除了test_job后我们点击它,这时就会进入该job的控制台了.界面如下:

操作界面,各个组件一下博客我会讲解,这里点击launch按钮,意思是载入这个抓取任务.载入的话会获取这个job的所有配置和以前抓取的各种文件,如日志.默认的话,载入这个抓取任务后,会进入暂停状态.根据界面上Job is Active: PAUSED来判断,如果是PAUSED的话这里再点击unpause按钮,如此爬虫就开始进入抓取了,这时Job is Active:会变成RUNNING,表示抓取正在进行了.

正常抓取的话,会在test_job目录下出现一个warcs目录,这个目录里面放的就是抓取的数据.看到这个目录的就表示你抓取成功了.如下图所示:

 

更多技术文章、感悟、分享、勾搭,请用微信扫描:

分享到:
评论
4 楼 koubi1986 2014-03-12  
你好。请问一下。

我这里,点击完“build”后,再点击“launch”就出现异常了。

Exception in thread "dianping launchthread" java.lang.UnsatisfiedLinkError: Error looking up function 'CreateSymbolicLinkA': ÕҲ»µ½ָ¶¨µ
at com.sun.jna.Function.<init>(Function.java:134)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:345)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:325)
at com.sun.jna.Library$Handler.invoke(Library.java:203)
at $Proxy6.CreateSymbolicLinkA(Unknown Source)
at org.archive.util.FilesystemLinkMaker.makeSymbolicLink(FilesystemLinkMaker.java:94)
at org.archive.spring.PathSharingContext.initLaunchDir(PathSharingContext.java:164)
at org.archive.spring.PathSharingContext.start(PathSharingContext.java:114)
at org.archive.crawler.framework.CrawlJob.startContext(CrawlJob.java:455)
at org.archive.crawler.framework.CrawlJob$1.run(CrawlJob.java:429)


请问,你知道如何解决吗。
3 楼 古叶斋 2014-01-16  
zhrb 写道
抓取到这个warc文件有什么用呢?
以前的heritrix可以按照目录的形式来存放所有文件,不仅有页面文件还有doc、jpg等
这个warc貌似只存放了页面文件而已吧。


ArchiveReader ar = WARCReaderFactory.get("/path/to/your/file.warc.gz"); 
// ArchiveReader对象本身实现了Iterator<ArchiveRecord>接口,可以用for循环。 
for (ArchiveRecord rec : ar) { 
// 获取WARC记录头。 
   ArchiveRecordHeader header = rec.getHeader(); 
   // 可以对header做一些操作。 
   // 读出这条记录的内容。ArchiveRecord继承了InputStream类。 
   // 我使用了Commons-IO。不过这样读太暴力了…… 
   byte[] content = IOUtils.toByteArray(rec); 
   // 对内容做什么都行。 

ar.close();

2 楼 zqcj6291151 2013-12-13  
launch的时候包异常 求大神解答
An error occured
Cause: java.lang.IllegalStateException: BdbModule not started

java.lang.IllegalStateException: BdbModule not started
at org.archive.bdb.BdbModule.openDatabase(BdbModule.java:328)
at org.archive.bdb.BdbModule.getStoredMap(BdbModule.java:652)
at org.archive.crawler.reporting.StatisticsTracker.calcSeedRecordsSortedByStatusCode(StatisticsTracker.java:829)
at org.archive.crawler.reporting.SeedsReport.write(SeedsReport.java:44)
at org.archive.crawler.reporting.StatisticsTracker.writeReportFile(StatisticsTracker.java:909)
at org.archive.crawler.reporting.StatisticsTracker.writeReportFile(StatisticsTracker.java:888)
at org.archive.crawler.restlet.ReportGenResource.represent(ReportGenResource.java:50)
at org.restlet.resource.Resource.getRepresentation(Resource.java:302)
at org.restlet.resource.Resource.handleGet(Resource.java:464)
1 楼 zhrb 2013-07-11  
抓取到这个warc文件有什么用呢?
以前的heritrix可以按照目录的形式来存放所有文件,不仅有页面文件还有doc、jpg等
这个warc貌似只存放了页面文件而已吧。

相关推荐

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

    种子URL是爬取的起始点,决定了爬虫将从哪些页面开始抓取。 4. **scope**:`DecideRuleSequence`定义了URL的选择规则,决定了哪些URL会被抓取,哪些被拒绝,以及URL的抓取深度。这允许用户自定义复杂的规则来控制...

    Heritrix3手册翻译

    Heritrix 3 是一款强大的网络爬虫工具,主要用于网页抓取和互联网存档。它在2009年12月发布了3.0.0版本,并随着时间的推移不断更新,提供了3.0.1补丁版和3.2.0版,增加了新的特性和功能,比如更简单的使用方式、持续...

    heritrix3.1 官方指导手册

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

    heritrix抓取的操作和扩展

    在实际应用中,Heritrix通常用于大规模的网页抓取项目,例如学术研究、数据挖掘、网站备份或监控。通过调整配置和扩展,Heritrix可以适应各种复杂的抓取场景,提供稳定且灵活的服务。然而,由于其丰富的配置选项和...

    网络爬虫Heritrix1.14.4可直接用

    Heritrix是一款强大的开源网络爬虫工具,由互联网档案馆(Internet Archive)开发,主要用于抓取和保存网页内容。Heritrix 1.14.4是该软件的一个较早版本,但依然具有广泛的适用性,尤其对于学习和研究网络爬虫技术...

    Heritrix安装详细过程

    本节将详细介绍如何在Eclipse环境中搭建Heritrix,并进行必要的配置,以便能够顺利地启动Heritrix并执行抓取任务。 ##### 2.1 在Eclipse中搭建MyHeritrix工程 1. **新建Java工程** 在Eclipse中新建一个名为`...

    heritrix抓取指南

    完成以上步骤后,Heritrix即可开始对淘宝商城空调商品的抓取工作。记得监控抓取进度和状态,根据需要调整参数,确保抓取效果最佳。同时,遵循网站的robots.txt规则,尊重网站的抓取政策,以保持合法和可持续的数据...

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

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

    Heritrix1.14.4(含源码包)

    种子是爬虫开始抓取的网页列表,调度策略决定如何以及何时访问这些页面,下载器负责获取页面,解析器解析HTML并提取链接,最后存储抓取到的数据。 3. **配置文件**:Heritrix的配置文件是XML格式的,用于定义爬虫的...

    很好的heritrix学习资料

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

    Heritrix 3.x 用户手册

    1. **安装与配置**:根据系统需求进行安装,并根据Heritrix 3.0和3.1的用户指南进行配置。 2. **启动与运行**:启动Heritrix服务,然后通过Web界面创建和管理爬虫作业。 3. **作业分析**:通过日志和报告分析爬取...

    heritrix-3.1.0 最新jar包

    Heritrix 3.1.0 是一个强大的网络爬虫工具,主要用于抓取和存档互联网上的网页。这个最新版本的jar包包含了Heritrix的核心功能,为用户提供了一个高效的网页抓取框架。Heritrix的设计理念是模块化和可配置性,使得它...

    heritrix系统使用.ppt

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

    heritrix-1.14.2.zip

    Heritrix 1.14.2 是一个开源的网络爬虫工具,它主要用于抓取互联网上的网页和其他在线资源。这个版本的Heritrix在2007年左右发布,虽然较旧,但它仍然是理解网络爬虫技术的一个重要参考。 Heritrix是一个由Internet...

    Heritrix爬虫框架 完整版

    通过`heritrix-1.14.4`这个压缩包,你可以获取到Heritrix的特定版本,包括必要的库文件、配置示例以及可能的文档,从而开始你的网络爬虫之旅。 为了充分利用Heritrix,你需要具备一定的Java编程基础,理解网络爬虫...

    Heritrix在Windows下的运行

    记得保存并启动作业后,Heritrix会开始抓取网页。 6. **监控和控制**: 在Web控制台,你可以实时查看爬虫的状态,包括已抓取的URL数量、速度、错误信息等。还可以暂停、恢复或终止作业。在抓取过程中,数据会存储...

    Heritrix(windows版)

    通常,它会包含启动脚本、配置文件以及必要的库和依赖,使你能够迅速开始网页抓取工作。Heritrix的配置文件允许你定制爬虫的行为,比如设置爬取深度、定义过滤规则以及指定目标URL。 2. **heritrix-3.1.0-src.zip**...

    Heritrix用户手册

    Heritrix用户手册是针对Heritrix 3.0和3.1版本的详细操作指南。Heritrix是一个由互联网档案馆开发的开源、可扩展、可伸缩且具有档案级质量的网络爬虫。本手册旨在帮助用户了解如何安装、配置以及运行Heritrix来抓取...

    heritrix1.14.0jar包

    3. **lib**:存放jar包,这是Heritrix运行的基础,包括了Heritrix自身的类库和其他依赖的第三方库,如Apache Commons、log4j等。 4. **src**:源代码目录,虽然用户可能不会直接修改,但有助于理解Heritrix的内部...

Global site tag (gtag.js) - Google Analytics