首页> 中国专利> 一种多进程多线程分布式爬虫方法、系统及装置

一种多进程多线程分布式爬虫方法、系统及装置

摘要

本申请涉及一种多进程多线程分布式爬虫方法、系统及装置,属于大数据技术的领域,爬虫方法包括资源配置步骤、虚拟服务器获取步骤、虚拟服务器状态判断步骤、采集数据异常判断步骤、虚拟服务器切换步骤、数据清洗和存储步骤以及报警步骤;爬虫系统包括资源配置模块、虚拟服务器获取模块、虚拟服务器状态判断模块、采集数据异常判断模块、虚拟服务器切换模块、数据清洗和存储模块以及报警模块。与相关技术相比,本申请具有改善数据采集效率较低的问题的效果。

著录项

  • 公开/公告号CN112486741A

    专利类型发明专利

  • 公开/公告日2021-03-12

    原文格式PDF

  • 申请/专利权人 深圳前瞻资讯股份有限公司;

    申请/专利号CN202011460209.8

  • 发明设计人 彭明亮;

    申请日2020-12-11

  • 分类号G06F11/20(20060101);G06F9/50(20060101);G06F16/951(20190101);G06F16/955(20190101);

  • 代理机构

  • 代理人

  • 地址 518000 广东省深圳市福田区红荔西路新洲路交界处第壹世界广场塔楼19层-A

  • 入库时间 2023-06-19 10:11:51

说明书

技术领域

本申请涉及大数据技术的领域,尤其是涉及一种多进程多线程分布式爬虫方法、系统及装置。

背景技术

人工智能(AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器,该领域的研究包括机器人、语音识别、图像识别、自然语言处理和专家系统等。

鉴于我国人工智能市场规模越来越庞大,为实现更加智能化的研究,需大量采集相关数据,便于进行后续数据分析及训练。

针对上述中的相关技术,发明人认为在用爬虫进行数据采集时,有些网站为了防止爬虫抓取信息,做了IP限制。例如限定单个IP在每分钟内只能访问100次,那么一台爬虫服务器/爬虫系统在每分钟内只能发起100次网络请求,当发起第101个请求时则会被目标服务器拒绝,使得爬虫服务器/爬虫系统不能快速采集目标任务所需要的数据,导致数据采集效率较低。

发明内容

为了改善数据采集效率较低的问题,本申请提供一种多进程多线程分布式爬虫方法、系统及装置。

第一方面,本申请提供一种多进程多线程分布式爬虫方法,采用如下的技术方案:

一种多进程多线程分布式爬虫方法,爬虫方法包括如下步骤,

资源配置步骤,根据配置的爬虫任务开启多线程,并装配好请求的统一资源定位系统URL;

虚拟服务器获取步骤,基于负载均衡算法,获取一台虚拟服务器,所述虚拟服务器用于拨号并采集返回爬虫任务对应的任务数据,所述任务数据包括第一目标数据和HTTP状态码;

虚拟服务器状态判断步骤,判断所述虚拟服务器是否可用,若是,则调用所述虚拟服务器采集返回任务数据,否则返回虚拟服务器获取步骤;

采集数据异常判断步骤,根据所述虚拟服务器采集返回的任务数据,判断所述虚拟服务器采集数据是否异常,若是,则获取所述虚拟服务器采集数据的异常次数,否则,任务数据为第二目标数据;

虚拟服务器切换步骤,根据所述异常次数,判断所述虚拟服务器爬虫是否轻度异常,若是,则基于负载均衡算法,获取一台新的虚拟服务器,以采集所述爬虫任务对应的任务数据,否则,爬虫重度异常;以及,

数据清洗和存储步骤,对第二目标数据进行数据清洗,得到第三目标数据,并将第三目标数据进行存储。

通过采用上述技术方案,根据任务数据中的HTTP状态码的类型,能够判断虚拟服务器采集数据的过程中是否因IP限制等原因而出现爬虫异常,若爬虫轻度异常,则虚拟服务器切换步骤切换新的虚拟服务器去采集并返回爬虫任务对应的任务数据,反复循环,直到采集到爬虫任务对应的任务数据,从而在一定程度上能够突破爬虫任务目标网站的IP限制,快速且高效地获取任务数据,进而有助于改善数据采集效率较低的问题;且使用多进程多线程以更多地利用CPU的资源,快速采集大量数据,从而有助于提高爬虫采集数据的性能。

可选的,所述虚拟服务器切换步骤的具体方法包括,

根据所述异常次数,基于频次阈值,判断所述虚拟服务器爬虫是否轻度异常,若是,则基于负载均衡算法,获取一台新的虚拟服务器,以采集所述爬虫任务对应的任务数据,否则,爬虫重度异常。

通过采用上述技术方案,以频次阈值为判断标准,结合异常次数,能够快速判断虚拟服务器爬虫是否轻度异常,若爬虫轻度异常,则快速切换新的虚拟服务器采集爬虫任务对应的任务数据,从而在一定程度上能够突破爬虫任务目标网站的IP限制。

可选的,所述判断虚拟服务器访问是否异常的具体方法包括,

判断所述异常次数是否大于频次阈值,若是,则爬虫重度异常,否则,爬虫轻度异常。

可选的,所述爬虫方法还包括,

报警步骤,若爬虫重度异常,则将异常的爬虫任务挂起,并发送报警信息。

通过采用上述技术方案,使得维修人员能够根据报警信息及时进行维护,以使爬虫尽早恢复,尽可能早地获取爬虫任务对应的任务数据,从而在一定程度上有助于提高采集数据的效率;且异常的爬虫任务挂起,能够在一定程度上防止异常的爬虫任务丢失。

可选的,所述虚拟服务器状态判断步骤的具体方法包括,

获取所述虚拟服务器的状态信息,根据所述状态信息判断虚拟服务器是否可用;

若是,则调用所述虚拟服务器采集返回任务数据;以及,

否则,等待相应时间后返回虚拟服务器获取步骤;

其中,所述状态信息包括可用状态和不可用状态。

通过采用上述技术方案,根据获取的虚拟服务器的状态信息,能够快速得到虚拟服务器可用还是不可用,若可用,则采集任务数据,否则,等待相应时间后返回虚拟服务器获取步骤获取新的虚拟服务器,直至新的虚拟服务器能够采集返回任务数据,从而有助于改善采集数据效率较低的问题。

可选的,所述报警信息包括但不限于电子邮件和/或短信。

通过采用上述技术方案,以电子邮件和/或短信作为报警信息,进一步使维修人员能够及时获知爬虫异常信息,从而有助于进一步改善数据采集效率较低的问题。

第二方面,本申请提供一种多进程多线程分布式爬虫系统,采用如下的技术方案:

一种多进程多线程分布式爬虫系统,所述爬虫系统包括,

资源配置模块,用于根据配置的爬虫任务开启多线程,并装配好请求的统一资源定位系统URL;

虚拟服务器获取模块,用于基于负载均衡算法,获取一台虚拟服务器,所述虚拟服务器用于拨号并采集返回爬虫任务对应的任务数据,所述任务数据包括第一目标数据和HTTP状态码;

虚拟服务器状态判断模块,用于判断所述虚拟服务器是否可用,若是,则调用所述虚拟服务器采集返回任务数据,否则进入虚拟服务器获取步模块;

采集数据异常判断模块,用于根据所述虚拟服务器采集返回的任务数据,判断所述虚拟服务器采集数据是否异常,若是,则获取所述虚拟服务器采集数据的异常次数,否则,任务数据为第二目标数据;

虚拟服务器切换模块,用于根据所述异常次数,判断所述虚拟服务器爬虫是否轻度异常,若是,则基于负载均衡算法,获取一台新的虚拟服务器,以采集所述爬虫任务对应的任务数据,否则,爬虫重度异常;以及,

数据清洗和存储模块,用于对第二目标数据进行数据清洗,得到第三目标数据,并将第三目标数据进行存储。

通过采用上述技术方案,虚拟服务器状态判断模块和采集数据异常判断模块根据虚拟服务器采集并返回的任务数据中的HTTP状态码的类型,能够判断虚拟服务器采集数据的过程中是否因IP限制等原因而爬虫异常,若爬虫轻度异常,则虚拟服务器切换模块切换新的虚拟服务器去采集并返回爬虫任务对应的任务数据,反复循环,直到采集到爬虫任务对应的任务数据,从而在一定程度上能够突破爬虫任务目标网站的IP限制,快速且高效地获取任务数据,进而大大改善数据采集效率较低的问题;且使用多进程多线程以更多地利用CPU的资源,快速采集大量数据,从而极大提高爬虫采集数据的性能。

可选的,所述爬虫系统还包括,

报警模块,用于若爬虫重度异常,则将异常的爬虫任务挂起,并发送报警信息。

通过采用上述技术方案,使得维修人员能够根据报警信息及时进行维护,以使爬虫尽早恢复,尽可能早地获取爬虫任务对应的任务数据,从而在一定程度上能够提高采集数据的效率;且异常的爬虫任务挂起,能够在一定程度上防止异常的爬虫任务丢失。

第三方面,本申请提供一种多进程多线程分布式爬虫装置,采用如下的技术方案:

一种多进程多线程分布式爬虫装置,所述爬虫装置包括,

VPS拨号集群器,包括多台虚拟服务器;

状态服务器,用于采集各个虚拟服务器的拨号及采集任务数据时的状态信息;

监控服务器,用于监控如第二方面中的一种多进程多线程分布式爬虫系统的运行状态,显示所述爬虫系统的状态信息,以及手动控制但不限于所述爬虫任务的挂起、恢复和终止;以及,

节点服务器,用于控制爬虫任务的启动、挂起和终止,获取/切换虚拟服务器,对第三目标数据进行清洗数据并存储,以及监控状态服务器的工作状态。

第四方面,本申请提供一种计算机可读存储介质,采用如下的技术方案:

一种计算机可读存储介质,存储有能够被处理器加载并执行如第一方面中任一种方法的计算机程序。

附图说明

图1是本申请实施例一种多进程多线程分布式爬虫方法的第一流程图。

图2是本申请实施例一种多进程多线程分布式爬虫方法的第二流程图。

图3是本申请实施例一种多进程多线程分布式爬虫方法的第三流程图。

图4是本申请实施例一种多进程多线程分布式爬虫装置的结构示意图。

具体实施方式

以下结合附图1-4对本申请作进一步详细说明。

爬虫,是网络爬虫的简称,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

本申请实施例公开一种多进程多线程分布式爬虫方法。参照图1和图2,多进程多线程分布式爬虫方法包括如下步骤,

资源配置步骤101,根据配置的爬虫任务开启多线程,并装配好请求的统一资源定位系统URL。

其中,爬虫任务包括但不限于任务名和HTTP请求的URL。统一资源定位系统(URL),是因特网的万维网服务程序上用于指定信息位置的表示方法。

虚拟服务器获取步骤102,基于负载均衡算法,获取一台虚拟服务器,虚拟服务器用于拨号并采集返回爬虫任务对应的任务数据。

其中,任务数据包括第一目标数据和HTTP状态码。HTTP状态码是用以标识网页服务器超文本传输协议响应状态的三位数字代码,根据HTTP状态码就能够的达到访问网站/网页的响应状态。在本实施方式中,第一目标数据访问网页/网站的数据。

负载均衡建立在现有网络结构之上,提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。现有的负载均衡算法主要分为静态和动态两类。静态负载均衡算法以固定的概率分配任务,不考虑服务器的状态信息。动态负载均衡算法以服务器实时负载状态信息来决定任务的分配,如最小连接法、加权最小连接法等,本实施方式中,采用动态负载均衡算法的最小连接法。

虚拟服务器状态判断步骤103,判断虚拟服务器是否可用,若是,则调用虚拟服务器采集返回任务数据,否则,返回虚拟服务器获取步骤102。

其中,虚拟服务器在拨号时,会将采集任务挂起,此时,虚拟服务器的状态为不可用,虚拟服务器空闲时,没有采集任务,此时,虚拟服务器的状态为可用。被获取的虚拟服务器的状态为不可用时,会不断地循环回虚拟服务器步骤102,直到得到状态为可用的虚拟服务器。且,当虚拟服务器不可用时,等待相应时间后返回虚拟服务器获取步骤102,相应时间为预先设置的一个时间段,也可以理解为一定时间,即一定时间段。

采集数据异常判断步骤104,根据虚拟服务器采集返回的任务数据,判断虚拟服务器采集数据是否异常,若是,则获取虚拟服务器采集数据的异常次数,否则,任务数据为第二目标数据。

任务数据中包括有HTTP状态码,因此根据任务数据中的HTTP状态码的类型能够判断访问网站/网页响应的类型,从而能够得知虚拟服务采集数据是否异常。本实施方式中,第二目标数据是指访问网站/网页正常响应时,虚拟服务器采集并返回的任务数据。

虚拟服务器切换步骤105,根据异常次数,判断虚拟服务器爬虫是否轻度异常,若是,则基于负载均衡算法,获取一台新的虚拟服务器,以采集爬虫任务对应的任务数据,否则,爬虫重度异常。

数据清洗和存储步骤106,对第二目标数据进行数据清洗,得到第三目标数据,并将第三目标数据进行存储。

其中,数据清洗,是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。数据清洗后得到的第三目标数据,是有用的数据,可以存储于预先创建的数据库中。需要说明的是,数据清洗是常见的一种技术手段,本实施方式中不作进一步的阐述。

上述一种多进程多线程分布式爬虫方法的实施方式中,根据任务数据中的HTTP状态码的类型,能够判断虚拟服务器采集数据的过程中是否因IP限制等原因而爬虫异常,若爬虫轻度异常,则虚拟服务器切换步骤切换新的虚拟服务器去采集并返回爬虫任务对应的任务数据,反复循环,直到采集到爬虫任务对应的任务数据,从而在一定程度上能够突破爬虫任务目标网站的IP限制,快速且高效地获取任务数据,进而有助于改善数据采集效率较低的问题;且使用多进程多线程以更多地利用CPU的资源,快速采集大量数据,从而有助于提高爬虫采集数据的性能。

参照图1和图2,作为一种多进程多线程分布式爬虫方法进一步的实施方式,爬虫方法还包括,

报警步骤107,若爬虫重度异常,则将异常的爬虫任务挂起,并发送报警信息。

上述一种多进程多线程分布式爬虫方法进一步的实施方式中,维修人员能够根据报警信息及时进行维护,以使爬虫尽早恢复,尽可能早地获取爬虫任务对应的任务数据,从而在一定程度上有助于提高采集数据的效率;且异常的爬虫任务挂起,能够在一定程度上防止异常的爬虫任务丢失。

其中,作为报警信息的一种实施方式,报警信息包括但不局限于电子邮件和/或短信。

作为报警信息的另一种实施方式,报警信息可以是蜂鸣声、报警灯等等。

参照图3,作为虚拟服务器切换步骤105的一种实施方式,虚拟服务器切换步骤105具体包括如下步骤,

1051、基于频次阈值,判断异常次数是否大于频次阈值。

1052、若异常次数大于频次阈值,则爬虫重度异常。

1053、若异常次数小于或等于频次阈值,则爬虫轻度异常。

1054、若虚拟服务器爬虫轻度异常,则基于负载均衡算法,获取一台新的虚拟服务器。

其中,频次阈值是预先设置的值,是根据大量的历史数据设定的值。

上述虚拟服务器切换步骤105的具体实施方式中,以频次阈值为判断标准,结合异常次数,能够快速判断虚拟服务器爬虫是否异常,若爬虫轻度异常,则快速切换新的虚拟服务器采集爬虫任务对应的任务数据,从而在一定程度上能够突破爬虫任务目标网站的IP限制。

本申请提供的一种多进程多线程分布式爬虫方法,开发人员只需要负责解析数据及存储数据,具有较高的易用性,能够使开发人员快速入手。具有扩展性,能够满足不断变化的数据业务需求。使用多进程多线程充分利用CPU的资源,快速采集大量数据,高并发,性能较好。

本申请实施例还公开一种多进程多线程分布式爬虫系统,爬虫系统包括,

资源配置模块,用于根据配置的爬虫任务开启多线程,并装配好请求的统一资源定位系统URL。

虚拟服务器获取模块,用于基于负载均衡算法,获取一台虚拟服务器,虚拟服务器用于拨号并采集返回爬虫任务对应的任务数据,任务数据包括第一目标数据和HTTP状态码。

虚拟服务器状态判断模块,用于判断虚拟服务器是否可用,若是,则调用虚拟服务器采集返回任务数据,否则进入虚拟服务器获取步模块。

采集数据异常判断模块,用于根据虚拟服务器采集返回的任务数据,判断虚拟服务器采集数据是否异常,若是,则获取虚拟服务器采集数据的异常次数,否则,任务数据为第二目标数据。

虚拟服务器切换模块,用于根据所述异常次数,判断虚拟服务器爬虫是否轻度异常,若是,则基于负载均衡算法,获取一台新的虚拟服务器,以采集爬虫任务对应的任务数据,否则,爬虫重度异常。

数据清洗和存储模块,用于对第二目标数据进行数据清洗,得到第三目标数据,并将第三目标数据进行存储。

上述一种多进程多线程分布式爬虫系统的实施方式中,虚拟服务器状态判断模块和采集数据异常判断模块根据虚拟服务器采集并返回的任务数据中的HTTP状态码的类型,能够判断虚拟服务器采集数据的过程中是否因IP限制等原因而爬虫异常,若爬虫轻度异常,则虚拟服务器切换模块切换新的虚拟服务器去采集并返回爬虫任务对应的任务数据,反复循环,直到采集到爬虫任务对应的任务数据,从而在一定程度上能够突破爬虫任务目标网站的IP限制,快速且高效地获取任务数据,进而大大改善数据采集效率较低的问题;且使用多进程多线程以更多地利用CPU的资源,快速采集大量数据,从而极大提高爬虫采集数据的性能。

作为爬虫系统进一步的实施方式,爬虫系统还包括,

报警模块,用于若爬虫重度异常,则将异常的爬虫任务挂起,并发送报警信息。

上述爬虫系统进一步的实施方式中,若爬虫重度异常,则报警模块开始报警,使得维修人员能够根据报警信息及时进行维护,以使爬虫尽早恢复,尽可能早地获取爬虫任务对应的任务数据,从而在一定程度上能够提高采集数据的效率;且异常的爬虫任务挂起,能够在一定程度上防止异常的爬虫任务丢失。

本申请提供的一种多进程多线程分布式爬虫系统,当需要进行不同需求的数据获取时,只需要切换爬虫任务,无需改变系统内部模块,使得爬虫系统可复用率高。爬虫系统出现异常状况(爬虫重度异常)时,能够及时发出警告。

参照图4,本申请实施例还公开一种多进程多线程分布式爬虫装置,爬虫装置包括,

VPS拨号集群器201,包括多台虚拟服务器。

状态服务器202,用于采集各个虚拟服务器的拨号及采集任务数据时的状态信息。

其中,状态服务器202包括状态服务主节点和状态服务副节点。

监控服务器203,用于监控一种多进程多线程分布式爬虫系统的运行状态,显示爬虫系统的状态信息,以及手动控制但不限于爬虫任务的挂起、恢复和终止。

其中,监控服务器的监控服务控制面板,可以监控一种多进程多线程分布式爬虫系统的运行状态,显示爬虫系统的状态信息,以及手动控制但不限于爬虫任务的挂起、恢复和终止。

节点服务器204,用于控制爬虫任务的启动、挂起和终止,获取/切换虚拟服务器,对第三目标数据进行清洗数据并存储,以及监控状态服务器的工作状态。

其中,节点服务器中存在有多个节点服务,每个节点服务控制一个及一个以上的爬虫任务的工作状态。

在具体运行过程中,先启动状态服务主节点和状态服务副节点,VPS集群器201各个虚拟服务器提供拨号服务的配置文件中配置好状态服务主节点及状态服务副节点的IP地址及相应端口,启动拨号服务,拨号服务会向状态服务主节点和状态服务副节点进行注册。接着,在节点服务器204配置文件中配置VPS集群器中各个虚拟服务器的IP及端口,配置状态服务主节点和状态服务副节点的IP及端口;同时,配置一个及一个以上的爬虫任务,设置各个爬虫任务的线程数、爬虫的时间、爬虫出现异常的阈值频次等,并启动节点服务器。然后,在监控服务器201的配置文件中配置状态服务主节点和状态服务副节点的IP及端口,配置爬虫节点的IP及端口,启动监控服务器201,并在监控服务器201的服务控制面板上依次启动配置文件配置的爬虫节点,从而爬虫任务开始进行。

本申请提供的一种多进程多线程分布式爬虫装置,具有较好的可维护性,爬虫装置通过不同服务组件组成,耦合性低,能够持续不断的集成和部署。监控服务器能够监控爬虫系统内部组件的状态信息,以使开发人员能够获知爬虫系统的状态信息。

本申请实施例还公开一种计算机可读存储介质,存储有能够被处理器加载并执行如一种多进程多线程分布式爬虫方法中任一种方法的计算机程序。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号