Heritrix简介
爬虫概念,spider
像蜘蛛网一样的,从一个提供的种子URL地址开始,抓取当前URL的所有对外链接,往外发散。应该有URL去重复功能(去重复与增量抓取相互矛盾)、抓取层次限制功能。
Heritrix是什么?
一个开源的纯java的网络爬虫框架。遵循网站 robots(某些网站上有一些资源在时间上受下载或访问限制) 协议。
Heritrix优点?
Heritrix采用了Berkeley DB做为中间数据存储,像URL等。很大程度上提升了Heritrix的性能,因为Berkeley DB是一个可嵌入式的非关系型数据库(key-value)。使用BerkeleyDB做持久化队列,如待抓取队列,已抓取队列,重试队列等。
Heritrix 3 是一个基于多(JOB)任务并发运行系统
Heritrix的JOB是基于spring xml配置方式,比较灵活,如各处理链条的
并行队列,提高抓取速度。
Heritrix基本架构
CrawlController整个抓取过程的总控制者,整个抓取工作的起点,决定整个抓取任务的开始和结束。从Frontier获取URI,传递给线程池(ToePool)中的ToeThread处理
Frontier为处理链接的线程提供URL,并负责链接处理完成后的一些后续调度操作。Frontier负责确定下一个将被处理的URI,负责访问的均衡处理,避免对某一web服务器造成太大的压力。当一个URI被爬行完,它随同新发现的URIs被送回Frontier来安排进行后续crawling.
next(int timeout):为处理线程提供一个链接.Heritrix的所有处理线程(ToeThread)都是通过调用该方法获取链接的.
schedule(CandidateURI caURI):调度待处理的链接.
finished(CrawlURI cURI):完成一个已处理的链接.
ToeThreadHertirix为多线程工作方式,每个ToeThread控制一个URI。ToeThread负责向Frontier请求一个新的URI并发派给相应的处理器,然后再去请求下一个URI。
Processors相关的处理器被编制到一个处理器链中。每条处理器链会对一个由ToeThread送来的URI进行一系列的处理。URI在一个链条中的传递过程是由ToeThread负责完成的。一个处理器(Processor)可以把一个处理完毕的URI传递到另外一个链条中。Hertirix提供了几条默认的处理器链:
1. Pre-fetch processing chain 主要根据robot协议,DNS以及下载范围控制信息判断当前URI是否应当处理
2. Fetch processing chain 从服务器抓取数据
3. Extractor processing chain从网页中提取新的URI,或者网页信息作其他用途
4. Write processing chain将数据写到本地磁盘中。以某种格式保存,并建立索引。
5. Post-processing chain 后处理工作,比如把URI放回等
Logs and reports
队列优先级:
URL优先级:
•NORMAL
默认的调度选项,大部分URI都是设置次选项
•MEDIUM
•HIGH
•HIGHEST
队列策略:
•Heritrix中的待抓取队列有多个。每一个URL都给予一个Key,然后将那些Key值相同的链接放在一起,成为一个队列,也就是一个Queue。
•默认情况下是按照host来进行分配的,即相同Host名称的所有URL都会被置放于同一个队列中间
•在Heritrix中,为每个队列赋上Key值的策略,也就是它的queue-assignment-policy。可以扩展QueueAssignmentPolicy来自定义URL的key值算法
增量抓取:
对种子URL设置下次抓取时间
我们对Heritrix做了哪些扩展?
根据Heritrix源代码,做了一定量的配置文件与代码的修改。
配置文件中去掉了 写处理链条,此处理链负责将网页内容抓写到磁盘上。
配置文件中对 抓取处理链条(FetchChain)做了定制化处理,如:
ignoredDownloadUrlPreselector 范围Scope处理;
metadataExtractor 抽取url所在的html信息,使用htmlunitdriver或者是webdriver来抓取url信息。首先判断url的网络状态是否正常,再找到相对应的模板,使用该模板来处理url信息,并将数据封装到model对象中。
fillModelProcessor 补充model对象的属性,如:类型对应的分类ID,真实URL(相对比URL跳转情况)等信息。
mergeOutlinksProcessor 抽取当前URL的对外链接。
posterUrlProcessor 自动处理海报属性。
ignoredDownloadProcessor 过滤掉不处理的对外URL链接
dataToActiveMQProcessor 保存数据到数据库。
dataToSolrProcessor 保存数据到SOLR。
通过SQL方式读取种子URL:
sqlWiesScraperConfigReader:将数据库的JSON数据转换为JAVA对象ScraperConfig。
分布式Heritrix
将原Heritrix抓取到的URL链接通过Hash计算后,借由JMS TOPIC分发到Heritrix集群中的每个Heritrix任务。
模板简介
模板概念
模板是匹配一类网页内容相似度比较高的通用处理方式。借由xpath提取网页信息。
模板与Heritrix接口是我们扩展出来的处理器metadataExtractor。
模板一些配置项,与Heritrix有一定相关联
1、模板配置需要添加一个URL规则,此规则为一个正则表达式字符串。则所有匹配该URL规则的链接会被该模板处理。
2、种子?种子与模板并不是很紧密的关联关系,因为当Heritrix读取一堆模板后,所有模板所配置的种子都被集中处理,并不是只侦对当前模板。当然一般我们添加的种子都是与当前模板相关联的。
3、解析html方式。Htmlunit 或者 webdriver
4、深度限制,默认5层
模板处理数据原理
模板借用MVEL动态解析脚本语言。我们自己也扩展了一些常用函数,如:pubDate(arg),格式化日期函数;xpath(),提取网页内xpath表达式代表的内容。相关函数与变量参考函数手册。
模板使用了一些处理器来组装成一个可执行的流程,风格类似于一种简易的编程。内置处理器有:
1、循环处理器:循环分两种,一种是条件判断循环;一种是对xpath取到的一组信息循环处理。
2、设置变量处理器:设置一个局部变量,对当前处理以及子处理可见
3、提取网页信息处理器:有两种提取处理器,一种是用精确的xpath来提取信息;一种是对一个信息区域通过分隔符来提取某个信息。
4、模拟点击处理器:模板页面鼠标点击事件
5、执行JavaScript脚本处理器:模拟浏览器执行javascript脚本
6、执行脚本处理器:可以直接嵌入式动态插入一些处理数据的脚本语言
模板工程Java代码分析
首先Heritrix启动任务会加载crawler-beans.cxml配置文件。
该配置文件中会加载模板工程中的ScraperManager类,这个单例管理类比较重要,它负责维护一些公共信息,如:读取模板(从数据库读取 JSON 字符串并转化为 ScraperConfig 对象)并持有、读取模型(从包路径读取类上有相应注解信息的POJO对象或从数据库中读取)并持有、创建Context(有URL上下文以及网页分析工具上下文(HtmlunitDriver、WebDriver))等功能。
该配置文件也会加载模板工程中的Webdriver池和HtmlunitDriver池信息。
在Heritrix的MetadataExtrator处理器中,调用ScraperConfig.run(ScraperContext) ,提取该URL网页内容,一个ScraperConfig类相当于咱们配置的一个具体的模板。
在ScraperConfig运行时,根据模板中定义好的处理器做处理。
分享到:
相关推荐
#### 一、Heritrix简介 Heritrix是一款开源的网络爬虫工具,被广泛应用于互联网资源的抓取与归档工作。相较于其他爬虫工具,Heritrix提供了更为精细的控制机制,能够帮助用户更高效地抓取所需的网页数据。 #### 二...
1. **Heritrix简介**:Heritrix是一个可配置、可扩展的爬虫,支持多种策略和规则来决定哪些页面应该被爬取。它使用Java编写,遵循模块化设计,使得开发者能够方便地添加或替换功能。 2. **模块化架构**:Heritrix的...
1. **Heritrix简介**: Heritrix是由Internet Archive开发的,旨在提供一个灵活且可定制的框架,用于抓取互联网上的静态和动态内容。它支持深度爬取,可以处理各种网页类型,包括HTML、XML、图片、视频等。Heritrix...
Heritrix用户手册,Heritrix简介与入门 Heritrix配置与开发指南
#### 一、Heritrix简介 Heritrix是一款开源的网页爬虫工具,由互联网档案馆(Internet Archive)开发维护,主要用于互联网资源的采集与归档。它支持高度定制化的数据抓取策略,并能够处理复杂的网站结构。Heritrix...
#### 一、Heritrix简介 Heritrix是一款非常出色的开源网络爬虫工具,主要用于互联网资源的抓取与归档。它由互联网档案馆(Internet Archive)开发,并且得到了广泛的使用和支持。Heritrix不仅支持高度定制化的抓取策略...
#### 一、Heritrix简介 Heritrix是一款开源的网络爬虫工具,由Internet Archive开发并维护。它主要用于网页归档和大规模网络爬取任务。Heritrix的设计理念是高度可配置性和扩展性,支持多种策略和规则来定制化爬取...
#### 一、Heritrix简介 Heritrix是一款开源的网页爬虫工具,由互联网档案馆(Internet Archive)开发。它主要用于网络资源的采集与归档,支持多种抓取策略和过滤规则,能够高效地收集网页数据。 #### 二、Heritrix的...
1. **Heritrix简介**:Heritrix是开放源码的互联网档案机器,设计用于系统地抓取、保存和索引互联网上的内容。它是一个可配置的爬虫,能够按照预设规则抓取网页,并处理各种网页格式。 2. **爬虫架构**:Heritrix...
【Heritrix简介】 Heritrix是一款开源的网络抓取工具,被广泛用于Web信息抽取,由Internet Archive开发并维护。它是一个高度可配置的爬虫,旨在爬取整个网站或者特定部分,以提取和存档网页内容。Heritrix提供了一种...
### 二、Heritrix简介 Heritrix是一款开源的网页爬虫工具,主要用于互联网内容的归档和长期保存。它可以模拟浏览器的行为,自动地抓取网页内容,并将这些内容保存下来以供后续分析使用。 #### 2.1 Heritrix的特点 ...
#### 一、Heritrix爬虫简介 Heritrix是一款由互联网档案馆(Internet Archive)开发的开源网络爬虫框架,它使用Java语言编写,支持高度定制化的需求。Heritrix的设计初衷是为了满足大规模网页归档的需求,但因其灵活的...
Heritrix是一个强大的开源Web网络爬虫,由Java编写,主要功能是从互联网上抓取数据。这个工具以其高度的可扩展性而闻名,允许开发者通过扩展其组件来定制抓取策略。Heritrix最初来自于www.archive.org,是构建大规模...
#### 一、简介 Heritrix 是互联网档案馆推出的一款开源、可扩展、可伸缩、具备高质量归档能力的网络爬虫工具。它旨在帮助用户高效地从互联网上抓取数据,并将其归档保存。Heritrix 的设计灵活,支持各种复杂的抓取...
**Heritrix简介** Heritrix是一款强大的、可配置的网络抓取工具,它能够按照预定义的规则遍历互联网,抓取网页内容。Heritrix允许用户定义爬取策略,包括URL种子、深度限制、抓取频率等,从而有效地收集网络数据,为...