• Heritrix源码分析(四) 各个类说明(二)


      本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.javaeye.com/blog/632191

          欢迎加入Heritrix群(QQ): 109148319 , 10447185(已满)  , Lucene/Solr群(QQ) :  118972724

     9.org.archive.crawler.fetcher

    序号 说明
    1 FetchDNS 获取DNS数据,如IP
    2 FetchFTP 获取FTP数据
    3 FetchHTTP 获取HTTP数据
    4 HeritrixHttpMethodRetryHandler HTTP重试处理器,重新去连接HTTP
    10.org.archive.crawler.framework
     序号  类  说明
     1  AbstractTracker  统计器,统计抓取情况,父类,具体统计由子类实现
     2  AlertManager  UI界面消息管理器,给用户显示爬虫相关消息,如一些异常情况
     3  Checkpointer  备份器,定时备份Heritrix相关数据,如日志、BDB文件等
     4  CrawlController  控制器,控制整个爬虫的启动、暂停、停止等,Heritrix的核心类
     5  CrawlScope  URL范围管理器,如种子、哪些URL符合抓取哪些URL不符合抓取
     6  Filter  过滤器,决定哪些URL可以抓取哪些不可以,父类,具体由子类实现
     7  Frontier  调度器,对进来的URL进行调度,使其在接来下可以抓取
     8  Processor  处理器,一个URL由不同的处理器(组件)合作完成,这个为处理器父类,不同的组件有不同的实现
     9  ProcessorChain  处理器链,包含相同类型的处理器,如抽取URL的时候有从Html抽取的ExtractorHTML,从JavaScript抽取的ExtractorJs
     10  ProcessorChainList  处理器链集合,包含多个处理器链,每个URL都会有这样一个处理器集合,使得先从该集合中获取处理器链,然后再从处理器链中获取每个处理器,最后让每个处理器都做他们的处理,完成整个抓取
     11  Scoper  范围管理器,验证一个URL是否在用户配置(从order.xml中获取)的范围
     12  StatisticsTracking  跟踪统计器,主要统计抓取情况,如宽带占用、抓取多少URL、抓取速度等,贯穿整个爬虫的运行
     13  ToePool  线程池,用于管理爬虫线程
     14  ToeThread  爬虫线程,代表着一个抓取,Heritrix的核心类,贯穿整个爬虫的运行,接下来会重点分析
     15  WriterPoolProcessor  写处理器管理池,用于管理多个写处理器,可以在分布式中使用
    11.org.archive.crawler.frontier
    序号 说明
    1 AbstractFrontier 调度器基本实现类,Heritrix最复杂的地方之一,接下来会重点分析
    2 BdbFrontier BDB调度器,用BDB数据库去管理所有的URL,如保存哪些待抓取的URL,哪些已经抓取的URL,Heritrix最复杂的地方之一,接下来会重点分析
    3 BdbMultipleWorkQueues 管理着所有的队列,所有的队列数据保存在BDB数据库中.Heritrix最复杂的地方之一,接下来会重点分析
    4 BdbWorkQueue 抓取队列由BDB存储管理,相同classkey的URL为一个队列.classkey由用户配置决定,Heritrix默认是相同host的URL就为一个队列.Heritrix最复杂的地方之一,接下来会重点分析
    5 FrontierJournal 调度器记录管理,记录调度器的每一次运行情况,如插入URL,插入失败URL等
    6 HostnameQueueAssignmentPolicy URL ClassKey获得策略,Heritrix的默认策略,通过域名来获得URL的class key。然后相同的classkey存放相同的队列
    7 IPQueueAssignmentPolicy URL ClassKey获得策略,这个策略是通过IP来获得URL的class key
    8 QueueAssignmentPolicy URL ClassKey获得策略,该类是抽象类,不同的策略由不同的子类实现,如根据域名、IP等,用户可以自己扩展
    9 RecoveryJournal 管理着/logs/recover.gz,该文件记录所有的URL抓取情况,如抓取成功、失败都有不同的对应格式。该文件主要用于下次Heritrix恢复,如Heritrix异常中断重新启动Heritrix的话又会重新抓取,而如果基于该文件启动的话则会避免这个问题,同时对于上次异常中断而来不及抓取的URL都会优先抓取
    10 RecyclingSerialBinding 给每个线程分配的数据输出流管理器,里面用ThreadLocal来管理每个线程的数据输出流,如此可以节省大量重复序列化
    11 WorkQueue 代表着一个队列,抽象类,会有不同的子类实现,如由BDB存储数据的BdbWorkQueue,Heritrix最复杂的地方之一,接下来会重点分析
    12 WorkQueueFrontier 队列调度器,管理着所有的队列,里面用不同的类型管理着不同的队列,如不在活动状态队列:Queue<String> inactiveQueues.可以说是Heritrix中最为复杂最为关键的类,接下来会重重点分析
  • 相关阅读:
    JS常见错误和分析
    angularjs 笔记(1) -- 引导
    各大浏览器hack
    AngularJS 配置和运行phonecat错误
    npm start 作用
    $.prop()和$.attr() 区别用法
    HDU 1251 统计难题 (Tire树)
    Luogu P3370 【模板】字符串哈希
    Luogu P3385 【模板】负环
    LuoguP1563 玩具谜题
  • 原文地址:https://www.cnblogs.com/loveyakamoz/p/2264531.html
Copyright © 2020-2023  润新知