一种抓取网络数据的方法及网络数据抓取调度装置
技术领域
本申请涉及大数据技术领域,具体而言,涉及一种抓取网络数据的方法及网络数据抓取调度装置。
背景技术
数据无处不在,随着互联网技术的发展,信息和知识呈爆炸式增长,网络中各网站包含的数据量也越来越大。从而使得利用网络爬虫程序抓取各网站的网络数据,得到用于数据挖掘的海量数据成为可能,促进了需要海量数据支撑的人工智能、物联网、社交以及搜索等大数据平台的迅速发展,各大数据平台分别利用各自的网络数据抓取服务器进行相应网络数据抓取。
由于各网站类型不同,使得不同网站的网络数据类型也不同。因而,对于每一网络数据抓取服务器,在针对不同类型的网站进行网络数据抓取时,需要分别设置并编辑针对各网站类型的多类型网络爬虫程序,并利用编辑的网络爬虫程序从对应类型的网站抓取网络数据。但该抓取网络数据的方法,在触发网络数据抓取的一个或多个任务中,当属于同一网站类型的网站信息有多个时,该网站类型对应的网络爬虫程序需要依序从各网站进行网络数据抓取,使得网络数据抓取所需的时间较长,数据抓取的效率较低。
发明内容
有鉴于此,本申请的目的在于提供一种抓取网络数据的方法和装置,用于解决现有技术中网络数据抓取效率较低的问题。
第一方面,本申请实施例提供了一种抓取网络数据的方法,该方法包括:
当存储的任务中包含的抓取策略被触发时,对所述任务中包含的网站信息进行网站类型分类,依据预先设置的网站类型与网络爬虫程序标识的映射关系,得到每一分类网站类型映射的网络爬虫程序标识;
针对每一分类网站类型映射的网络爬虫程序标识,确定存储的该网络爬虫程序标识对应的请求网络数据抓取的网络爬虫程序,将该分类网站类型对应的网站信息分配给确定的网络爬虫程序以进行网络数据抓取,其中,同一网络爬虫程序标识对应的网络爬虫程序安装在不同的网络数据抓取服务器上。
结合第一方面,在第一种可能的实现方式中,在所述存储的任务中包含的抓取策略被触发之前,所述方法还包括:
接收请求网络数据抓取的任务,解析所述任务,存储所述任务中包含的网站信息以及抓取策略。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述存储所述任务中包含的网站信息以及抓取策略,包括:
依据所述抓取策略中包含的抓取起始时间信息,将包含所述网站信息和所述抓取策略的任务顺序地置于预设的任务等待执行队列中。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述进行网络数据抓取之后,所述方法还包括:
如果所述抓取策略为单次抓取策略,从所述任务等待执行队列中,删除该抓取策略对应的任务;
如果所述抓取策略为周期抓取策略,从所述任务等待执行队列中,依据所述抓取策略中包含的抓取间隔时间信息,将该抓取策略对应的任务顺序地后移。
结合第一方面的第二种可能的实现方式,在第四种可能的实现方式中,所述抓取策略被触发,包括:
启动定时器;
在所述定时器定时到预先设置的定时阈值后,检测所述任务等待执行队列,获取抓取起始时间信息在当前检测的时间之前的任务,并确定获取的任务对应的抓取策略被触发。
结合第一方面、第一方面的第一种至第四种可能的实现方式中的任一可能的实现方式,在第五种可能的实现方式中,所述任务中还包含待抓取内容信息,所述预先设置的网站类型与网络爬虫程序标识的映射关系为网站类型和内容信息与网络爬虫程序标识的映射关系,所述得到每一分类网站类型映射的网络爬虫程序标识,包括:
针对每一分类网站类型,依据网站类型和内容信息与网络爬虫程序标识的映射关系,确定该分类网站类型和所述任务中包含的待抓取内容信息映射的网络爬虫程序标识。
结合第一方面、第一方面的第一种至第四种可能的实现方式中的任一可能的实现方式,在第六种可能的实现方式中,所述方法还包括:
依据网络爬虫程序对应的主题,将该网络爬虫程序抓取的网络数据存储至预先设置的所述主题对应的Kafka消息队列中。
结合第一方面、第一方面的第一种至第四种可能的实现方式中的任一可能的实现方式,在第七种可能的实现方式中,所述方法还包括:
对网络爬虫程序依据分配的网站信息进行网络数据抓取进行计时;
若计时大于预设的时间阈值,该网络爬虫程序抓取网络数据还未执行完毕,终止该网络爬虫程序的网络数据抓取,调用该网络爬虫程序对应的程序集中的其他网络爬虫程序进行网络数据抓取。
第二方面,本申请实施例提供了一种网络数据抓取调度装置,该装置包括:
任务触发模块,当存储的任务中包含的抓取策略被触发时,对所述任务中包含的网站信息进行网站类型分类,依据预先设置的网站类型与网络爬虫程序标识的映射关系,得到每一分类网站类型映射的网络爬虫程序标识;
抓取控制模块,用于针对每一分类网站类型映射的网络爬虫程序标识,确定存储的该网络爬虫程序标识对应的请求网络数据抓取的网络爬虫程序,将该分类网站类型对应的网站信息分配给确定的网络爬虫程序以进行网络数据抓取,其中,同一网络爬虫程序标识对应的网络爬虫程序安装在不同的网络数据抓取服务器上。
结合第二方面,在第一种可能的实现方式中,所述装置还包括:
任务存储模块,用于接收请求网络数据抓取的任务,解析所述任务,存储所述任务中包含的网站信息以及抓取策略。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。
本申请实施例提供的一种抓取网络数据的方法及网络数据抓取调度装置,当存储的任务中包含的抓取策略被触发时,对所述任务中包含的网站信息进行网站类型分类,依据预先设置的网站类型与网络爬虫程序标识的映射关系,得到每一分类网站类型映射的网络爬虫程序标识;针对每一分类网站类型映射的网络爬虫程序标识,确定存储的该网络爬虫程序标识对应的请求网络数据抓取的网络爬虫程序,将该分类网站类型对应的网站信息分配给确定的网络爬虫程序以进行网络数据抓取,其中,同一网络爬虫程序标识对应的网络爬虫程序安装在不同的网络数据抓取服务器上。这样,在需要抓取同一类型的多个网站的网络数据时,可以利用分布式的各网络数据抓取服务器上安装的同一类型的多个网络爬虫程序并行从各网站进行网络数据抓取,能够有效缩短网络数据抓取所需的时间,从而提升网络数据抓取效率,降低网络数据抓取成本。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的抓取网络数据的方法流程示意图;
图2为本申请实施例提供的任务等待执行队列以及程序集示意图;
图3为本申请实施例提供的网络数据抓取调度装置结构示意图;
图4为本申请实施例提供的一种计算机设备400的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的抓取网络数据的方法流程示意图。如图1所示,该方法包括:
步骤101,当存储的任务中包含的抓取策略被触发时,对所述任务中包含的网站信息进行网站类型分类,依据预先设置的网站类型与网络爬虫程序标识的映射关系,得到每一分类网站类型映射的网络爬虫程序标识;
本申请实施例中,对于各大数据平台为了进行网络数据抓取而编辑的任务,一般不会要求即时执行。因而,本申请实施例中,设置网络数据抓取调度器,接收各大数据平台编辑的任务,进行存储,以对各大数据平台编辑的任务进行统一管理。
本申请实施例中,在网络数据抓取调度器中,依据不同的网站类型,(例如,网站类型包括:教育类网站、育儿网站、时事类网站、投资类网站以及咨询类网站等。)预先构建网站类型与网络爬虫程序标识的映射关系。从而可以在存储的任务中包含的抓取策略被触发时,即满足抓取策略设置的条件时,基于触发的任务中包含的网站信息对应的网站类型,快速确定需要执行抓取该网站信息的网络数据的网络爬虫程序标识。
本申请实施例中,依据任务中包含的各网站信息,针对每一网站信息,确定该网站信息对应的网站类型,并将属于同一网站类型的网站信息进行归类,并从预先构建的网站类型与网络爬虫程序标识的映射关系中,依据确定的网站类型,确定其映射的网络爬虫程序标识。
本申请实施例中,由于同一网站包含的网络数据(网站的内容信息)类型可能有多种。因而,作为另一可选实施例,还可以针对不同的网站类型以及网站的内容信息,设置并编辑对应的网络爬虫程序,构建网站类型和内容信息与网络爬虫程序标识的映射关系。例如,构建的映射关系如表1所示。
表1
网站类型 |
内容信息 |
网络爬虫程序标识 |
网站类型1 |
A |
网络爬虫程序标识1 |
网站类型1 |
B |
网络爬虫程序标识2 |
网站类型2 |
A |
网络爬虫程序标识3 |
网站类型3 |
C |
网络爬虫程序标识4 |
… |
… |
… |
本申请实施例中,与表1相对应,任务中还可以包含待抓取内容信息,当任务中包含待抓取内容信息时,则从构建的网站类型和内容信息与网络爬虫程序标识的映射关系中,依据任务中包含的网站信息,确定网站信息对应的网站类型,依据确定的网站类型和任务中包含的待抓取内容信息,确定其映射的网络爬虫程序标识。
本申请实施例中,网络爬虫程序标识用于唯一表征一网络爬虫程序。不同的网络爬虫程序,对应的网络爬虫程序标识也不同,而安装在不同网络数据抓取服务器上的同一网络爬虫程序,对应的网络爬虫程序标识相同。
本申请实施例中,作为一可选实施例,在存储的任务中包含的抓取策略被触发之前,该方法还包括:
接收请求网络数据抓取的任务,解析所述任务,存储所述任务中包含的网站信息以及抓取策略。
本申请实施例中,网络数据抓取服务器在需要从网络抓取网络数据时,生成请求网络数据抓取的任务,在任务中,携带网站信息以及抓取策略,并将任务传输至网络数据抓取调度器,网络数据抓取调度器接收各网络数据抓取服务器传输的任务,依次进行解析。其中,
携带的网站信息的数量可以是一个或多个,表征需要从网络中哪些网站来抓取网络数据。
本申请实施例中,作为一可选实施例,网站信息可以是统一资源定位符(URL,Uniform Resource Locator)信息,也可以是IP地址信息。
本申请实施例中,任务中还可以包括:待抓取内容信息。即需要抓取哪些方面的网络数据或何种类型的网络数据。
抓取策略包括:单次抓取策略、周期抓取策略。其中,在一任务中,携带单次抓取策略或周期抓取策略。
本申请实施例中,以网站信息为例,单次抓取策略表征只需依据网站信息进行一次网络数据抓取,包含抓取起始时间信息。周期抓取策略表征依据网站信息进行周期性网络数据抓取,包含抓取起始时间信息和抓取间隔时间信息。
本申请实施例中,作为另一可选实施例,为了能够对各网络数据抓取服务器传输的任务进行有效管理,存储所述任务中包含的网站信息以及抓取策略,包括:
依据所述抓取策略中包含的抓取起始时间信息,将所述网站信息和所述抓取策略顺序地置于预设的任务等待执行队列中。
本申请实施例中,任务等待执行队列中,按照抓取起始时间信息顺序地排列任务。例如,在任务等待执行队列中,依次排列有第一任务(第一网站信息和第一抓取策略)以及第二任务(第二网站信息和第二抓取策略),其中,第一任务的抓取起始时间信息为:2018.07.16.10.0.0(表示从2018年7月16日10点触发进行网络数据抓取),第二任务的抓取起始时间信息为:2018.07.16.10.10.0。若当前接收的第三任务的抓取起始时间信息为:2018.07.15.23.0.0,则将第三任务置于任务等待执行队列中第一任务的前面;若当前接收的第三任务的抓取起始时间信息为:2018.07.16.10.11.0,则将第三任务置于任务等待执行队列中第二任务的后面;若当前接收的第三任务的抓取起始时间信息为:2018.07.16.10.05.20,则将第三任务置于任务等待执行队列中第一任务与第二任务之间。这样,通过队列可以实现对各任务的有序管理。
本申请实施例中,作为另一可选实施例,在后续应用中,在依据抓取策略触发进行网络数据抓取后,如果该抓取策略为单次抓取策略,则从任务等待执行队列中,删除该抓取策略对应的任务,如果该抓取策略为周期抓取策略,则从任务等待执行队列中,依据所述抓取策略中包含的抓取间隔时间信息,将该抓取策略对应的任务顺序地后移,以进行再次排列。
本申请实施例中,作为一可选实施例,所述抓取策略被触发,包括:
A11,启动定时器;
本申请实施例中,通过定时器的方式监测是否需要执行任务以抓取相应的网络数据。
A12,在所述定时器定时到预先设置的定时阈值后,检测所述任务等待执行队列,获取抓取起始时间信息在当前检测的时间之前的任务,并确定获取的任务对应的抓取策略被触发。
本申请实施例中,定时器按照定时阈值进行定时,在定时到时,输出一指令以用于检测任务等待执行队列,获取任务等待执行队列中抓取起始时间信息在当前检测的时间之前的所有任务。这样,无需对每一任务进行实时监测,减少任务管理的资源开销。
步骤102,针对每一分类网站类型映射的网络爬虫程序标识,确定存储的该网络爬虫程序标识对应的请求网络数据抓取的网络爬虫程序,将该分类网站类型对应的网站信息分配给确定的网络爬虫程序以进行网络数据抓取,其中,同一网络爬虫程序标识对应的网络爬虫程序安装在不同的网络数据抓取服务器上。
本申请实施例中,利用各大数据平台的网络数据抓取服务器上安装的不同类型的网络爬虫程序,和/或,在同一网络数据抓取服务器上镜像不同类型的网络爬虫程序或者同一类型的多个网络爬虫程序。这样,在需要抓取同一类型的多个网站的网络数据时,可以通过分布式的网络爬虫程序,并行从各网站进行网络数据抓取,有效缩短了网络数据抓取所需的时间,从而提升了网络数据抓取效率。
本申请实施例中,网络爬虫程序在执行网络数据抓取后,主动向网络数据抓取调度器发送任务拉取(PULL)请求,任务拉取请求中携带有该网络爬虫程序所属的网络数据抓取服务器信息,网络数据抓取调度器在当前没有抓取策略被触发的情形下,将请求的任务中携带的网络爬虫程序置于该网络爬虫程序标识对应的程序集中。程序集中的各网络爬虫程序相同,但安装在不同的网络数据抓取服务器上。
本申请实施例中,在抓取策略被触发后,依据任务中同一网站类型包含的各网站信息,为与该网站类型相匹配的程序集中各网络爬虫程序分配网站信息,并将分配的网站信息推送(PUSH)给网络爬虫程序,以使相应网络数据抓取服务器上的该网络爬虫程序依据分配的网站信息,执行相应网络数据抓取。
本申请实施例中,为了减少对网络数据进行重复抓取而导致的资源浪费以及抓取时间浪费,作为一可选实施例,在所述进行网络数据抓取之前,该方法还包括:
解析分配的网站信息对应的网页,依据该网页的内容信息计算该网页的特征值;
若计算的特征值与预先存储的该网页对应的特征值之差小于预设阈值,终止该网页的网络数据抓取;
若计算的特征值与预先存储的该网页对应的特征值之差不小于预设阈值,对该网页进行网络数据抓取,并利用计算的特征值替换所述存储的该网页对应的特征值。
本申请实施例中,如果一网页的特征值与存储的该网页的特征值相差较小,表明该网页包含的网络数据更新程序较小。为避免资源浪费,网络爬虫程序终止从该网页抓取网络数据。对于网站包含有多个网页的情形,若所有网页均无需网络数据抓取,将该网络爬虫程序至于相应的程序集中,以避免重复抓取网络数据,有效节约抓取时间以及抓取资源。
本申请实施例中,特征值为能够表征网页内容信息发生变化的值。网页内容信息发生变化的程度越小,计算的特征值就越接近。
本申请实施例中,作为一可选实施例,该方法还包括:
对网络爬虫程序依据分配的网站信息进行网络数据抓取进行计时;
若计时大于预设的时间阈值,该网络爬虫程序抓取网络数据还未执行完毕,终止该网络爬虫程序的网络数据抓取,调用该网络爬虫程序对应的程序集中的其他网络爬虫程序进行网络数据抓取。
本申请实施例中,时间阈值为网络爬虫程序抓取网络数据时所需要的最长时间。当进行网络数据抓取的时间大于时间阈值时,则说明该网络爬虫程序可能存在工作异常或出现故障。因此,为了保证能够及时抓取该网络数据,调用同类型的其他网络爬虫程序进行网络数据抓取。作为一可选实施例,还可以在每一网络爬虫程序中设置一监控程序,监控程序负责监控该网络爬虫程序的抓取状态,如果完成一次任务抓取,则主动从网络数据抓取调度器拉取任务来执行;监控程序如果监控到该网络爬虫程序的抓取状态为超时,通知网络数据抓取调度器调用同类型的其他网络爬虫程序进行网络数据抓取。
本申请实施例中,作为一可选实施例,将该分类网站类型对应的网站信息分配给确定的网络爬虫程序,包括:
B11,获取确定的该分类网站类型对应的各网络爬虫程序的数据抓取能力;
本申请实施例中,由于网络爬虫程序可能设置在不同的网络数据抓取服务器上,因而,不同网络数据抓取服务器上的同一网络爬虫程序,数据抓取能力也会有所不同。
本申请实施例中,网络爬虫程序的数据抓取能力是动态变化的。作为一可选实施例,可以按照预设时间周期,向每个网络爬虫程序对应的网络数据抓取服务器发送心跳请求,以获取网络爬虫程序的数据抓取能力。
本申请实施例中,数据抓取能力包括但不限于:内存信息、未分配任务时间、任务处理平均速率等。其中,内存信息是指分配给该网络爬虫程序的内存,未分配任务时间是指自上一次网络数据抓取毕后到当前的时长,任务处理平均速率是指该网络爬虫程序抓取网络数据的平均速率。
B12,依据获取的网络爬虫程序的数据抓取能力,分配该分类网站类型对应的各网站信息。
本申请实施例中,为了便于为每个网络爬虫程序分配任务(网站信息),通过获取每个网络爬虫程序的数据抓取能力,该数据抓取能力用于作为该网络爬虫程序分配任务量的参考。例如:若网络爬虫程序的数据抓取能力较高,可以为该网络爬虫程序分配内容量较大的网站信息,例如,网络数据量大的网站信息;若网络爬虫程序的数据抓取能力较低,则为该网络爬虫程序分配内容量较小的网站信息,从而可以保证每一网络爬虫程序对任务进行网络数据抓取的速度和效率。
本申请实施例中,如果网站信息数量超过网络爬虫程序数量,则为一网络爬虫程序分配一个或多个网站信息,如果网站信息数量小于网络爬虫程序数量,则每一网站信息对应一网络爬虫程序,或者,同一网站信息对应的每一不同类型的内容信息对应一网络爬虫程序。
本申请实施例中,作为另一可选实施例,还可以为同一网站类型的多个网站信息设置优先级,数据抓取能力越强网络爬虫程序分配的网站信息的优先级越高。
本申请实施例中,作为一可选实施例,该方法还包括:
对网络爬虫程序抓取的网络数据进行去重处理。
本申请实施例中,对同一网络爬虫程序抓取的网络数据中相同的或相似的网络数据进行去重。
本申请实施例中,作为另一可选实施例,该方法还包括:
依据网络爬虫程序对应的主题,将该网络爬虫程序抓取的网络数据存储至预先设置的所述主题对应的存储区。
本申请实施例中,抓取的网络数据可以具有多种数据存储方式。例如,依据网络爬虫程序对应的主题(topic),将抓取的网络数据存储至预设的大数据存储服务器中该topic对应的存储区,例如卡夫卡(Kafka)消息队列中,以供不同类型的数据需求方消费并存储。其中,大数据存储服务器可以是网络数据抓取调度器或其他共数据共享的服务器,Kafka消息队列是一种高吞吐量的分布式发布消息队列。
本申请实施例中,作为一可选实施例,该方法还包括:
控制分配给同一网站信息的网络爬虫程序数量不超过预设数。
本申请实施例中,在进行网络数据抓取时,尽可能避免网络爬虫程序对某个网站访问过于频繁而造成封禁等情形发生。例如:对于需要从sina网站进行网络数据抓取的情形,需要控制并发访问sina网站的网络爬虫程序数不超过10个,以避免对sina网站造成攻击。
图2为本申请实施例提供的任务等待执行队列以及程序集示意图。如图2所示,在网络数据抓取调度器中,利用任务解析程序解析接收的任务,利用任务管理程序管理任务等待执行队列。其中,任务中每一网站类型对应的网站信息可以对应一任务等待执行队列,每一任务等待执行队列对应一任务管理程序。每一网络爬虫程序标识对应一程序集,任务等待执行队列与程序集形成一一对应关系。各网络爬虫程序分别设置一监控程序以监控对应网络爬虫程序的抓取状态,各网络爬虫程序抓取的网络数据存储至Kafka消息队列中。例如,任务管理程序1管理网站类型1对应的任务等待执行队列1,任务管理程序2管理网站类型2对应的任发务等待执行队列2,各任务管理程序形成任务管理程序集。程序集1为网站类型1映射的网络爬虫程序标识1对应的各网络爬虫程序,均为主动向网络数据抓取调度器请求任务抓取的程序,包括网络爬虫程序11、网络爬虫程序12以及网络爬虫程序13,网络爬虫程序11、网络爬虫程序12以及网络爬虫程序13为相同的网络爬虫程序,只是安装在不同的网络数据抓取服务器上。程序集2为网站类型2映射的网络爬虫程序标识2对应的各网络爬虫程序,包括网络爬虫程序21以及网络爬虫程序22。
假设在定时器定时到预先设置的定时阈值后,以任务等待执行队列1为例,任务等待执行队列1中需要进行网络数据抓取的包括两个任务的4个网站信息,分别为网站信息1、网站信息2、网站信息3以及网站信息4。其中,任务1采用单次抓取策略,包括网站信息1;任务2采用周期抓取策略,包括网站信息2、网站信息3和网站信息4,抓取间隔时间信息为1天。作为一可选实施例,将网站信息1推送给程序集1中的网络爬虫程序11对应的网络数据抓取服务器,将网站信息2推送给程序集1中的网络爬虫程序12对应的网络数据抓取服务器,将网站信息3和网站信息4推送给程序集1中的网络爬虫程序13对应的网络数据抓取服务器。
在网络爬虫程序11抓取完网站信息1的网络数据后,将任务1从任务等待执行队列1删除。
在网络爬虫程序12、13分别抓取完网站信息2、网站信息3和网站信息4的网络数据后,将任务2的抓取起始时间信息更新为1天后的当前时间,并将任务2从任务等待执行队列1后移至更新的抓取起始时间信息对应的位置。
图3为本申请实施例提供的网络数据抓取调度装置结构示意图。如图3所示,该装置包括:
任务触发模块301,当存储的任务中包含的抓取策略被触发时,对所述任务中包含的网站信息进行网站类型分类,依据预先设置的网站类型与网络爬虫程序标识的映射关系,得到每一分类网站类型映射的网络爬虫程序标识;
本申请实施例中,网络数据抓取调度装置为网络数据抓取调度器。
本申请实施例中,依据不同的网站类型,构建网站类型与网络爬虫程序标识的映射关系;或者,依据网站类型以及网站的内容信息,构建网站类型和内容信息与网络爬虫程序标识的映射关系。
本申请实施例中,网络爬虫程序标识用于唯一表征一网络爬虫程序。不同的网络爬虫程序,对应的网络爬虫程序标识也不同,而安装在不同网络数据抓取服务器上的同一网络爬虫程序,对应的网络爬虫程序标识相同。
抓取控制模块302,用于针对每一分类网站类型映射的网络爬虫程序标识,确定存储的该网络爬虫程序标识对应的请求网络数据抓取的网络爬虫程序,将该分类网站类型对应的网站信息分配给确定的网络爬虫程序以进行网络数据抓取,其中,同一网络爬虫程序标识对应的网络爬虫程序安装在不同的网络数据抓取服务器上。
本申请实施例中,作为一可选实施例,该装置还包括:
任务存储模块(图中未示出),用于接收请求网络数据抓取的任务,解析所述任务,存储所述任务中包含的网站信息以及抓取策略。
本申请实施例中,网站信息的数量可以是一个或多个。任务中还可以包括:待抓取内容信息。
抓取策略包括:单次抓取策略、周期抓取策略。其中,在一任务中,携带单次抓取策略或周期抓取策略。
本申请实施例中,作为一可选实施例,任务存储模块具体用于:
接收请求网络数据抓取的任务,解析所述任务,依据所述抓取策略中包含的抓取起始时间信息,将包含所述网站信息和所述抓取策略的任务顺序地置于预设的任务等待执行队列中。
本申请实施例中,任务等待执行队列中,按照抓取起始时间信息顺序地排列任务。
本申请实施例中,作为另一可选实施例,该装置还包括:
任务更新模块(图中未示出),用于在所述进行网络数据抓取之后,如果所述抓取策略为单次抓取策略,从所述任务等待执行队列中,删除该抓取策略对应的任务;
如果所述抓取策略为周期抓取策略,从所述任务等待执行队列中,依据所述抓取策略中包含的抓取间隔时间信息,将该抓取策略对应的任务顺序地后移。
本申请实施例中,作为一可选实施例,任务触发模块301包括:任务触发单元、分类单元以及网络爬虫程序标识确定单元(图中未示出),其中,
任务触发单元,用于启动定时器,在所述定时器定时到预先设置的定时阈值后,检测所述任务等待执行队列,获取抓取起始时间信息在当前检测的时间之前的任务,并确定获取的任务对应的抓取策略被触发;
分类单元,用于对所述任务中包含的网站信息进行网站类型分类;
网络爬虫程序标识确定单元,用于依据预先设置的网站类型与网络爬虫程序标识的映射关系,得到每一分类网站类型映射的网络爬虫程序标识。
本申请实施例中,作为一可选实施例,网络爬虫程序标识确定单元具体用于:
针对每一分类网站类型,依据网站类型和内容信息与网络爬虫程序标识的映射关系,确定该分类网站类型和所述任务中包含的待抓取内容信息映射的网络爬虫程序标识。
本申请实施例中,该装置还包括:
网络数据存储模块(图中未示出),用于依据网络爬虫程序对应的主题,将该网络爬虫程序抓取的网络数据存储至预先设置的所述主题对应的Kafka消息队列中。
本申请实施例中,抓取控制模块302还用于:
解析分配的网站信息对应的网页,依据该网页的内容信息计算该网页的特征值;
若计算的特征值与预先存储的该网页对应的特征值之差小于预设阈值,终止该网页的网络数据抓取;
若计算的特征值与预先存储的该网页对应的特征值之差不小于预设阈值,对该网页进行网络数据抓取,并利用计算的特征值替换所述存储的该网页对应的特征值。
本申请实施例中,特征值为能够表征网页内容信息发生变化的值。网页内容信息发生变化的程度越小,计算的特征值就越接近。对于网站包含有多个网页的情形,若所有网页均无需网络数据抓取,将该网络爬虫程序至于相应的程序集中,以避免重复抓取网络数据,有效节约抓取时间以及抓取资源。
本申请实施例中,作为一可选实施例,抓取控制模块302还用于:
对网络爬虫程序依据分配的网站信息进行网络数据抓取进行计时;
若计时大于预设的时间阈值,该网络爬虫程序抓取网络数据还未执行完毕,终止该网络爬虫程序的网络数据抓取,调用该网络爬虫程序对应的程序集中的其他网络爬虫程序进行网络数据抓取。
本申请实施例中,时间阈值为网络爬虫程序抓取网络数据时所需要的最长时间。
本申请实施例中,作为一可选实施例,将该分类网站类型对应的网站信息分配给确定的网络爬虫程序,包括:
获取确定的该分类网站类型对应的各网络爬虫程序的数据抓取能力;
依据获取的网络爬虫程序的数据抓取能力,分配该分类网站类型对应的各网站信息。
本申请实施例中,按照预设时间周期,向每个网络爬虫程序对应的网络数据抓取服务器发送心跳请求,以获取网络爬虫程序的数据抓取能力。
本申请实施例中,数据抓取能力包括但不限于:内存信息、未分配任务时间、任务处理平均速率等。
本申请实施例中,作为一可选实施例,该装置还包括:
去重模块,用于对网络爬虫程序抓取的网络数据进行去重处理。
本申请实施例中,作为一可选实施例,该装置还包括:
程序访问控制模块(图中未示出),用于控制分配给同一网站信息的网络爬虫程序数量不超过预设数。
本申请实施例中,通过控制访问同一网站的网络爬虫程序数,可以有效避免网络爬虫程序对某个网站访问过于频繁而造成封禁等情形发生。
如图4所示,本申请一实施例提供了一种计算机设备400,用于执行图1中的抓取网络数据的方法,该设备包括存储器401、处理器402及存储在该存储器401上并可在该处理器402上运行的计算机程序,其中,上述处理器402执行上述计算机程序时实现上述抓取网络数据的方法的步骤。
具体地,上述存储器401和处理器402能够为通用的存储器和处理器,这里不做具体限定,当处理器402运行存储器401存储的计算机程序时,能够执行上述抓取网络数据的方法,用于解决现有技术中网络数据抓取效率较低的问题,本申请通过利用分布式的各大数据平台的网络数据抓取服务器上安装的不同类型的网络爬虫程序或者同一类型的多个网络爬虫程序,在需要抓取同一类型的多个网站的网络数据时,通过分布式的网络爬虫程序,可以并行从各网站进行网络数据抓取,有效缩短了网络数据抓取所需的时间,从而提升了网络数据抓取效率;同时,通过在网络爬虫程序处于空闲时,主动请求任务以进行网络数据抓取,可以有效提升网络爬虫程序的利用效率。
对应于图1中的抓取网络数据的方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述抓取网络数据的方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述抓取网络数据的方法,用于解决现有技术中网络数据抓取效率较低的问题,本申请通过利用分布式的各大数据平台的网络数据抓取服务器上安装的不同类型的网络爬虫程序或者同一类型的多个网络爬虫程序,在需要抓取同一类型的多个网站的网络数据时,通过分布式的网络爬虫程序,可以并行从各网站进行网络数据抓取,有效缩短了网络数据抓取所需的时间,从而提升了网络数据抓取效率;同时,通过在网络爬虫程序处于空闲时,主动请求任务以进行网络数据抓取,可以有效提升网络爬虫程序的利用效率。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。