本博客属原创文章,转载请注明出处:http://www.yun5u.com/articles/heritrix3-4.html
可以说crawler-beans.cxml可以主导整个Heritrix的抓取.不同于Heritrix1.x版本的order.xml 是,crawler-beans.cxml采用Spring来管理.里面的配置都是一个个bean.所以无论从配置上,耦合上,动态控制 上,Heritrix3.0都改进不少.下面就介绍crawler-beans.cxml中各个bean.
1. bean id=simpleOverrides
class=org.springframework.beans.factory.config.PropertyOverrideConfigurer
字面上的意思为简单的覆盖,的确这里只是简单的覆盖.设置最基本的信息.如抓取任务名字(metadata.jobName),操作URL(metadata.operatorContactUrl),描述信息(metadata.description)
2. bean id=metadata
class=org.archive.modules.CrawlMetadata
如同simpleOverrides
3. bean id=seeds
class=org.archive.modules.seeds.TextSeedModule
种子配置,可以从文件中读取种子,也可以直接设置种子
4. bean id=scope
class=org.archive.modules.deciderules.DecideRuleSequence
URL规则控制,可以决定哪些URL要抓取,哪些URL拒绝,URL抓取深度等
5. bean id=candidateScoper
class=org.archive.crawler.prefetch.CandidateScoper
URL范围控制,通过该范围的URL Heritrix方可接受,成为CrawlURI
6. bean id=preparer
class=org.archive.crawler.prefetch.FrontierPreparer
url预处理,如设置URL的抓取深度,队列,成本控制等
7. bean id=candidateProcessors
class=org.archive.modules.CandidateChain
处理器,引用candidateScoper去控制URL是否可以成为CrawlURI,preparer去设置深度,队列,成本控制等
8. bean id=preselector
class=org.archive.crawler.prefetch.Preselector
预先选择器,这里会过滤掉一部分URL.如blockByRegex为拒绝正则,allowByRegex为允许正则
9. bean id=preconditions
class=org.archive.crawler.prefetch.PreconditionEnforcer
先决条件设置,如设置IP有效期,爬虫协议文件robots.txt有效期
10. bean id=fetchDns
class=org.archive.modules.fetcher.FetchDNS
解析DNS,获得IP
11. bean id=fetchHttp
class=org.archive.modules.fetcher.FetchHTTP
核心模块,获取URL内容,设置状态
12. bean id=extractorHttp
class=org.archive.modules.extractor.ExtractorHTTP
核心模块,抽取URL,抽取出新的URL再次运行,如此爬虫才可以一直爬下去
13. bean id=extractorHtml
class=org.archive.modules.extractor.ExtractorHTML
抽取HTML,包含JSP,ASP等,这里也会抽取JS,CSS等
14. bean id=extractorCss
class=org.archive.modules.extractor.ExtractorCSS
抽取CSS,无需单独配置,ExtractorHTML会调用
15. bean id=extractorJs
class=org.archive.modules.extractor.ExtractorJS
抽取JS,无需单独配置,ExtractorHTML会调用