业务数据抓取方法和系统
技术领域
本申请涉及数据采集领域,具体地说,是涉及一种业务数据抓取方法和系统。
背景技术
如今,随着互联网技术的迅速发展,其中蕴含的庞大的数据量和信息量将人们获取信息的方式改变:从传统翻书查阅的方式改变为通过互联网所搜引擎检索。现在人们已经习惯于通过网络获取自己需要的信息。
目前,各类互联网产品应运而生,为人们在互联网上提供各类便捷、实用的功能服务,上述物联网产品也通过互联网获取业务数据,其产品中数据的准确性和丰富程度等特性往往决定产品的生命周期。然而,通过搜索引擎所获得的信息,通常是通过网页的形式所展现的,这样的信息只适合于人工检索阅读,但互联网产品却很难进行加工和再利用,同时,检索到的信息量庞大,很难在大量的检索结果中抽取出有用的信息。
从而,对于互联网产品,不能采用搜索引擎检索,而是针对互联网中的各种业务数据进行数据采集。但数据采集往往都要花费大量的资源,同时在数据采集时不能通过配置相关的信息获取业务数据,只能修改内部逻辑关系,从而数据采集过程要花费大量时间。然而,数据采集时数据更新的进度快慢和其他因素好坏往往决定了用户对产品的忠诚度,占用资源大、数据更新慢的互联网产品必然将被用户淘汰。
因此,如何解决数据采集时花费大量的资源而且不能通过配置相关的信息获取业务数据,便成为亟待解决的技术问题。
发明内容
本申请所要解决的技术问题是提供一种业务数据抓取方法和系统,以解决数据采集时花费大量的资源而且不能通过配置相关的信息获取业务数据的问题。
为解决上述技术问题,本申请提供了一种业务数据抓取方法,包括:
配置抓取操作时所需要的规则数据;
读取所述规则数据,根据该规则数据建立网页资源抓取任务,将抓取的网页资源按照配置规则分类进行存储;针对抓取到的所述网页资源建立数据解析任务,对抓取的所述网页资源通过解析HTML文档获取需要的资源URI,同时过滤数据不完整的资源;建立资源下载任务,对解析获取到的所述资源URI使用断点续传的方式下载,获得所述资源数据;
根据采集到的所述资源数据的完整性进行存储或重新抓取,并在所述抓取操作无法正常结束时发送报告信息。
进一步地,所述网页资源抓取任务,进一步为按照配置的所述规则数据创建的对应数量的多线程网页资源抓取任务。
进一步地,所述资源下载任务,进一步为按照配置的所述规则数据创建的对应数量的多线程资源下载任务。
进一步地,所述根据采集到的资源数据的完整性进行存储或重新抓取,进一步为:判断所述资源数据的完整性,若所述资源数据完整,则将该资源数据进行存储;若所述资源数据不完整,则遍历所述抓取操作中各任务执行时的状态,查找出导致所述资源数据不完整的任务状态,通过重启所述抓取操作从相对应的所述任务状态处进行重新抓取。
进一步地,所述规则数据,进一步为由资源URI、相关编码、抓取任务触发数据和/或规则模板数据构成的规则数据。
一种业务数据抓取系统,该系统包括:配置模块、抓取处理模块、完整性校验模块以及预警模块;其中,
所述配置模块,用于对抓取操作时所需要的规则数据进行配置,并将配置后的所述规则数据以配置文件的方式进行存储;
所述抓取处理模块,用于读取所述配置模块中存储的所述配置文件,获得所述规则数据,根据该规则数据建立网页资源抓取任务,将抓取的网页资源按照配置规则分类进行存储;针对抓取到的所述网页资源建立数据解析任务,对抓取的所述网页资源通过解析HTML文档获取需要的资源URI,同时过滤数据不完整的资源;建立资源下载任务,对解析获取到的所述资源URI使用断点续传的方式下载,获得所述资源数据;将采集到的资源数据发送至所述完整性校验模块,以及用于接收所述完整性校验模块发送的所述校验结果数据,根据该校验结果数据进行存储或重新抓取;
所述完整性校验模块,用于接收所述抓取处理模块发送的所述资源数据,对该资源数据进行完整性校验,生成校验结果数据发送至所述抓取处理模块;
所述预警模块,用于实时监测所述抓取处理模块的所述抓取操作状态,在所述抓取操作无法正常结束时从所述抓取处理模块中读取错误原因生成报告信息进行发送。
进一步地,所述网页资源抓取任务,进一步为按照配置的所述规则数据创建的对应数量的多线程网页资源抓取任务。
进一步地,所述下载任务,进一步为按照配置的所述规则数据创建的对应数量的多线程资源下载任务。
进一步地,所述抓取处理模块,进一步读取所述校验结果数据,若该校验结果数据反映所述资源数据完整,则将该资源数据进行存储;若该校验结果数据反映所述资源数据不完整,则遍历所述抓取操作中各任务执行时的状态,查找出导致所述资源数据不完整的任务状态,通过重启所述抓取操作从相对应的所述任务状态处进行重新抓取。
进一步地,所述规则数据,进一步为由资源URI、相关编码、抓取任务触发数据和/或规则模板数据构成的规则数据。
与现有技术相比,本申请所述的一种业务数据抓取方法和系统,达到了如下效果:
1)本申请的技术方案采用响应式设计,通过模板配置相应的信息即可获取业务数据,无需修改逻辑,极大提升了数据更新速度,同时有效降低了数据采集消耗的资源;
2)本申请包含有各类耦合度松散的模块,在使用时用户可以根据自己的需求进行装配,极大提升了互联网产品的便捷性和实用性;
3)本申请基于JAVA语言(一种高级编译语言),可以实现多平台的灵活移植,同时提供SOAP接口(一种传输协议),可用于多场景,适用性强。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例一所述的业务数据抓取方法的流程示意框图;
图2为本申请实施例二所述的业务数据抓取系统的结构框图;
图3为图2所述的业务数据抓取系统中所述抓取处理模块的具体结构框图。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
以下结合附图对本申请作进一步详细说明,但不作为对本申请的限定。
实施例一
如图1所示,是本申请实施例一所述的一种业务数据抓取方法流程。
步骤101,配置抓取操作时所需要的规则数据。
进一步地,所述规则数据包括:资源URI(Uniform Resource Identifier,资源标识符)、相关编码、抓取任务触发数据和/或规则模板等数据。配置完成后的所述规则数据存储于配置文件中。具体来说,规则数据可以是用户根据个人需求自行设定,也可以是所述互联网产品根据其更新状态的自动设定。需要说明的是,在实际应用中,抓取操作可以由处理芯片构成的抓取模块或抓取中心实现。
步骤102,读取所述规则数据,根据该规则数据建立网页资源抓取任务,将抓取的网页资源按照配置规则分类进行存储;针对抓取到的所述网页资源建立数据解析任务,对抓取的所述网页资源通过解析HTML文档获取需要的资源URI,同时过滤数据不完整的资源;建立资源下载任务,对解析获取到的所述资源URI使用断点续传的方式下载,获得所述资源数据。
进一步地,在读取所述规则数据之后,启动抓取操作,该抓取操作具体包括:建立网页资源抓取任务,该抓取任务可以使用多线程机制,即按照配置的规则数据创建对应数量的线程,将抓取的网页资源按照配置规则分类进行存储;建立数据解析任务,对抓取的所述网页资源通过解析HTML(Hypertext Markup Language,超文本标记语言)文档获取需要的资源URI、文字内容,同时过滤数据不完整的资源,如:URI不完整等;建立资源下载任务,该下载任务也使用多线程机制,同样按照配置的规则数据创建对应数量的线程,对解析获取到的资源URI使用断点续传的方式下载,获得所述资源数据,比如文件、图片等内容。
步骤103,根据采集到的所述资源数据的完整性进行存储或重新抓取,并在所述抓取操作无法正常结束时发送报告信息。
进一步地,所述资源数据可能出现抓取不完整的情况,则需要对不完整的所述资源数据重新抓取,因此,本步骤中所述根据采集到的资源数据的完整性进行存储或重新抓取,进一步为:判断所述资源数据的完整性,若所述资源数据完整,则将该资源数据进行存储;若所述资源数据不完整,则遍历所述抓取操作中各任务执行时的状态,查找出导致所述资源数据不完整的任务状态,通过重启所述抓取操作从相对应的所述任务状态处进行重新抓取。
在本步骤中,若在所述抓取操作无法正常结束时,发送具体的错误原因等报告信息给业务人员或技术人员,以便及时修复错误或做相关的调整;当然,也可以在所述抓取操作正常结束时发送状态报告信息给业务人员,从而使业务人员实时掌握所述抓取操作的状态。
在本实施例中,还可以包括:对DNS解析记录进行缓存处理,提高下载速度。
以一应用实例来说明本申请的方案。
首先,对资源URI、定时器数据、需要抓取的数据结构模板信息、报告信息的相关数据等规则数据进行配置。配置过程可由相应的配置模块实现,配置完成后的所述规则数据以配置文件的方式进行存储。
之后,读取所述配置文件中的所述规则数据,建立相应的网页资源抓取任务,对网页上的资源进行抓取,将抓取到的网页资源按照所述规则数据分类存储在可用的存储器上,如:内存或外部存储器;针对抓取到的所述网页资源建立数据解析任务,通过解析HTML文档获取需要的资源URI、文字内容等,并写入存储文件,同时过滤数据不完整的资源;针对解析得到的所述资源URI建立资源下载任务,从而下载所需的资源数据。需要说明的是,所述抓取任务和下载任务均采用多线程机制进行,从而可以节省大量的时间,同时在数据传输时均采用断点续传的方式,这样可以避免因故障中止所述抓取操作时造成的数据丢失。在执行上述抓取操作的同时记录所述抓取操作中各任务的执行状态,若出现某任务过程因故障中断(如在解析任务时发生了中断),则将该中断状态记录,在下一次执行所述抓取操作时,直接在中断处往下执行(即从解析任务开始执行)。
然后,检验所述资源数据的完整性,将完整的所述资源数据储存于存储器中;将不完整的所述资源数据进行重新抓取。
需要说明的是,在所述抓取操作过程不能正常结束时给业务人员发送记载错误原因的报告信息,以便业务人员及时修复错误或做相关的调整;在所述抓取操作正常结束时发送状态报告信息给业务人员,从而使业务人员实时掌握所述抓取操作的状态。
实施例二
如图2所示,是本申请实施例二所述的一种业务数据抓取系统,包括:配置模块201、抓取处理模块202、完整性校验模块203以及预警模块204;其中,
所述配置模块201,与所述抓取处理模块202相耦接,用于对抓取操作时所需要的规则数据进行配置,并将配置后的所述规则数据以配置文件的方式进行存储。所述规则数据包括:资源URI(Uniform Resource Identifier,资源标识符)、相关编码、抓取任务触发数据和/或规则模板等数据。
所述抓取处理模块202,与所述配置模块201、完整性校验模块203以及预警模块204相耦接,用于读取所述配置模块201中存储的所述配置文件,获得所述规则数据,根据该规则数据建立网页资源抓取任务,将抓取的网页资源按照配置规则分类进行存储;针对抓取到的所述网页资源建立数据解析任务,对抓取的所述网页资源通过解析HTML文档获取需要的资源URI,同时过滤数据不完整的资源;建立资源下载任务,对解析获取到的所述资源URI使用断点续传的方式下载,获得所述资源数据,将采集到的资源数据发送至所述完整性校验模块203,以及用于接收所述完整性校验模块203发送的所述校验结果数据,根据该校验结果数据进行存储或重新抓取。
所述完整性校验模块203,与所述抓取处理模块202相耦接,用于接收所述抓取处理模块202发送的所述资源数据,对该资源数据进行完整性校验,生成校验结果数据发送至所述抓取处理模块202。
所述预警模块204,与所述抓取处理模块202相耦接,用于实时监测所述抓取处理模块202的所述抓取操作状态,在所述抓取操作无法正常结束时从所述抓取处理模块202中读取错误原因生成报告信息进行发送。
进一步地,所述抓取处理模块202,进一步读取所述校验结果数据,若该校验结果数据反映所述资源数据完整,则将该资源数据进行存储;若该校验结果数据反映所述资源数据不完整,则遍历所述抓取操作中各任务执行时的状态,查找出导致所述资源数据不完整的任务状态,通过重启所述抓取操作从相对应的所述任务状态处进行重新抓取。
当然,上述抓取处理模块202中可以包括:抓取任务单元2021、解析任务单元2022以及下载任务单元2023,分别用于执行建立网页资源抓取任务、建立数据解析任务以及建立资源下载任务的操作;具体来说,
所述抓取任务单元2021,与所述配置模块201和解析任务单元2022相耦接,用于读取所述规则数据,根据该规则数据建立网页资源抓取任务,从相应的网页上抓取所述网页资源,并将抓取到的所述网页资源分类进行存储。
所述解析任务单元2022,与所述抓取任务单元2021和下载任务单元2023相耦接,用于建立数据解析任务,读取所述抓取模块2021存储的所述网页资源,对所述网页资源通过解析HTML(Hypertext Markup Language,超文本标记语言)文档获取资源URI,同时过滤数据不完整的资源,将该资源URI发送至所述下载任务单元2023。
所述下载任务单元2023,与所述解析任务单元2022和预警模块203相耦接,用于建立下载任务,对所述解析任务单元2022发送的所述资源URI使用断点续传的方式下载,获得所述资源数据。
在本实施例中,所述业务数据抓取系统还可以包括:DNS缓存模块和任务自动恢复模块;其中,
所述DNS缓存模块,设置于所述下载任务单元2023中,用于对DNS解析记录进行缓存处理,提高下载速度。
所述任务自动恢复模块,与所述抓取任务单元2021、解析任务单元2022以及下载任务单元2023相耦接,用于当因故障导致抓取任务、解析任务以及下载任务终止时,记录任务状态,在下一次启动时获取未完成任务的任务状态,继续进行未完成的任务。
由于方法部分已经对本申请实施例一进行了详细描述,这里对实施例二中涉及的系统与方法对应部分的展开描述省略,不再赘述。对于系统中具体内容的描述可参考实施例一所述方法的内容,这里不再具体限定。
与现有技术相比,本申请所述的一种业务数据抓取方法和系统,达到了如下效果:
1)本申请的技术方案采用响应式设计,通过模板配置相应的信息即可获取业务数据,无需修改逻辑,极大提升了数据更新速度,同时有效降低了数据采集消耗的资源;
2)本申请包含有各类耦合度松散的模块,在使用时用户可以根据自己的需求进行装配,极大提升了互联网产品的便捷性和实用性;
3)本申请基于JAVA语言(一种高级编译语言),可以实现多平台的灵活移植,同时提供SOAP接口(一种传输协议),可用于多场景,适用性强。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。