Heritrix之旅之Processor

ZYNQ专题-7020驱动KSZ9031 PHY芯片 之所以有这篇文章,得益于Alinx的开发板。 阅读详情
 

原文链接:http://www.cnblogs.com/MichaelYin/archive/2011/10/10/2205699.html

实际的url的处理是在toethread中进行的,toethread从Frontier中请求待处理的url,并将其放到一系列Processor中进行处理

可以以流水线上的处理流程来想象Processor,流水线上的产品就是url,由于处理的processor主要着重于不同的阶段和功能,所以,heritrix将其processor分成了五个大类。

1 Pre-fetch

这里面包含一些需要在像web服务器发出请求之前的一些处理的processor,比如检查url的scope

2 Fetch

这里面的是获取web信息的processor,不同的processor支持不同的协议,比如FetchHTTP支持http,FetchDNS支持dns

3 Extractor

这个里面就是涉及到对抓取的web信息进行内容的提取了,可以对其中的链接进行处理,放到以后进行抓取,也可以根据自己的业务逻辑进行相应的扩展

4 Write/index

将抓取的信息存储到硬盘中

5. Post-processing

将Extractor中找到的url放入到Frontier中待以后进行抓取,进行processor的清理工作

所有的处理类都是继承了Processor,这样就能以一定的抽象统一对所有的processor进行管理,而每个具体的processor只需要根据自己的需要重写相应的处理方法即可

CrawlController在setupCrawlModules中会初始化processorChains,ProcessorChainList这个实例就是整个处理器的一个容器,它下面根据上面所说的分类构成了5个ProcessorChain,需要注意的是初始化的时候顺序是很重要的,因为这个顺序关系到url处理时候的顺序。ProcessorChain中包含了所需要的processor

多线程相关

Processor的实例在CrawlController中会存放在ProcessorChain中,如果有特殊需要为了保证每个线程有属于自己的Processor,只需要实现InstancePerThread这个端口即可

00private Processor getProcessor(Processor processor) {
01if(!(processor instanceof InstancePerThread)) {
02// just use the shared Processor
03return processor;
04}
05// must use local copy of processor
06Processor localProcessor = (Processor) localProcessors.get(
07processor.getClass().getName());
08if (localProcessor == null) {
09localProcessor = processor.spawn(this.getSerialNumber());
10localProcessors.put(processor.getClass().getName(),localProcessor);
11}
12return localProcessor;
13}

这个方法对于需要新建的Processor通过反射重新建立实例并存放在ToeThread的localProcessors中

当时在看一个扩展Processor的时候觉得很奇怪的就是本来下意识的觉得多个线程公用一个东西应该使用同步,所以看到Processor并没有使用同步的关键字觉得很奇怪,后来仔细想了一下觉得这个地方其实是有它的道理的。因为同步是为了什么?为了共享资源访问的时候不出问题,而这里处理url的过程中Processor的处理本来就没什么共享的东西需要进行同步,所以这样设计是没有问题的。这也告诉我们,对于多线程调用的一些方法,同步关键字并不是必须的,同步的本质是对于共享资源访问时的同步

2019年高教社杯全国大学生数学建模竞赛 C 题:《机场的出租车问题》真题解析与 MATLAB 解决方案 🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。 阅读详情

相关推荐

PPO算法详解:基于CartPole-v1的强化学习实现

PPO算法详解:基于CartPole-v1的强化学习实现

m0_54720701的博客 865

Heritrix源码分析(八) Heritrix8个处理器(Processor)介绍

http://guoyunsky.iteye.com/blog/643367       Heritrix采用多线程去抓取数据,每次运行基本都要经过以下8个处理器处理(种子URL、先决条件URL除外),如此形成一整个流程。下面就大概介绍下每个处理器的作用以及大概处理的步骤。以后分析源码的时候再细节分析......         8个处理器都继承org.archive.cr...

liuxinglanyue的专栏 190

gtsam 学习十(ISAM2 理论)

翻译自:iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree 摘要 提出了一种新型的贝斯树处理稀疏矩阵,在转化为因子图,可以更好的求解平方根信息和映射问题。 文中提出了三个概念 使用概率密度项进行矩阵分解 介绍如何将矩阵分解转换为贝叶斯数和条件概率密度 基于贝叶斯树提供了一种新的系数非线性优化:ISAM2(进行重新排序和重新线性化,避免了批量更新) 问题描述 文章聚焦与如何用增量实时解决非线性问题, 利用增量即新的测量值实时更新估

weixin_37781153的博客 8407

深入学习Heritrix---解析处理器(Processor)

 本节解析与处理器有关的内容.与处理器有关的主要在以下几个类:Processor(处理器类),ProcessorChain(处理器类),ProcessorChainList(处理器链列表).它们之间的关系如下:下面将解析该图. (1)Processor代表一个处理器.CodeCode highlighting produced by Actipro Code

走向架构师之路 1737

SAP各模块表清单及逻辑关系介绍

分享韩国同行总结的各模块的表清单及逻辑关系,这对ABAP顾问和各模块业务顾问应该非常有用的 物料主数据 SD与MM PS模块 PP模块 QM模块 CO模块 FI模块

weixin_40672823的博客 9599

ADS笔记,新旧两组仿真数据进行绘图和列表对比

原理图器件参数的不同,怎么进行对比观看,操作如下。

彭辉荣的博客 3869

heritrix的主要功能模块

1、Frontier(链接工厂)是Heritrix最核心的部分,有三个核心的方法:next,schedule,finished,其原型及作用如下: a) 程提供一个链接.Heritrix的所有处理线程(ToeThread)都是通过调用该方法获取链接的 b) schedule(CandidateURI caURI):调度待处理的链接 c) finished(CrawlURI cURI):

kivcare的专栏 1068

用数据分析优化彩票决策:放弃预测,专注理性投入

彩票本质上是负和博弈的概率系统,其核心并非号码预测,而是对玩法规则、返奖率(RTP)、投入策略与心理约束的量化决策。基于组合数学与二项分布的分析方法,可精确计算各奖项概率、评估不同玩法的实际回报效率,并构建个人资金-风险-目标模型。数据的价值不在于打破随机性,而在于识别非随机环节——如奖池跃升期的RTP波动、固定奖的保底收益、冷热号背后的分奖博弈结构。这种以决策优化为导向的数据实践,适用于将彩票视为受控实验的理性参与者,而非追求玄学中奖的投机者。

frank1998819 641

Heritrix的主要模块

1、Frontier(链接工厂)是Heritrix最核心的部分,有三个核心的方法:next,schedule,finished,其原型及作用如下: a) 程提供一个链接.Heritrix的所有处理线程(ToeThread)都是通过调用该方法获取链接的 b) schedule(CandidateURI caURI):调度待处理的链接 c) finished(CrawlURI cURI):

行天下 830

livox雷达斜装修改

指的是,使用外部的陀螺仪的话,雷达到外部陀螺仪的转换,而mid360的陀螺仪是内置在360里面的,且方向和点云方向是一致的,所以不能通过修改此处去改变陀螺仪方向。同时livox_ros_driver2中的MID360_config.json里面的。这里面的外参,只能改变点云相对陀螺仪的位姿,而不能将陀螺仪映射到你期望的倾斜角度。fast_lio中的mid360.yaml中的外参。

z1872385的博客 2711

Labview项目01:标准可配置序列测试框架

摘要:本文介绍了一个基于LabVIEW2020开发的通用测试框架系统。该系统采用模块化设计,包含主界面、调试界面、设置界面和登录界面。主功能包括:1)可配置测试序列,支持延时、预定值输出、随机值输出等操作;2)单步测试功能自主添加;3)界面支持测试序列编辑和权限管理。系统采用队列机制处理事件和测试流程,通过CSV文件存储测试序列,支持参数化配置。用户可自定义测试VI(A_.vi和N_.vi格式),并通过调试界面验证测试序列。最终测试结果在主界面显示,提供整体判断功能。该系统既可作为学习参考,也可用于实际测试

weixin_38637405的博客 1552

heritrix中的一些类的方法

一些类中的重要数据成员及方法1、Processor处理器       Process方法:被定义为final类型的,即不能被覆盖;调用innerProcess方法       InnerProcess方法:定义为protected,由其子类来实现2、ProcessorChain类       ProcessMap:存放当前的Chain中的所有processor       nextChain:指向下一个处理器链       firstProcessor:指向第一个处理器3、ProcessorChainLis

mxdxm8899的专栏 258

低代码部署与管理——OpenClaw智能助手的应用部署与运维(2026技术版)

OpenClaw智能助手的低代码部署与管理平台采用分层架构设计,包含部署工具、环境管理、版本控制等核心模块,支持从开发到生产的全流程自动化部署。该系统通过Docker、Kubernetes等技术实现应用构建和部署,利用Terraform等工具管理多环境配置,并提供完善的监控运维能力。平台针对开发、测试、预生产和生产环境提供差异化配置,确保部署效率和运行可靠性。这种架构设计遵循自动化、可扩展性和安全性原则,显著提升了智能助手应用的部署效率和运维质量。

一键难忘的博客 319

Heritrix的架构

[b]10.2 Heritrix的架构[/b] 在上一节中,详细介绍了Heritrix的使用入门。读者通过上一节的介绍,应该已经能够使用Heritrix来进行简单的网页抓取了。那么,Heritrix的内容究竟是如何工作的呢?它的设计方面有什么突出之处? 本节就将介绍Heritrix的几个主要组件,以此让读者了解其主要架构和工作方式。为后续的扩展Heritrix做一些铺垫。 10.2.1 ...

java12616383的博客 280

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

关于heritrix FrontierScheduler扩展配置

关于heritrix FrontierScheduler扩展配置 两种方式: 1.在扩展FrontierScheduler java工程中src目录下建立modules目录,并在目录下增加Processor.options文件 该文件内容为:com.lv.crawler.LvScheduler|LvScheduler ,其中com.lv.crawler.LvScheduler是继...

LANDOWS的博客 265

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Heritrix重要类的数据成员及方法

 一些类中的重要数据成员及方法1、Processor处理器       Process方法:被定义为final类型的,即不能被覆盖;调用innerProcess方法       InnerProcess方法:定义为protected,由其子类来实现2、ProcessorChain类       ProcessMap:存放当前的Chain中的所有processor    

行天下 770

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

处理链和Processor

处理器链包括以下几种:   1 PreProcessor  2 Fetcher 3Extractor  4 Writer 5PostProcessor 为了很好的表示整个处理器链的逻辑结构,以及它们之间的链式调用关系,Heritrix设计了几个API来表示这种逻辑结构。 org.archive.crawler.framework.Processor  org.archiv

lycos的六度空间 1207

heritrix3抓取的数据直接写入到mysql中

在heritrix3抓取的过程中,我们需要把抓取过来的网页,经过分析,然后写入到数据库中。实现的方法为:继承Processor类重写innerProcess(CrawlURI curi)方法。实例如下: package com.hq.override;   import java.io.IOException;   import org.archive.io.Recordin

white__cat的专栏 3407

heritrix的模块结构

1、Frontier(链接工厂)是Heritrix最核心的部分,有三个核心的方法:next,schedule,finished,其原型及作用如下:a) 提供一个链接.Heritrix的所有处理线程(ToeThread)都是通过调用该方法获取链接的 b) schedule(CandidateURI caURI):调度待处理的链接 c) finished(CrawlURI cURI):完成一个已处理的链接 2 Processor(解析处理器),包含三个重要的类: a) Processor(处理器类):代表一个处

mxdxm8899的专栏 283

Heritrix1.14源码分析(8) Heritrix8个处理器(Processor)介绍

转自:http://blog.youkuaiyun.com/jazywoo123/article/details/8223228 Heritrix采用多线程去抓取数据,每次运行基本都要经过以下8个处理器处理(种子URL、先决条件URL除外),如此形成一整个流程。下面就大概介绍下每个处理器的作用以及大概处理的步骤。以后分析源码的时候再细节分析......         8个处理器都继承

梁江江 579
上一篇: Heritrix之旅之ToeThread
下一篇: android 事件处理机制之requestDisallowInterceptTouchEvent
KnightWoOoO
博客等级 码龄16年 6粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值