Heritrix源码分析(一) 包介绍
http://guoyunsky.iteye.com/blog/613249
之前说过要分享下我的爬虫经验,但一直找不到突破口,现在才感觉写点东西真的很难,所以大家真的要感谢那些无私的前辈们,在网上留下的一篇篇可以指点迷津的文章。
想了很久,还是先从Heritrix的包开始说起,然后再说类,最后讲下如何加工Heritrix,也就是将其打造成自己想要的爬虫,这里补充下,我用的版本是1.14.3.
同时欢迎加入我建的Heritrix爬虫群一起讨论学习:10447185
序号包名说明1org.apache.commons.httpclient封装了apache的httpclient用于Fetch网页内容2org.apache.commons.httpclient.cookie封装了apache的httpclient用于Fetch网页内容,这里主要处理Cookie3org.apache.commons.pool.impl封装了apache的httpclient用于Fetch网页内容,还待研究4org.archive.crawlerHeritrix程序运行的入口包,如Heritrix运行可以直接抓取5org.archive.crawler.adminHeritrix的管理包,比如CrawlJob表示一个抓取任务job,CrawlJobHandler管理JOB,以及日志统计等6org.archive.crawler.admin.ui服务于UI管理界面,如Job参数的设置7org.archive.crawler.datamodelHeritrix的数据模型包,如在Heritrix中代表一个URL的CandidateURI8org.archive.crawler.datamodel.credential管理Heritrix数据模型中的凭证,如抓取某些网站需要用户名和密码9org.archive.crawler.deciderulesHeritrix的规则包,如决定哪些URL可以抓取可以调度10org.archive.crawler.deciderules.recrawl还待研究,应该是决定哪些URL需要重新抓取11org.archive.crawler.event事件管理,如Heritrix的暂停、重启、停止等12org.archive.crawler.extractorHeritrix的造血器,通过它抽取新的URL再次进行抓取13org.archive.crawler.fetcherHeritrix的获取包,如获取HTTP、DNS、FTP数据14org.archive.crawler.filterHeritrix的过滤器,如配合Rule过滤一些不要的URL15org.archive.crawler.frameworkHeritrix的框架包,存放一些核心类,一般是父类,如Heritrix控制类CrawlController;调度器类Frontier16org.archive.crawler.framework.exceptionsHeritrix框架异常包,通常这里的异常抛出会导致Heritrix的停止17org.archive.crawler.frontierHeritrix的调度器,决定抓取哪个URL18org.archive.crawler.ioHeritrix的IO格式包,感觉取名不合理,这里只是定义一些格式,如统计数据的格式,错误日志的格式19org.archive.crawler.postprocessor辅助处理器包,感觉取名也不合理,这里只是对处理URL前后进行一些处理,如URL重定向20org.archive.crawler.prefetchHeritrix的预处理器包,如确定一个URL是否已经解析了DNS21org.archive.crawler.processor还没接触到,待研究22org.archive.crawler.processor.recrawl还没接触到,待研究23org.archive.crawler.scopeHeritrix抓取范围管理,如种子24org.archive.crawler.selftest管理Heritrix的Web工程self.war25org.archive.crawler.settings管理Heritrix配置文件order.xml中的各项配置26org.archive.crawler.settings.refinements管理Heritrix自己对数据格式的标准,如时间格式27org.archive.crawler.url还没怎么接触到,待研究28org.archive.crawler.url.canonicalizeHeritrix的URL规范化,用于规范每一个URL29org.archive.crawler.utilHeritrix用于抓取的工具包,如BDB操作工具,IO操作工具30org.archive.crawler.writerHeritrix的下载包,用于将抓取的URL内容写入硬盘31org.archive.extractor还没接触到,待研究32org.archive.httpclientHeritrix为结合httpclient量身打造的包,让自身更好的获取网页内容33org.archive.ioHeritrix的IO包,自己封装的一些IO操作类34org.archive.io.arc针对arc格式的IO操作包35org.archive.io.warc针对warc格式的IO操作包36org.archive.netHeritrix扩展了java.net的包,主要扩展java.net.URI类37org.archive.net.md5Heritrix对URLMD5加密包,所用不多,待研究38org.archive.net.rsync还没接触到,待研究39org.archive.net.s3还没接触到,待研究40org.archive.queue还没接触到,待研究41org.archive.uidHeritrixID管理,主要针对URI42org.archive.util整个Heritrix的工具类43org.archive.util.anvl还没接触到,待研究44org.archive.util.bdbjeHeritrix对BDB的封装45org.archive.util.fingerprint还没接触到,待研究46org.archive.util.iteratorHeritrix自身封装的迭代器47org.archive.util.ms还没接触到,待研究48st.ata.util扩展的其他包,待研究
Heritrix自己的包有48个之多,还有它导入的第三方包也有30多个,可见其复杂性...