本博客属原创文章,欢迎转载!但转载请务必注明出处:http://guoyunsky.iteye.com/blog/613249 
本博客已迁移到本人独立博客: http://www.yun5u.com/ 
欢迎加入Heritrix群(QQ):109148319,10447185(已满)  , Lucene/Solr群(QQ) :  118972724

之前说过要分享下我的爬虫经验,但一直找不到突破口,现在才感觉写点东西真的很难,所以大家真的要感谢那些无私的前辈们,在网上留下的一篇篇可以指点迷津的文章。 
想了很久,还是先从Heritrix的包开始说起,然后再说类,最后讲下如何加工Heritrix,也就是将其打造成自己想要的爬虫,这里补充下,我用的版本是1.14.3. 
    同时欢迎加入我建的Heritrix爬虫群一起讨论学习: 10447185

序号 包名                                   说明
1   org.apache.commons.httpclient     封装了apache的httpclient用于Fetch网页内容
2 org.apache.commons.httpclient.cookie 封装了apache的httpclient用于Fetch网页内容,这里主要处理Cookie
3 org.apache.commons.pool.impl 封装了apache的httpclient用于Fetch网页内容,还待研究
4 org.archive.crawler Heritrix程序运行的入口包,如Heritrix运行可以直接抓取
5 org.archive.crawler.admin Heritrix的管理包,比如CrawlJob表示一个抓取任务job,CrawlJobHandler管理JOB,以及日志统计等
6 org.archive.crawler.admin.ui 服务于UI管理界面,如Job参数的设置
7 org.archive.crawler.datamodel Heritrix的数据模型包,如在Heritrix中代表一个URL的CandidateURI
8 org.archive.crawler.datamodel.credential 管理Heritrix数据模型中的凭证,如抓取某些网站需要用户名和密码
9 org.archive.crawler.deciderules Heritrix的规则包,如决定哪些URL可以抓取可以调度
10 org.archive.crawler.deciderules.recrawl 还待研究,应该是决定哪些URL需要重新抓取
11 org.archive.crawler.event 事件管理,如Heritrix的暂停、重启、停止等
12 org.archive.crawler.extractor Heritrix的造血器,通过它抽取新的URL再次进行抓取
13 org.archive.crawler.fetcher Heritrix的获取包,如获取HTTP、DNS、FTP数据
14 org.archive.crawler.filter Heritrix的过滤器,如配合Rule过滤一些不要的URL
15 org.archive.crawler.framework Heritrix的框架包,存放一些核心类,一般是父类,如Heritrix控制类CrawlController;调度器类Frontier
16 org.archive.crawler.framework.exceptions Heritrix框架异常包,通常这里的异常抛出会导致Heritrix的停止
17 org.archive.crawler.frontier Heritrix的调度器,决定抓取哪个URL
18 org.archive.crawler.io Heritrix的IO格式包,感觉取名不合理,这里只是定义一些格式,如统计数据的格式,错误日志的格式
19 org.archive.crawler.postprocessor 辅助处理器包,感觉取名也不合理,这里只是对处理URL前后进行一些处理,如URL重定向
20 org.archive.crawler.prefetch Heritrix的预处理器包,如确定一个URL是否已经解析了DNS
21 org.archive.crawler.processor 还没接触到,待研究
22 org.archive.crawler.processor.recrawl 还没接触到,待研究
23 org.archive.crawler.scope Heritrix抓取范围管理,如种子
24 org.archive.crawler.selftest 管理Heritrix的Web工程self.war
25 org.archive.crawler.settings 管理Heritrix配置文件order.xml中的各项配置
26 org.archive.crawler.settings.refinements 管理Heritrix自己对数据格式的标准,如时间格式
27 org.archive.crawler.url 还没怎么接触到,待研究
28 org.archive.crawler.url.canonicalize Heritrix的URL规范化,用于规范每一个URL
29 org.archive.crawler.util Heritrix用于抓取的工具包,如BDB操作工具,IO操作工具
30 org.archive.crawler.writer Heritrix的下载包,用于将抓取的URL内容写入硬盘
31 org.archive.extractor 还没接触到,待研究
32 org.archive.httpclient Heritrix为结合httpclient量身打造的包,让自身更好的获取网页内容
33 org.archive.io Heritrix的IO包,自己封装的一些IO操作类
34 org.archive.io.arc 针对arc格式的IO操作包
35 org.archive.io.warc 针对warc格式的IO操作包
36 org.archive.net Heritrix扩展了java.net的包,主要扩展java.net.URI类
37 org.archive.net.md5 Heritrix对URL MD5加密包,所用不多,待研究
38 org.archive.net.rsync 还没接触到,待研究
39 org.archive.net.s3 还没接触到,待研究
40 org.archive.queue 还没接触到,待研究
41 org.archive.uid Heritrix ID管理,主要针对URI
42 org.archive.util 整个Heritrix的工具类
43 org.archive.util.anvl 还没接触到,待研究
44 org.archive.util.bdbje Heritrix对BDB的封装
45 org.archive.util.fingerprint 还没接触到,待研究
46 org.archive.util.iterator Heritrix自身封装的迭代器
47 org.archive.util.ms 还没接触到,待研究
48 st.ata.util 扩展的其他包,待研究            

Heritrix自己的包有48个之多,还有它导入的第三方包也有30多个,可见其复杂性...

Heritrix源码分析(一) 包介绍(转)的更多相关文章

  1. Heritrix源码分析(十四) 如何让Heritrix不间断的抓取(转)

    欢迎加入Heritrix群(QQ):109148319,10447185 , Lucene/Solr群(QQ) :  118972724 本博客已迁移到本人独立博客: http://www.yun5u ...

  2. Heritrix源码分析(九) Heritrix的二次抓取以及如何让Heritrix抓取你不想抓取的URL

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/644396       本博客已迁移到本人独立博客: http://www.yun5u ...

  3. Heritrix源码分析(十四)

    近段时间在搞定Lucene的一些问题,所以Heritrix源码分析暂时告一段落.今天下午在群里有同学提到了Heritrix异常终止的问题以及让Heritrix不停的抓取(就是抓完一遍后载入种子继续抓取 ...

  4. 精尽Spring Boot源码分析 - Jar 包的启动实现

    该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...

  5. Heritrix源码分析(八) Heritrix8个处理器(Processor)介绍(转)

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/643367       本博客已迁移到本人独立博客: http://www.yun5u ...

  6. Heritrix源码分析(七) Heritrix总体介绍(转)

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642794         本博客已迁移到本人独立博客: http://www.yun ...

  7. Heritrix源码分析(二) 配置文件order.xml介绍(转)

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/613412      本博客已迁移到本人独立博客: http://www.yun5u. ...

  8. Redis网络库源码分析(1)之介绍篇

    一.前言 Redis网络库是一个单线程EPOLL模型的网络库,和Memcached使用的libevent相比,它没有那么庞大,代码一共2000多行,因此比较容易分析.其实网上已经有非常多有关这个网络库 ...

  9. Heritrix源码分析(十五) 各种问题总结(转)

    开博客以及建立Heritrix 群有一段时间了(这里谢谢大家的关注),这篇博客将整理这段时间所遇到的问题.同时由于自己从今年5月份开始就不怎么接触Heritrix,很多东西开始遗忘(不过里面思想没忘) ...

随机推荐

  1. HTTP返回码总结

    HTTP协议状态码表示的意思主要分为五类,大体是:  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  1×× 保留  2×× 表示请求成功地接收  3×× 为完成请求客户需进一步细化请求  ...

  2. photoshopCS4换中文

    有些朋友的安装的时候可能安装界面是全中文的,安装完软件是英文的. 下载这个中文包, http://download.csdn.net/download/tuberose1605/5171091 解压后 ...

  3. [iOS]利用系统NSRegularExpression使用正则表达式

    // Created by 李东旭 on 16/1/22. // Copyright © 2016年 李东旭. All rights reserved. // #import <UIKit/UI ...

  4. Jenkins最佳实践

    原文:http://www.cnblogs.com/itech/archive/2011/11/14/2248460.html Jenkins最佳实践,其实大部分对于其他的CI工具同样的适用: * J ...

  5. ace-min.css

    textarea,input[type="text"],input[type="password"],input[type="datetime&quo ...

  6. C#添加日志

    /// <summary> /// 记录日志 /// </summary> /// <param name="msg"></param&g ...

  7. 在android.app.Application中定义全局变量

    在Android应用中使用全局变量,除了public的静态变量,还有更优雅的方式是使用android.app.Application. 启动Application时,系统会创建一个PID,即进程ID, ...

  8. 深入理解Java内存模型(六)——final

    与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问.对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象 ...

  9. Android实现网络多线程文件下载

    实现原理 (1)首先获得下载文件的长度,然后设置本地文件的长度. (2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置. 如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M ...

  10. Python得到前面12个月的数据,Python得到现在时间 前一年的数据,

    #Python 实现得到现在时间12个月前的每个月 # 假设现在的时间是2016年9月25日 #得到现在的时间 得到now等于2016年9月25日 now = datetime.datetime.no ...