君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

随笔分类 -  Heritrix3.1.0

上一页 1 2

摘要:我们接下来分析与与BdbFrontier对象void finished(CrawlURI cURI)方法相关的方法/** * Note that the previously emitted CrawlURI has completed * its processing (for now). * * The CrawlURI may be scheduled to retry, if appropriate, * and other related URIs may become eligible for release * via the ne... 阅读全文
posted @ 2013-04-23 07:39 刺猬的温驯 阅读(733) 评论(1) 推荐(0) 编辑

摘要:我们接下来分析与与BdbFrontier对象CrawlURI next()方法相关的方法/** * Return the next CrawlURI eligible to be processed (and presumably * visited/fetched) by a a worker thread. * * Relies on the readyClassQueues having been loaded with * any work queues that are eligible to provide a URI. * ... 阅读全文
posted @ 2013-04-23 06:57 刺猬的温驯 阅读(824) 评论(0) 推荐(0) 编辑

摘要:本文分析Heritrix3.1.0系统里面的WorkQueue队列(具体是BdbWorkQueue)的调度机制,这部分是系统里面比较复杂的,我只能是尝试分析(本文可能会修改)我在Heritrix 3.1.0 源码解析(六)一文中涉及BdbFrontier对象的初始化,现在回顾一下我们看到在WorkQueueFrontier类中的初始化方法void start()里面进一步调用了void initInternalQueues()方法而void initInternalQueues()方法 里面进一步调用子类BdbFrontier的void initOtherQueues()方法与void ini 阅读全文
posted @ 2013-04-21 10:02 刺猬的温驯 阅读(797) 评论(0) 推荐(0) 编辑

摘要:我在分析BdbFrontier对象的void schedule(CrawlURI caURI)、CrawlURI next() 、void finished(CrawlURI cURI)方法是,其实还有一些相关环境没有分析,其实我是有点疲倦本文接下来分析在多线程环境中Heritrix3.1.0系统怎样保持相关对象属性的一致性以及怎样自定义配置相关对象的属性值我们在WorkQueueFrontier类的void schedule(CrawlURI curi)方法里面可以看到@Override public void schedule(CrawlURI curi) { shee... 阅读全文
posted @ 2013-04-20 12:47 刺猬的温驯 阅读(887) 评论(3) 推荐(0) 编辑

摘要:接下来分析BdbFrontier类的void finished(CrawlURI curi) 方法,完成CrawlURI对象的扫尾工作在BdbFrontier类的父类的父类AbstractFrontier里面org.archive.crawler.frontier.BdbFrontier org.archive.crawler.frontier.AbstractFrontier/** * Note that the previously emitted CrawlURI has completed * its processing (for now). * ... 阅读全文
posted @ 2013-04-20 07:16 刺猬的温驯 阅读(792) 评论(0) 推荐(0) 编辑

摘要:接下来分析BdbFrontier类的CrawlURI next()方法,该方法是获取下一个待采集的CrawlURI对象该方法是在BdbFrontier类的父类的父类AbstractFrontier里面org.archive.crawler.frontier.BdbFrontier org.archive.crawler.frontier.AbstractFrontier/* (non-Javadoc) * @see org.archive.crawler.framework.Frontier#next() */ public CrawlURI next() thr... 阅读全文
posted @ 2013-04-20 07:02 刺猬的温驯 阅读(1029) 评论(0) 推荐(0) 编辑

摘要:上文分析了Heritrix3.1.0系统是怎么添加CrawlURI curi对象的,那么在系统初始化的时候,是怎么载入CrawlURI curi种子的呢?我们回顾前面的文章,在我们执行采集任务的launch指令的时候,实际会调用CrawlController对象的void requestCrawlStart()方法/** * Operator requested crawl begin */ public void requestCrawlStart() { hasStarted = true; sendCrawlStateChangeEv... 阅读全文
posted @ 2013-04-20 06:38 刺猬的温驯 阅读(795) 评论(0) 推荐(0) 编辑

摘要:本文要分析的是Heritrix3.1.0的Frontier组件,先熟悉一下相关的UML类图通过浏览该图,我们可以清楚的看出Frontier组件的相关接口和类的继承和调用关系,不必我再文字描述了在分析BdbFrontier类的相关方法之前,有必要熟悉一下在系统环境中该对象的初始状态,以及状态的改变这部分内容需要回顾Heritrix 3.1.0 源码解析(六)一文,本人就不在这里重复了BdbFrontier类重要的有几个方法,分别是添加CrawlURI,获取CrawlURI,完成CrawlURIvoid schedule(CrawlURI curi)CrawlURI next()void fini 阅读全文
posted @ 2013-04-19 04:38 刺猬的温驯 阅读(1381) 评论(1) 推荐(0) 编辑

摘要:Heritrix3.1.0系统里面Frontier组件管理链接队列,采用的是BDB数据库,利用BDB数据库来存储CrawlURI对象,首先我们来看Heritrix3.1.0是怎么实现BDB模块的我们知道,创建BDB数据库首先要构建数据库环境,Heritrix3.1.0的BDB模块里面EnhancedEnvironment类实现了对BDB数据库环境的封装(继承自je的Environment),如果你不熟悉BDB数据库,可以先google一下吧EnhancedEnvironment类的源码如下:/** * Version of BDB_JE Environment with additional 阅读全文
posted @ 2013-04-19 04:37 刺猬的温驯 阅读(1663) 评论(0) 推荐(0) 编辑

摘要:本文接着分析存储CrawlURI curi的队列容器,最重要的是BdbWorkQueue类及BdbMultipleWorkQueues类BdbWorkQueue类继承自抽象类WorkQueue,抽象类WorkQueue最重要的方法是long enqueue(final WorkQueueFrontier frontier,CrawlURI curi)CrawlURI peek(final WorkQueueFrontier frontier)void dequeue(final WorkQueueFrontier frontier, CrawlURI expected)分别为添加CrawlUR 阅读全文
posted @ 2013-04-19 04:36 刺猬的温驯 阅读(1414) 评论(0) 推荐(0) 编辑

摘要:本文接下来分析上文涉及到的ObjectIdentityCache接口及相关对象先熟悉一下继承和依赖关系,简要UML类图如下:我们先来了解一下ObjectIdentityCache接口的源码(泛型接口)/** * An object cache for create-once-by-name-and-then-reuse objects. * * Objects are added, but never removed. Subsequent get()s using the * same key will return the exact same object, UNLESS all ... 阅读全文
posted @ 2013-04-19 04:35 刺猬的温驯 阅读(1287) 评论(0) 推荐(0) 编辑

摘要:本文分析BdbFrontier对象的相关状态和方法BdbFrontier类继承自WorkQueueFrontier类 WorkQueueFrontier类继承自AbstractFrontier类BdbFrontier类的void start()方法如下(在其父类WorkQueueFrontier里面):org.archive.crawler.frontier.BdbFrontier org.archive.crawler.frontier.WorkQueueFrontierpublic void start() { if(isRunning()) { ... 阅读全文
posted @ 2013-04-19 04:34 刺猬的温驯 阅读(1338) 评论(0) 推荐(0) 编辑

摘要:我们从上文的CrawlController对象可以看到,爬虫任务是通过ToePool类建立线程ToeThread的线程池的我们在了解采集线程池的相关类之前,先有必要了解一下CrawlController类,因为我们的爬虫操作指令最终是通过调用CrawlController对象的方法的CrawlController类的成员和方法都是直接与采集任务相关的,好比控制中心// ApplicationContextAware implementation, for eventing AbstractApplicationContext appCtx; public void setAppli... 阅读全文
posted @ 2013-04-19 04:33 刺猬的温驯 阅读(1665) 评论(0) 推荐(0) 编辑

摘要:如果孤立的发现某类的方法,不免使我们难以理解它的含义;当我们将对象的相互作用串起来的时候,更容易理解方法的意图在对象之间相互通信时,首先应该了解对象的状态;最基本的入手方式就是 了解它的构造函数或者初始化方法以及执行相关方法后状态的变化,其次是相应方法的输入参数(发送消息)当我们在后台建立一个爬行任务时,在Heritrix3.1.0系统里面对应一个爬行任务类,当前爬行任务的所有属性和行为都封装在这个爬行任务类里面这个类为CrawlJob(org.archive.crawler.framework),我们先来熟悉一下该类的相关成员和方法爬行任务CrawlJob类实现了两接口Comparable& 阅读全文
posted @ 2013-04-19 04:32 刺猬的温驯 阅读(1846) 评论(1) 推荐(0) 编辑

摘要:如果从heritrix3.1.0系统的静态逻辑结构入手,往往看不到系统相关对象的交互作用;如果只从系统的对象动态结构 分析,则又看不到系统的逻辑轮廓所以源码分析需要动静兼顾,使我们更容易理解它的逻辑与交互,本文采用这个分析方法入手本文要分析的是spring给Heritrix3.1.0系统bean带来了什么样的管理方式,spring容器的配置文件我们已从上文有了初步的了解先了解spring容器在系统中是怎样加载配置文件以及怎么初始化的,当我们执行采集任务的build操作时调用CrawlJob对象的void validateConfiguration()/** * Does the ass... 阅读全文
posted @ 2013-04-18 22:06 刺猬的温驯 阅读(2402) 评论(0) 推荐(0) 编辑

摘要:上文Heritrix 3.1.0 源码解析(一)实际上是讲述Heritrix3.1.0在eclipse中的环境搭建,还属于对Heritrix3.1.0 源码解析的热身阶段,本文接着分析Heritrix 3.1.0的任务配置,Heritrix3.1.0版本与原来的Heritrix1.14.4版本很大的不同是 任务配置文件从order.xml文件转到了crawler-beans.cxml文件,而crawler-beans.cxml实际上是一个spring的容器配置文件,是用spring管理的,我们先来眼熟一下该文件的样子(这里面我配置了一个任务): # This Propertie... 阅读全文
posted @ 2013-04-10 22:29 刺猬的温驯 阅读(4241) 评论(0) 推荐(0) 编辑

摘要:Heritrix是一个比较经典的开源爬虫,本人打算用它来做一些数据采集应用网上关于heritrix系列的博文 大多是老版本的(1.14.4版本),Heritrix 3.1.0版本的文章则极其稀少由于新的版本相对老版本改动比较大,所以本人不能循老版本的套路了(Heritrix 3.1.0 版本引入spring容器管理,相对增强了对spring熟悉的开发人员的亲和性)首先介绍新的Heritrix 3.1.0 版本怎么在eclipse下搭建环境,以便于自己调试与开发网上介绍在Eclipse中搭建Heritrix 3.1.0的文章总是讲的很复杂,无疑增加了开发人员对它的敬畏感,不利于Heritrix 阅读全文
posted @ 2013-04-10 07:18 刺猬的温驯 阅读(5046) 评论(8) 推荐(0) 编辑

上一页 1 2