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

一种基于自学习的数据爬取方法及装置

文献发布时间:2023-06-19 09:35:27


一种基于自学习的数据爬取方法及装置

技术领域

本发明涉及互联网技术领域,尤其涉及一种基于自学习的数据爬取方法及装置。

背景技术

在基于网络爬虫爬取网站中的数据时,现有技术中会依据网站的网站结构编写对应的爬虫程序,基于该爬虫程序爬取网站中的对应数据。

但是,网站结构不是固定不变的,可能会不定期的进行调整,一旦网站结构调整,之前的爬虫程序就无法爬取调整后网站中的相关数据,造成数据爬取失败,只能重新开发爬虫程序,造成数据爬取工作的中断。

发明内容

有鉴于此,本发明提供了一种基于自学习的数据爬取方法及装置,用以解决现有网站结构不是固定不变的,可能会不定期的进行调整,一旦网站结构调整,之前的爬虫程序就无法爬取调整后网站中的相关数据,造成数据爬取失败,只能重新开发爬虫程序,造成数据爬取工作的中断的问题。具体方案如下:

一种基于自学习的数据爬取方法,预先构建包括网站结构和爬虫程序模板对应关系的网站结构数据库,所述对应关系至少为一个,所述方法包括:

在接收到对当前网站的爬取请求时,获取所述当前网站的网站结构;

遍历所述网站结构数据库,基于所述对应关系查找与所述网站结构匹配的第一目标爬虫程序模板;

基于所述第一目标爬虫程序模板对所述当前网站进行爬取;

在所述网站结构改变导致所述当前网站爬取异常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板;

基于所述第二目标爬虫程序模板对所述当前网站进行爬取。

上述的方法,可选的,还包括:

若基于所述第二目标爬虫程序模板对所述当前网站爬取异常时,提示对所述当前网站的爬虫程序进行人工修订;

获取修订结果,基于所述修订结果对所述网站结构数据库进行更新。

上述的方法,可选的,还包括:

对所述当前网站进行Ping操作,检测所述当前网站是否运行异常,和/或,对所述第二目标爬虫程序的应用进行检测。

上述的方法,可选的,还包括:

在所述网站结构数据库中不存在所述第一目标爬虫程序模板或所述第二目标爬虫程序模板时,基于预设匹配规则,将所述网站结构数据库中包括的各个爬虫程序模板进行组合,得到各个待测试爬虫程序模板;

基于所述各个待测试爬虫程序模板对所述当前网站进行爬取,采用蚁群算法选取第三目标爬虫程序模板;

基于所述第三目标爬虫程序模板对所述当前网站进行爬取。

上述的方法,可选的,还包括:

获取所述当前网站的当前网站结构;

将所述第三目标爬虫程序模板与所述当前网站结构的对应关系存储至所述网站结构数据库。

一种基于自学习的数据爬取装置,预先构建包括网站结构和爬虫程序模板对应关系的网站结构数据库,所述对应关系至少为一个,所述装置包括:

第一获取模块,用于在接收到对当前网站的爬取请求时,获取所述当前网站的网站结构;

第一查找模块,用于遍历所述网站结构数据库,基于所述对应关系查找与所述网站结构匹配的第一目标爬虫程序模板;

第一爬取模块,用于基于所述第一目标爬虫程序模板对所述当前网站进行爬取;

第二查找模块,用于在所述网站结构改变导致所述当前网站爬取异常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板;

第二爬取模块,用于基于所述第二目标爬虫程序模板对所述当前网站进行爬取。

上述的装置,可选的,还包括:

提示模块,用于若基于所述第二目标爬虫程序模板对所述当前网站爬取异常时,提示对所述当前网站的爬虫程序进行人工修订;

获取和更新模块,用于获取修订结果,基于所述修订结果对所述网站结构数据库进行更新。

上述的装置,可选的,还包括:

检测模块,用于对所述当前网站进行Ping操作,检测所述当前网站是否运行异常,和/或,对所述第二目标爬虫程序的应用进行检测。

上述的装置,可选的,还包括:

组合模块,用于在所述网站结构数据库中不存在所述第一目标爬虫程序模板或所述第二目标爬虫程序模板时,基于预设匹配规则,将所述网站结构数据库中包括的各个爬虫程序模板进行组合,得到各个待测试爬虫程序模板;

选取模块,用于基于所述各个待测试爬虫程序模板对所述当前网站进行爬取,采用蚁群算法选取第三目标爬虫程序模板;

第三爬取模块,用于基于所述第三目标爬虫程序模板对所述当前网站进行爬取。

上述的装置,可选的,还包括:

第二获取模块,用于获取所述当前网站的当前网站结构;

存储模块,用于将所述第三目标爬虫程序模板与所述当前网站结构的对应关系存储至所述网站结构数据库。

与现有技术相比,本发明包括以下优点:

本发明公开了一种基于自学习的数据爬取方法及装置,预先构建包括网站结构和爬虫程序模板对应关系的网站结构数据库,所述对应关系至少为一个,所述方法包括:在接收到对当前网站的爬取请求时,获取所述当前网站的网站结构;遍历所述网站结构数据库,基于所述对应关系查找与所述网站结构匹配的第一目标爬虫程序模板;基于所述第一目标爬虫程序模板对所述当前网站进行爬取;在所述网站结构改变导致所述当前网站爬取异常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板;基于所述第二目标爬虫程序模板对所述当前网站进行爬取。上述方法,预先建立网站结构数据库,当网站结构改变时依旧可以依据网站结构数据库中存储的网站结构与爬虫程序模板的对应关系,查找到对应的爬虫程序模板,不需要重新开发程序,不会导致爬取数据中断。

附图说明

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

图1为本申请实施例公开的一种基于自学习的数据爬取方法流程图;

图2为本申请实施例公开的一种基于自学习的数据爬取方法又一流程图;

图3为本申请实施例公开的一种基于自学习的数据爬取方法又一流程图;

图4为本申请实施例公开的一种基于自学习的数据爬取装置结构框图。

具体实施方式

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

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

本发明公开了一种基于自学习的数据爬取方法及装置,应用于对网站数据的爬取过程中,现有技术中,网站数据收录平台使用的爬取程序,只能针对对应的网站结构进行爬取,爬虫程序与网站结构存在对应关系,当由于网站更新导致网站结构改变时,造成网站信息爬取失败,无法再进行信息收集,影响了业务系统的使用,如果需要解决此问题就需要重新开发修改程序,造成数据爬取工作的中断,发明人研究发现,网站结构变化后爬虫无法识别主要原因是html是一种类似xml的结构,每个节点有专门的xpath路径,当标签的xpath路径变化后,传统爬虫无法自动实现xpath的调整。基于上述的问题,本发明提供了一种基于自学习的数据爬取方法,预先构建包括网站结构和爬虫程序模板对应关系的网站结构数据库,所述对应关系至少为一个,其中,所述网站结构数据库通过大量历史爬取的数据来训练获取,并将网站识别方法和经验也一并入库,网站识别方法和经验基于训练过程中总结得到。网站结构包括:jquery,bootstrap,vue,react,angular等,所述爬虫程序模板包括:xpath信息。优选的,根据具体的业务需求,在进行网站爬取时,将爬虫程序部署在服务器上,此服务器是为爬虫程序部署提供基础环境,与网站无直接关系,爬虫程序也可在虚拟环境或者云环境部署,本发明实施例中对爬虫程序的部署形式不进行限定。

所述爬取方法的执行流程如图1所示,包括步骤:

S101、在接收到对当前网站的爬取请求时,获取所述当前网站的网站结构;

本发明实施例中,在接收到所述当前网站的爬取请求时,解析所述当前网,获取所述当前网站的网站结构,其中,获取网站结构可以通过在指定位置获取、依据所述当前网站的中标识确定或者其它优选的获取方法,本发明实施例中对所述网站结构的具体获取方式不进行限定。

S102、遍历所述网站结构数据库,基于所述对应关系查找与所述网站结构匹配的第一目标爬虫程序模板;

本发明实施例中,依据所述网站结构,遍历所述网站结构数据库,查找所述网站数据库中是否存在与所述网站结构相同的目标网站结构,若存在,基于所述对应关系,确定与所述目标网站结构对应的第一目标爬虫程序模板。

S103、基于所述第一目标爬虫程序模板对所述当前网站进行爬取;

本发明实施例中,运行所述第一目标爬虫程序,输入网站地址,开始对网站数据进行爬取。爬取过程如图2所示,新建采集任务,将需要采集的网站的网址输入任务中,基于所述网站结构库中选取的第一目标爬虫程序模板(爬虫),确认爬虫采集周期后直接进行对网站1、网站2…和网站N进行爬取,其中,所述采集周期可以基于经验或者具体情况进行设定,本发明实施例中,对所述采集周期的具体取值不进行限定。

S104、在所述网站结构改变导致所述当前网站爬取异常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板;

本发明实施例中,由于网站会不定期的进行更新或者调整,优选的,每间隔预设时长对所述当前网站的爬取结果进行验证,若爬取结果正确,说明信息爬取正常,继续进行循环爬取,不断强化训练,提高爬虫程序的智能化及准确度,若爬取结果错误或者存在缺失,说明信息爬取异常,说明所述当前网站的网站结构有可能发生改变。或者所述第一目标爬虫程序模板异常或者所述当前网站运行异常,基于上述的几种可能情况,优选的,对所述当前网站进行Ping操作,检测所述当前网站是否运行异常,和/或,对所述第一目标爬虫程序的应用进行检测,已排除所述第一目标爬虫程序模板异常或者所述当前网站运行异常,若所述第一目标爬虫程序模板和/或所述当前网站运行异常时,可以通过重启的方式进行恢复,在排除所述第一目标爬虫程序模板和所述当前网站均正常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板,其中,具体的匹配过程与所述第一目标爬虫程序模板的匹配过程相同,在此不再赘述。

S105、基于所述第二目标爬虫程序模板对所述当前网站进行爬取。

本发明实施例中,基于所述第二目标爬虫程序模板对所述当前网站进行爬取,所述第二目标爬虫程序对所述当前网站的爬取过程与所述第一目标爬虫程序对所述当前网站的爬取过程相同,在此不再赘述。

进一步,若基于所述第二目标爬虫程序模板对所述当前网站爬取正确,重新进入所述当前网站信息爬取流程。当基于所述第二目标爬虫程序模板对所述当前网站爬取异常时,通过人工方式对所述第二目标爬虫程序模板进行修订,本发明实施例中对具体的修订方法不进行限定,获取修订结果,所述修订结果为网站结构与对应的爬虫程序模板的对应关系,将该对应关系发送给所述网站结构数据库,对所述网站结构数据库进行更新。同时再次进入网站信息爬取流程。将爬取的数据进行入库存储后,完成数据爬取流程处理。

本发明公开了一种基于自学习的数据爬取方法,预先构建包括网站结构和爬虫程序模板对应关系的网站结构数据库,所述对应关系至少为一个,所述方法包括:在接收到对当前网站的爬取请求时,获取所述当前网站的网站结构;遍历所述网站结构数据库,基于所述对应关系查找与所述网站结构匹配的第一目标爬虫程序模板;基于所述第一目标爬虫程序模板对所述当前网站进行爬取;在所述网站结构改变导致所述当前网站爬取异常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板;基于所述第二目标爬虫程序模板对所述当前网站进行爬取。上述方法,预先建立网站结构数据库,当网站结构改变时依旧可以依据网站结构数据库中存储的网站结构与爬虫程序模板的对应关系,查找到对应的爬虫程序模板,不需要重新开发程序,不会导致爬取数据中断。

本发明实施例中,基于上述的爬取方法实现的自学习爬虫数据解析流程如图3所示,首先进行基础爬虫程序开发,实现对常用架构网站的网站数据采集功能,通过对网站信息和网络信息的爬取进行自学习,当网络信息爬取正常时,重新进行循环爬取,不断强化训练,提高爬虫程序的智能化及准确度。当出现爬取异常情况时,爬虫程序通过自主匹配网站结构库及自动修正的方式进行优化调整,调整完成后对爬虫程序进行爬取验证,当爬取正确时,重新进入网站信息爬取流程。当爬虫验证异常时,通过人工方式对爬虫进行修订,并对网站结构库进行更新。同时再次进入网站信息爬取流程。

进一步的,在进行爬取验证时,若所述网站结构数据库中不存在所述第一目标爬虫程序模板或所述第二目标爬虫程序模板时,无法通过网站结构库中的信息进行匹配,同时也无法通过爬虫自动修正后对网站识别爬取,或者爬取部分字段参数时失败,对于这些无法匹配识别的网站,,运行程序自学习能力,结合类似网站相关经验进行网站信息收集试探,具体过程是通过对网站架构识别,使用类似网站识别方案,逐个对应识别测试,同时自学习能力可以使用不同方法对网站进行识别,基于预设匹配规则,将所述网站结构数据库中包括的各个爬虫程序模板进行组合,得到各个待测试爬虫程序模板,其中。所述预设的匹配规则可以为两两组合、或者将所述网站结构数据中的各个爬虫程序模板模块化,随机进行组合等匹配方式,本发明实施例中,对所述预设匹配规则不进行限定。基于所述各个待测试爬虫程序模板对所述当前网站进行爬取,采用蚁群算法选取第三目标爬虫程序模板,当发现某个方法可以识别到网站时,将此方法进行经验积累入库,再次遇到相似网站时,将会优先使用此方法进行网站识别爬取。经过长时间的对未知网站的识别爬取,爬虫程序的自学习能力会不断增强,对网站字段的识别越准确。

本发明实施例中,首先将爬虫程序中对市面上网站常用的网站结构内置到爬虫程序,网站常用前端架构包括jquery,bootstrap,vue,react,angular等,内置过程需要实现各种架构的兼容,爬虫可以采用内置html渲染引擎来实现,多架构兼容,然后通过大量的强化训练、自学习,使爬虫程序不在通过网站标签进行读取采集,不会因为网站变化而出现无法识别问题,网站变化后爬虫无法识别主要原因是html是一种类似xml的结构,每个节点有专门的xpath路径,当标签的xpath路径变化后,传统爬虫无法自动实现xpath的调整。通过智能化方式来识别和计算网站特征,从而实现爬虫程序自我调整识别的能力。

通过爬虫自学习技术识别的网站,可减少当目标网站发生变更后,代码人工进行调整的频率,降低信息爬取的后期运维成本。同时基于这一理念,随着对新产生的网站结构库的不断丰富,爬虫的自学习能力也会更强,准确度越高。

基于上述的一种基于自学习的数据爬取方法,本发明实施例中,还提供了一种基于自学习的数据爬取装置,所述爬取装置中预先构建包括网站结构和爬虫程序模板对应关系的网站结构数据库,所述对应关系至少为一个,所述爬取装置的结构框图如图4所示,包括:

第一获取模块201、第一查找模块202、第一爬取模块203、第二查找模块204和第二爬取模块205。

其中,

所述第一获取模块201,用于在接收到对当前网站的爬取请求时,获取所述当前网站的网站结构;

所述第一查找模块202,用于遍历所述网站结构数据库,基于所述对应关系查找与所述网站结构匹配的第一目标爬虫程序模板;

所述第一爬取模块203,用于基于所述第一目标爬虫程序模板对所述当前网站进行爬取;

所述第二查找模块204,用于在所述网站结构改变导致所述当前网站爬取异常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板;

所述第二爬取模块205,用于基于所述第二目标爬虫程序模板对所述当前网站进行爬取。

本发明公开了一种基于自学习的数据爬取装置,预先构建包括网站结构和爬虫程序模板对应关系的网站结构数据库,所述对应关系至少为一个,所述方法包括:在接收到对当前网站的爬取请求时,获取所述当前网站的网站结构;遍历所述网站结构数据库,基于所述对应关系查找与所述网站结构匹配的第一目标爬虫程序模板;基于所述第一目标爬虫程序模板对所述当前网站进行爬取;在所述网站结构改变导致所述当前网站爬取异常时,继续匹配所述网站结构数据库查找与所述当前网站匹配的第二目标爬虫程序模板;基于所述第二目标爬虫程序模板对所述当前网站进行爬取。上述装置,预先建立网站结构数据库,当网站结构改变时依旧可以依据网站结构数据库中存储的网站结构与爬虫程序模板的对应关系,查找到对应的爬虫程序模板,不需要重新开发程序,不会导致爬取数据中断。

本发明实施例中,所述爬取装置还包括:

提示模块205和获取和更新模块206。

其中,

所述提示模块205,用于若基于所述第二目标爬虫程序模板对所述当前网站爬取异常时,提示对所述当前网站的爬虫程序进行人工修订;

所述获取和更新模块206,用于获取修订结果,基于所述修订结果对所述网站结构数据库进行更新。

本发明实施例中,所述爬取装置还包括:检测模块207。

其中,

所述检测模块207,用于对所述当前网站进行Ping操作,检测所述当前网站是否运行异常,和/或,对所述第二目标爬虫程序的应用进行检测。

本发明实施例中,所述爬取装置还包括:组合模块208、选取模块209和所述第三爬取模块210。

其中,

所述组合模块208,用于在所述网站结构数据库中不存在所述第一目标爬虫程序模板或所述第二目标爬虫程序模板时,基于预设匹配规则,将所述网站结构数据库中包括的各个爬虫程序模板进行组合,得到各个待测试爬虫程序模板;

所述选取模块209,用于基于所述各个待测试爬虫程序模板对所述当前网站进行爬取,采用蚁群算法选取第三目标爬虫程序模板;

所述第三爬取模块210,用于基于所述第三目标爬虫程序模板对所述当前网站进行爬取。

本发明实施例中,所述爬取装置还包括:

第二获取模块211和存储模块212。

第二获取模块,用于获取所述当前网站的当前网站结构;

存储模块,用于将所述第三目标爬虫程序模板与所述当前网站结构的对应关系存储至所述网站结构数据库。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上对本发明所提供的一种基于自学习的数据爬取方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种基于自学习的数据爬取方法及装置
  • 一种基于多数据源的论文数据爬取方法及系统
技术分类

06120112223126