用于爬虫的数据存储方法及装置与流程

文档序号:11154193阅读:584来源:国知局
用于爬虫的数据存储方法及装置与制造工艺

本发明涉及互联网领域,具体而言,涉及一种用于爬虫的数据存储方法及装置。



背景技术:

爬虫程序是一种常见的用于收集网络数据的机器人程序。往往由于需要收集的网络数据众多,所以单个爬虫程序是无法胜任的。

目前,为了提升对网络数据进行收集的收集速度,出现了分布式爬虫系统。其中,分布式爬虫系统通过多台部署有爬虫程序的服务器对网络数据进行协作爬取。在分布式爬虫系统中,为了使多台服务器协作爬取,通常会在系统中设置任务队列和存储队列。

在实际应用当中,可以预先将配置好的包含有需要爬取的网络地址和爬取行为规则的爬取任务写入到任务队列当中。在通过分布式爬虫系统进行爬取时,每台部署有爬虫程序的服务器会依次从任务队列中获取爬取任务,并根据爬取任务进行爬取。当部署有爬虫程序的服务器获取到爬取结果后,将爬取结果发送至用于存储爬取结果的存储队列当中。最后,再由用于存储数据的存储程序将存储队列中的爬取结果存放至指定位置当中。

在上述分布式爬虫系统中存在如下缺点:

1、当存储队列中积压数据过多,而导致存储程序崩溃后,将导致数据满载,使分布式爬虫系统无法正常运行。

2、将爬取结果直接存储数据库会带来性能损耗,将爬取结果直接存储至存储队列中,会因内存容量有限,影响系统稳定性。

针对上述现有技术中由于存储队列中数据量过大,导致的分布式爬虫系统运行稳定性差的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种用于爬虫的数据存储方法及装置,以至少解决由于存储 队列中数据量过大,导致的分布式爬虫系统运行稳定性差的技术问题。

根据本发明实施例的一个方面,提供了一种用于爬虫的数据存储方法,包括:将爬虫的爬取结果的文件大小与预先设置的阈值进行比较;当爬取结果的文件大小大于或等于阈值时,将爬取结果存储至第一存储位置;生成与爬取结果对应的唯一标识信息,其中,唯一标识信息用于对存储于第一存储位置的爬取结果进行唯一索引;将唯一标识信息发送至存储队列。

进一步地,在将唯一标识信息发送至存储队列之后,方法还包括:通过存储程序依次从存储队列中读取待存储的数据内容;当存储程序在存储队列中读取到唯一标识信息时,存储程序从第一存储位置获取与唯一标识信息对应的爬取结果;通过存储程序将与唯一标识信息对应的爬取结果发送至第二存储位置。

进一步地,生成与爬取结果对应的唯一标识信息包括:对爬取结果进行压缩处理,得到压缩数据文件;根据压缩数据文件,生成与压缩数据文件对应的唯一标识信息。

进一步地,在通过存储程序将与唯一标识信息对应的爬取结果发送至第二存储位置之前,方法还包括:对压缩数据文件进行解压处理,得到爬取数据文件。

进一步地,将唯一标识信息存储至存储队列包括:获取爬取到的爬取结果的爬取时间;根据爬取时间的时间顺序,将爬取结果和/或唯一标识信息依次发送至存储队列。

根据本发明实施例的另一方面,还提供了一种用于爬虫的数据存储装置,包括:比较模块,用于将爬虫的爬取结果的文件大小与预先设置的阈值进行比较;存储模块,用于当爬取结果的文件大小大于或等于阈值时,将爬取结果存储至第一存储位置;生成模块,用于生成与爬取结果对应的唯一标识信息,其中,唯一标识信息用于对存储于第一存储位置的爬取结果进行唯一索引;第一发送模块,用于将唯一标识信息发送至存储队列。

进一步地,装置还包括:读取模块,用于通过存储程序依次从存储队列中读取待存储的数据内容;获取模块,用于当存储程序在存储队列中读取到唯一标识信息时,存储程序从第一存储位置获取与唯一标识信息对应的爬取结果;第二发送模块,用于通过存储程序将与唯一标识信息对应的爬取结果发送至第二存储位置。

进一步地,生成模块包括:子压缩模块,用于对爬取结果进行压缩处理,得到压缩数据文件;子生成模块,用于根据压缩数据文件,生成与压缩数据文件对应的唯一标识信息。

进一步地,装置还包括:解压模块,用于对压缩数据文件进行解压处理,得到爬 取数据文件。

进一步地,第二存储模块包括:子获取模块,用于获取爬取到的爬取结果的爬取时间;以及子存储模块,用于根据爬取时间的时间顺序,将爬取结果和/或唯一标识信息依次存储至存储队列。

在本发明实施例中,采用将爬虫的爬取结果的文件大小与预先设置的阈值进行比较;当爬取结果的文件大小大于或等于阈值时,将爬取结果存储至第一存储位置;生成与爬取结果对应的唯一标识信息,其中,唯一标识信息用于对存储于第一存储位置的爬取结果进行唯一索引;将唯一标识信息发送至存储队列的方式,达到了减小存储队列占用内存的空间的目的,从而实现了提高分布式爬虫系统稳定性的技术效果,进而解决了由于存储队列中数据量过大,导致的分布式爬虫系统运行稳定性差的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种用于爬虫的数据存储方法的流程示意图;

图2是根据本发明实施例的一种优选的用于爬虫的数据存储方法的流程示意图;

图3是根据本发明实施例的一种用于爬虫的数据存储装置的示意图;

图4是根据本发明实施例的一种优选的用于爬虫的数据存储装置的示意图;以及

图5是根据本发明实施例的另一种优选的用于爬虫的数据存储装置的示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在 这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种用于爬虫的数据存储方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的用于爬虫的数据存储方法的流程示意图,如图1所示,该方法包括如下步骤:

步骤S21,将爬虫的爬取结果的文件大小与预先设置的阈值进行比较。

步骤S23,当爬取结果的文件大小大于或等于阈值时,将爬取结果存储至第一存储位置。

步骤S25,生成与爬取结果对应的唯一标识信息,其中,唯一标识信息用于对存储于第一存储位置的爬取结果进行唯一索引。

步骤S27,将唯一标识信息发送至存储队列。

具体的,通过上述步骤S21至步骤S27,首先对分布式爬虫系统获取到的爬取数据文件的文件容量进行判断,当文件容量小于预先设置的阈值时,将爬取数据文件直接存储至存储队列当中,等待上传至服务器。当文件容量大于或等于预先设置的阈值时,生成与爬取数据文件唯一对应的索引信息。将爬取数据文件存储值预先设置的第一存储位置,将与其对应的索引信息存储至存储队列当中。达到了减小存储队列占用内存的空间的目的,从而实现了提高分布式爬虫系统运行稳定性的技术效果,进而解决了由于存储队列中数据量过大,导致的分布式爬虫系统运行稳定性差的技术问题。

作为一种可选的实施方式,在实际应用当中,以分布式爬虫系统为例进行说明。在分布式爬虫系统中,为了均衡各台爬虫服务器的负载,通常会设置用于派发爬取任务的任务队列和用于临时存储爬取数据文件的存储队列。为了避免存储队列中因数据积压,而导致的存储容量不足的问题,可以预先设置一个缓存服务器。当分布式爬虫系统获取到爬取数据文件后,将爬取数据文件的文件容量与预先设置的阈值进行比对,判断爬取数据文件是否需要转存至缓存服务器当中。当确定爬取数据文件大于阈值时,生成与其对应的索引信息,并将爬取数据文件转存至缓存服务器当中,将索引信息存储至存储队列当中。

作为一种可选的实施方式,当第一存储位置为FTP服务器时,在索引信息中,至少包括与爬取数据文件对应的文件索引以及与爬取数据文件对应的存储路径。当然,第一存储位置还可以包括除FTP服务器以外任意一种用于数据存储的服务器类型或本地存储,此处不做赘述。

作为一种可选的实施方式,如图2所示,在步骤S27在将唯一标识信息发送至存储队列之后,上述方法还包括:

步骤S28,通过存储程序依次从存储队列中读取待存储的数据内容。

步骤S30,当存储程序在存储队列中读取到唯一标识信息时,存储程序从第一存储位置获取与唯一标识信息对应的爬取结果。

步骤S32,通过存储程序将与唯一标识信息对应的爬取结果发送至第二存储位置。

具体的,通过步骤S28至步骤S32,通过存储程序依次对存储队列中的数据内容进行读取。在读取过程中,首先对读取到的数据内容的类型进行判断。当确定数据内容为爬取到的数据文件时,直接将数据文件发送至第二存储位置当中进行存储。当确定数据内容为唯一标识信息时,通过唯一标识信息中的存储路径以及文件索引,从第一存储位置获取到与索引信息对应的数据文件,并将该数据文件发送至第二存储位置当中进行存储。

其中,索引信息可以为爬取到的数据文件的文件名称,也可以是爬取到的数据文件获取的时间信息,当然还可以是根据爬取数据文件的名称,通过算法计算得到的十六位进制的文件索引。此处不对索引信息的具体实施方式进行具体限定。

作为一种可选的实施方式,在步骤S25生成与爬取结果对应的唯一标识信息中,步骤可以包括:

步骤S251,对爬取结果进行压缩处理,得到压缩数据文件。

步骤S253,根据压缩数据文件,生成与压缩数据文件对应的唯一标识信息。

具体的,为了进一步降低对存储空间的需求,通过步骤S251至步骤S253对文件容量大于阈值的爬取数据文件进行压缩处理,并根据压缩得到的压缩数据文件生成对应的索引信息。进而将压缩得到的压缩数据文件存储至第一存储位置,将索引信息存储至存储队列当中。

作为一种可选的实施方式,在步骤S32通过存储程序将与唯一标识对应的爬取结果发送至第二存储位置之前,上述方法还可以包括:

步骤S31,对压缩数据文件进行解压处理,得到爬取数据文件。

具体的,在将爬取数据文件存储至第二存储位置之前,通过步骤S34对存储于第一存储位置的压缩数据文件进行解压处理,从而得到原始的爬取数据文件。

作为一种可选的实施方式,在步骤S27将唯一标识信息存储至存储队列中,步骤可以包括:

步骤S271,获取爬取到的爬取结果的爬取时间。

步骤S273,根据爬取时间的时间顺序,将爬取结果和/或唯一标识信息依次发送至存储队列。

具体的,通过步骤S271至步骤S273,按照爬取数据文件爬取时间的时间顺序,依次将索引信息存储至存储队列当中。

在实际应用当中,以分布式爬虫系统为例进行说明。在分布式爬虫系统中,通常会包含有多台爬虫服务器对网络数据进行协同爬取。为了保证爬取到的爬取数据文件可以按顺序存储至数据库当中,可以设置用于缓存爬取数据文件的带存储队列。各台爬虫服务器,可以按照获取到爬取数据文件的获取时间,依次将爬取到的爬取数据文件或者索引信息依次存储至存储队列当中。

作为一种优选的实施方式,对爬取数据文件进行筛选的过程,以及将存储队列中的内容上传至数据库中的过程,分别进行说明。

其中,在对爬取数据文件进行筛选的过程中,步骤可以包括:

步骤S1,获取爬取任务。

步骤S2,分布式爬虫系统中的爬虫服务器在爬取得到爬取数据文件。

步骤S3,将爬取数据文件与配置信息中的最大文件大小的阈值进行比对,如果超过阈值则对爬取数据文件进行压缩。

步骤S4,根据压缩后的爬取数据文件生成与爬取数据文件唯一对应的ID标识,并将ID标识记录在待存储任务信息当中。然后,将包含有ID标识的待存储任务信息发送至存储消息队列中及您修改存储。最后,将压缩后的爬取数据文件上传至FTP服务器进行暂存处理。

在将存储队列中的内容上传至数据库中的过程中,步骤可以包括:

步骤S1,读取存储队列中的待存储任务信息。

步骤S2,对读取的待存储任务信息的类型进行判断。

步骤S3,当待存储任务信息的类型ID标识时,从FTP服务器中下载并对爬取数据文件进行解压处理。

步骤S4,将解压后的爬取数据文件存储至数据库当中。

步骤S5,否则,当待存储任务信息的类型为爬取数据文件时,直接将该爬取数据文件存储至数据库当中。

本发明实施例还提供了一种用于爬虫的数据存储装置。其中,需要说明的是,本发明实施例的用于爬虫的数据存储装置可以用于执行本发明实施例所提供的用于爬虫的数据存储方法,本发明实施例的用于爬虫的数据存储方法也可以通过本发明实施例所提供的用于爬虫的数据存储装置来执行。

图3是根据本发明实施例的用于爬虫的数据存储装置的结构示意图。如图3所示,该装置包括:比较模块21、存储模块23、生成模块25和第一发送模块27。

其中,比较模块21,用于将爬虫的爬取结果的文件大小与预先设置的阈值进行比较;存储模块23,用于当爬取结果的文件大小大于或等于阈值时,将爬取结果存储至第一存储位置;生成模块25,用于生成与爬取结果对应的唯一标识信息,其中,唯一标识信息用于对存储于第一存储位置的爬取结果进行唯一索引;第一发送模块27,用于将唯一标识信息发送至存储队列。

具体的,通过上述比较模块21、存储模块23、生成模块25和第一发送模块27,首先对分布式爬虫系统获取到的爬取数据文件的文件容量进行判断,当文件容量小于预先设置的阈值时,将爬取数据文件直接存储至存储队列当中,等待上传至服务器。当文件容量大于或等于预先设置的阈值时,生成与爬取数据文件唯一对应的索引信息。将爬取数据文件存储值预先设置的第一存储位置,将与其对应的索引信息存储至存储队列当中。达到了减小存储队列占用内存的空间的目的,从而实现了提高分布式爬虫系统运行稳定性的技术效果,进而解决了由于存储队列中数据量过大,导致的分布式爬虫系统运行稳定性差的技术问题。

作为一种可选的实施方式,在实际应用当中,以分布式爬虫系统为例进行说明。在分布式爬虫系统中,为了均衡各台爬虫服务器的负载,通常会设置用于派发爬取任务的任务队列和用于临时存储爬取数据文件的存储队列。为了避免存储队列中因数据积压,而导致的存储容量不足的问题,可以预先设置一个缓存服务器。当分布式爬虫系统获取到爬取数据文件后,将爬取数据文件的文件容量与预先设置的阈值进行比对,判断爬取数据文件是否需要转存至缓存服务器当中。当确定爬取数据文件大于阈值时, 生成与其对应的索引信息,并将爬取数据文件转存至缓存服务器当中,将索引信息存储至存储队列当中。

作为一种可选的实施方式,当第一存储位置为FTP服务器时,在索引信息中,至少包括与爬取数据文件对应的文件索引以及与爬取数据文件对应的存储路径。当然,第一存储位置还可以包括除FTP服务器以外任意一种用于数据存储的服务器类型或本地存储,此处不做赘述。

作为一种可选的实施方式,如图4所示,上述装置还可以包括:读取模块28、获取模块30和第二发送模块32。

其中,读取模块28,用于通过存储程序依次从存储队列中读取待存储的数据内容;

获取模块30,用于当存储程序在存储队列中读取到唯一标识信息时,存储程序从第一存储位置获取与唯一标识信息对应的爬取结果;

第二发送模块32,用于通过存储程序将与唯一标识信息对应的爬取结果发送至第二存储位置。

具体的,通过上述读取模块28、获取模块30和第二发送模块32,通过存储程序依次对存储队列中的数据内容进行读取。在读取过程中,首先对读取到的数据内容的类型进行判断。当确定数据内容为爬取到的数据文件时,直接将数据文件发送至第二存储位置当中进行存储。当确定数据内容为唯一标识信息时,通过唯一标识信息中的存储路径以及文件索引,从第一存储位置获取到与索引信息对应的数据文件,并将该数据文件发送至第二存储位置当中进行存储。

其中,索引信息可以为爬取到的数据文件的文件名称,也可以是爬取到的数据文件获取的时间信息,当然还可以是根据爬取数据文件的名称,通过算法计算得到的十六位进制的文件索引。此处不对索引信息的具体实施方式进行具体限定。

作为一种可选的实施方式,上述生成模块25包括:子压缩模块251和子生成模块253。

其中,子压缩模块251,用于对爬取结果进行压缩处理,得到压缩数据文件;

子生成模块253,用于根据压缩数据文件,生成与压缩数据文件对应的唯一标识信息。

具体的,为了进一步降低对存储空间的需求,通过上述子压缩模块251和子生成模块253对文件容量大于阈值的爬取数据文件进行压缩处理,并根据压缩得到的压缩 数据文件生成对应的索引信息。进而将压缩得到的压缩数据文件存储至第一存储位置,将索引信息存储至存储队列当中。

作为一种可选的实施方式,如图5所示,上述装置还可以包括:解压模块31。

其中,解压模块31,用于对压缩数据文件进行解压处理,得到爬取数据文件。

具体的,在将爬取数据文件存储至第二存储位置之前,通过上述解压模块31对存储于第一存储位置的压缩数据文件进行解压处理,从而得到原始的爬取数据文件。

作为一种可选的实施方式,在上述存储模块27中可以包括:子获取模块271和子存储模块273。

其中,子获取模块271,用于获取爬取到的爬取结果的爬取时间;

子存储模块273,用于根据爬取时间的时间顺序,将爬取结果和/或唯一标识信息依次存储至存储队列。

具体的,通过上述子获取模块271和子存储模块273,按照爬取数据文件爬取时间的时间顺序,依次将索引信息存储至存储队列当中。

在实际应用当中,以分布式爬虫系统为例进行说明。在分布式爬虫系统中,通常会包含有多台爬虫服务器对网络数据进行协同爬取。为了保证爬取到的爬取数据文件可以按顺序存储至数据库当中,可以设置用于缓存爬取数据文件的带存储队列。各台爬虫服务器,可以按照获取到爬取数据文件的获取时间,依次将爬取到的爬取数据文件或者索引信息依次存储至存储队列当中。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到 多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1