掌桥专利:专业的专利平台
掌桥专利
首页

分布式爬虫实现方法和装置

文献发布时间:2023-06-19 10:27:30


分布式爬虫实现方法和装置

技术领域

本发明涉及爬虫应用技术领域,尤其是涉及一种分布式爬虫实现方法和装置。

背景技术

通用网络爬虫是搜索引擎抓取系统的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。通用网络爬虫从互联网中搜集网页、采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。

当前开源的爬虫管理平台主要是实现部署功能,如利用开发语言python语言写的爬虫监控Spider Keeper,爬虫管理平台crawlab等。当爬取任务较大时,分布式部署可以明显的提高爬取速度,他们更多实现的是基于web页面去部署爬虫,点击启动,停止等去管理爬虫。但发明人经研究发现,当某个网站反爬策略变更时,爬虫总是爬取失败,页面上爬虫的状态会更新为退出,并不会及时通知爬虫的维护者,对一些数据实时性要求较高的任务来说,这样显然具有较大的不利影响。

发明内容

本发明的目的在于提供一种分布式爬虫实现方法和装置,通过分布式节点部署,在提高多个爬取任务速度的同时,还对爬取任务的状态进行监控,同时保证数量和质量。

第一方面,本发明实施例提供了一种分布式爬虫实现方法,所述方法包括:

创建爬虫任务,并根据所述爬虫任务中的采集任务和解析任务分别确定对应分布的部署节点,其中,所述爬虫任务包括至少一个;

启动所述爬虫任务,基于预先确定的警告规则和质量检测规则分别对所述采集任务和所述解析任务进行监控;

若监控状态异常,则发出警告,并重新对所述爬虫任务进行分布部署;

若监控状态正常,则持续运行所述爬虫任务,并将爬取数据写入数据库。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述方法还包括:

根据所述数据库统计爬取数量和爬取速度,并进行可视化展示。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,根据所述爬虫任务中的采集任务和解析任务分别确定对应分布的部署节点的步骤,包括:

确定所述爬虫任务的任务类型;

将所述爬虫任务中IO密集型的采集任务分布式部署在采集器的多个节点,将所述爬虫任务中CPU密集型的解析任务分布式部署在解析器的多个节点,其中,每个所述节点共享消息队列中的任务信息。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,基于预先确定的警告规则和质量检测规则分别对所述采集任务和所述解析任务进行监控的步骤,包括:

基于预先确定的警告规则和质量检测规则对所述采集任务的状态进行监控;

或者,

基于预先确定的警告规则和质量检测规则对所述解析任务的状态进行监控;

或者,

基于预先确定的警告规则和质量检测规则对所述采集任务和所述解析任务的状态进行监控。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,基于预先确定的警告规则和质量检测规则对所述采集任务的状态进行监控的步骤,包括:

基于预先确定的警告规则和质量检测规则对所述采集任务中的硬件使用率、返回的目标状态码数量、连接超时状态以及消耗速度进行监控。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,基于预先确定的警告规则和质量检测规则对所述解析任务的状态进行监控的步骤,包括:

基于预先确定的警告规则和质量检测规则对所述解析任务中的CPU使用率、响应状态码提取数据和匹配数据失败次数进行监控。

结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述质量检测规则包括数据取舍规则、数据矫正规则、数据清洗规则和数据去重规则。

第二方面,本发明实施例还提供一种分布式爬虫实现装置,所述装置包括:

确定模块,创建爬虫任务,并根据所述爬虫任务中的采集任务和解析任务分别确定对应分布的部署节点,其中,所述爬虫任务包括至少一个;

监控模块,启动所述爬虫任务,基于预先确定的警告规则和质量检测规则分别对所述采集任务和所述解析任务进行监控;

警告模块,若监控状态异常,则发出警告,并重新对所述爬虫任务进行分布部署;

写入模块,若监控状态正常,则持续运行所述爬虫任务,并将爬取数据写入数据库。

第三方面,实施例提供一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述前述实施方式任一项所述的方法的步骤。

第四方面,实施例提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现前述实施方式任一项所述的方法的步骤。

本发明实施例提供了一种分布式爬虫实现方法和装置,通过爬虫任务类型将采集任务和解析任务分布式部署在不同设备节点上,保证多爬取任务时的运行速度,同时对爬虫任务的状态进行监控,若状态正常,将爬取数据写入数据库,若状态异常进行告警并重新部署爬虫任务,保证爬虫任务的实时可靠性。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种分布式爬虫实现方法流程图;

图2为本发明实施例提供的一种分布式爬虫实现架构示意图;

图3为本发明实施例提供的一种分布式爬虫实现装置的功能模块示意图;

图4为本发明实施例提供的电子设备的硬件架构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

经发明人研究发现,目前开源的工具更多关注部署,较少涉及到爬虫异常的监控,抓取数据展示方面。如果一个网站的反爬策略变更了,爬虫进行检测到并且及时发出警告,这时就可以马上去处理新的反爬,然后恢复爬虫。

另一方面,现有的爬虫平台缺少可视化页面,比如爬虫各节点的爬取速率,无效数据的数量等,如果可以把各节点的爬取速率以折线图方式展示,也能方便我们更直观的掌握爬虫运行情况,分析优化爬虫系统,以及监测爬取的数据质量,分析原因,提高数据质量。

基于此,本发明实施例提供的一种分布式爬虫实现方法和装置,通过分布式节点部署,在提高多个爬取任务速度的同时,还对爬取任务的状态进行监控,同时保证数量和质量。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种分布式爬虫实现方法进行详细介绍。

图1为本发明实施例提供的一种分布式爬虫实现方法流程图。

参照图1,该方法包括以下步骤:

步骤S102,创建爬虫任务,并根据所述爬虫任务中的采集任务和解析任务分别确定对应分布的部署节点,其中,所述爬虫任务包括至少一个;

步骤S104,启动所述爬虫任务,基于预先确定的警告规则和质量检测规则分别对所述采集任务和所述解析任务进行监控;

步骤S106,若监控状态异常,则发出警告,并重新对所述爬虫任务进行分布部署;

步骤S108,若监控状态正常,则持续运行所述爬虫任务,并将爬取数据写入数据库。

在实际应用的优选实施例中,通过爬虫任务类型将采集任务和解析任务分布式部署在不同设备节点上,保证多爬取任务时的运行速度,同时对爬虫任务的状态进行监控,若状态正常,将爬取数据写入数据库,若状态异常进行告警并重新部署爬虫任务,保证爬虫任务的实时可靠性。

在一些实施例中,所述方法还包括:

步骤1.1),根据所述数据库统计爬取数量和爬取速度,并进行可视化展示。

本发明实施例实质上提供了一个集发布、监控、展示于一体的开源平台,包括权限模块,可为每个开发者分配相应的权限,各开发者之间可以相互查看,但不可更改他人的信息;还包括任务模块,可提供创建任务、发布任务、查看节点状态、爬虫日志等功能;还包括监控模块,监测爬虫状态、节点状态、爬取速度、数据质量;还包括警告模块,用于警告创建、警告发送;还包括展示模块,将各种需要展示的信息以折线图、饼图等方式展示。

示例性地,当爬取任务较大时,分布式部署可以明显的提高爬取速度;同时配备一个可视化界面,方便用户使用,点击部署,查看爬取速度,爬取日志等,设置预警阈值,异常时发出警告,方便维护爬虫任务。

当开发者写好爬虫后,可传输到平台进行管理,定时启动,部署到多台机器,并且监控节点状态、爬虫状态,做到心中有数;实时统计爬取情况,当有异常时,可以发出警告给维护者,及时处理错误;下载的文本做好备份,方便在解析环节出错时,可以重新解析,并且定时删除提高磁盘利用率;多节点部署时,通过心跳机制检测各节点是否还在线,传回节点运行状态信息,集中在主节点机器可视化显示。

在一些实施例中,步骤S102中根据所述爬虫任务中的采集任务和解析任务分别确定对应分布的部署节点,包括:

步骤2.1),确定所述爬虫任务的任务类型;

步骤2.2),将所述爬虫任务中IO密集型的采集任务分布式部署在采集器的多个节点,将所述爬虫任务中CPU密集型的解析任务分布式部署在解析器的多个节点,其中,每个所述节点共享消息队列中的任务信息。

如图2所示,本发明实施例主要应用于主节点调度器中,采集器和解析器分别包括多个节点,调度器根据任务情况将任务分布式部署在不同机器设备的多个节点中,并对任务状态进行监控,当监控状态异常则进行告警,若正常则对数据库中记录的数据信息进行统计优化处理。

在一些实施例中,步骤S104中基于预先确定的警告规则和质量检测规则分别对所述采集任务和所述解析任务进行监控,包括:

步骤3.1),基于预先确定的警告规则和质量检测规则对所述采集任务的状态进行监控;

或者,

步骤3.2),基于预先确定的警告规则和质量检测规则对所述解析任务的状态进行监控;

或者,

步骤3.3),基于预先确定的警告规则和质量检测规则对所述采集任务和所述解析任务的状态进行监控。

在一些实施例中,步骤3.1),还可用以下步骤实现,包括:

步骤3.1.1),基于预先确定的警告规则和质量检测规则对所述采集任务中的硬件使用率、返回的目标状态码数量、连接超时状态以及消耗速度进行监控。

这里,本发明实施例可实时掌握各节点的内存、CPU、网络IO等信息并进行监控;当有异常时,可以通过发送邮件或某些社交应用方式提醒相关人员,以便用户可以根据监控情况,合理分配机器资源。

示例性地,当硬盘的使用率>90%时,将该节点的盘符、服务器ip等信息报警给开发人员;在数据采集中,会记录下每次请求的状态码,如果一定时间内返回不少403状态码,说明对方网站升级反爬了;本发明实施例还会捕获异常,如果多次出现连接超时,可能对方网站在升级,暂时不可访问,这些可以通过正则分析日志得出;监控任务的消耗速度,如果明显异常,如只有往常的20%,发出警告。

在一些实施例中,步骤3.2),还可用以下步骤实现,包括:

步骤3.2.1),基于预先确定的警告规则和质量检测规则对所述解析任务中的CPU使用率、响应状态码提取数据和匹配数据失败次数进行监控。

示例性地,本发明实施例当CPU使用率、内存使用率居高不下达到20分钟可能会导致服务器假死,影响效率,达到阈值发送警告;当解析数据时,如果得到的响应状态码明明是200,却没提取出想要的数据,这种一般是网站页面结构改变了,当匹配数据失败达到100次时,可发送警告,将采集的网站名、网站url,匹配数据块位置发送给开发者。

在一些实施例中,所述质量检测规则包括数据取舍规则、数据矫正规则、数据清洗规则和数据去重规则。

其中,数据取舍规则包括,在采集数据时,大多时候会比较关心某个或某些字段,如果数据整体采集正常、解析正常,但是因某条数据中缺少了这些关键字段值,也应该舍弃,因为这条数据是无效的。

数据矫正规则包括,主要为了统一某些数据格式,如时间,统一存成2020年12月03日,对格式不一致的正则矫正。

数据清洗规则包括,采集下来的数据可能会有一些乱码、特殊符号、JS、CSS样式等,上述这些数据格式本发明实施例在解析器里属于没处理好的,再入库前统一清理下,去除杂质。也可根据具体需求删除特定的关键词。

数据去重规则包括,根据一定规则给数据去重,节约硬盘空间。

在以往的爬虫开发中,一般只关注爬虫是否正常,缺少定量化的分析,本发明实施例清晰获知爬虫运行过程,对于优化爬虫有很大帮助,比如何时爬取速度快,何时慢,以及会出现这样的情况的原因等等;以往对数据的质量也是定性的了解,而本发明实施例增加统计质量后,可以定量化地掌握质量情况,对提高数据质量有利。同时采用web接口方式实现,比较方便扩展,根据需求开发多种功能。通过这样的平台可以帮助爬虫开发者更好地管理爬虫任务,优化爬虫开发,做出数据质量分析,提高爬虫采集数据的质量。

总上,本发明实施例具有监控功能,减少维护工作量;具有数据质量监测功能,对于提高爬虫采集数据质量有积极作用;能够掌握更多定量化的信息,有助于我们优化爬虫。

如图3所示,本发明实施例提供一种分布式爬虫实现装置,所述装置包括:

确定模块,创建爬虫任务,并根据所述爬虫任务中的采集任务和解析任务分别确定对应分布的部署节点,其中,所述爬虫任务包括至少一个;

监控模块,启动所述爬虫任务,基于预先确定的警告规则和质量检测规则分别对所述采集任务和所述解析任务进行监控;

警告模块,若监控状态异常,则发出警告,并重新对所述爬虫任务进行分布部署;

写入模块,若监控状态正常,则持续运行所述爬虫任务,并将爬取数据写入数据库。

本发明实施例提供的用于实现一种电子设备,本实施例中,所述电子设备可以是,但不限于,个人电脑(Personal Computer,PC)、笔记本电脑、监控设备、服务器等具备分析及处理能力的计算机设备。

作为一种示范性实施例,可参见图4,电子设备110,包括通信接口111、处理器112、存储器113以及总线114,处理器112、通信接口111和存储器113通过总线114连接;上述存储器113用于存储支持处理器112执行上述图像锐化方法的计算机程序,上述处理器112被配置为用于执行该存储器113中存储的程序。

本文中提到的机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

非易失性介质可以是非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的非易失性存储介质,或者它们的组合。

可以理解的是,本实施例中的各功能模块的具体操作方法可参照上述方法实施例中相应步骤的详细描述,在此不再重复赘述。

本发明实施例所提供计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序代码被执行时可实现上述任一实施例所述的……方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。

相关技术
  • 分布式爬虫实现方法和装置
  • 一种分布式爬虫系统及其实现方法
技术分类

06120112553711