Heritrix源码分析(一) 包介绍(转)

时间:2020-12-22 22:49:00

本博客属原创文章,欢迎转载!但转载请务必注明出处: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多个,可见其复杂性...