本博客属原创文章,欢迎转载!但转载请务必注明出处: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. BroadcastReceiver应用1

    有两种注册方式:1. 在AndroidManifest中注册.2. 在代码中直接注册,这种注册需要注意的一点是:当注册此Receiver的Activity退出的时候,一定要调用unregisterRe ...

  2. hdu 4389 X mod f(x) 数位DP

    思路: 每次枚举数字和也就是取模的f(x),这样方便计算. 其他就是基本的数位Dp了. 代码如下: #include<iostream> #include<stdio.h> # ...

  3. webmatrix

    http://www.microsoft.com/web/webmatrix/ WebMatrix is a free, lightweight, cloud-connected web develo ...

  4. JavaScript的基础语法,你真的了解吗?

    这篇文章是在我们熟悉了JS的基础语法后,很少有人去关注的一些细节部分.如果掌握了某些细节也许会对代码的改善有着非凡的作用.也许会使我们的代码更严谨,更高效. 1.if语句的条件 if条件中,括号里是布 ...

  5. Android核心分析之二十八Android GDI之Surface&Canvas

    Surface&Canvas Canvas为在画布的意思.Android上层的作图几乎都通过Canvas实例来完成,其实Canvas更多是一种接口的包装.drawPaints ,drawPoi ...

  6. C语言一个简单的闹钟程序

    #include <stdio.h> #include <stdbool.h> #include <Windows.h> ; i < ; ++i) { // ...

  7. (KEIL)MDK5安装与JLINK问题解决方法(支持代码自动补全)

    MDK V5在10月8日发布,昨天终于没忍住装上使用了一下,尝了尝鲜.   安装和破解的方法相信各位高手都不在话下,实在不会的可以参考keil4的安装步骤,keil5 和 keil4的安装没有的区别. ...

  8. sin=in.readLine();

    import java.io.*; public class LineIO{ public static void main(String[] args) { String sin,inputStri ...

  9. iOS xcode设置

    Xcode build search paths c/c++ 头文件引用问题include <> 引用编译器的类库路径下的头文件include “” 引用工程目录的相对路径的头文件 inc ...

  10. MyBatis学习总结_03_优化MyBatis配置文件中的配置

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version=" ...