一种基于对象存储的爬虫结果存储方法及装置与流程

文档序号:18884612发布日期:2019-10-15 20:41阅读:257来源:国知局
一种基于对象存储的爬虫结果存储方法及装置与流程

本发明涉及互联网技术领域,尤其涉及一种基于对象存储的爬虫结果存储方法及装置。



背景技术:

网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,在目前的路径追踪中,大多是以爬虫任务为基本单位来进行爬虫网络路径追踪,结果一般是以网页为单位存储到数据库,或直接存储到文件系统中,在需要调取相关数据时查询数据库或由下游系统去遍历文件系统的文件夹。

现有技术中还提到另一种方法,即基于对象存储并使用爬虫日志对结果进行追踪。该方法通过建立结果路径日志,在外部系统调取数据时可在该日志中进行检索,而无需去数据库中检索,因此避免了可能产生的读写冲突。

但在现有技术中,无不是以爬虫任务为基本单位进行爬虫网络路径追踪,这会遇到以下问题:

1、若直接使用数据库或文件存储,存在效率问题。

2、数据清洗是需要结合多个爬取结果文件的,若结果储存分散,则难以快速查询到所有相关结果。

3、若以结果路径日志进行追踪,难免遇到日志切割问题,一旦相关结果存在于不同的日志中,将难以找寻到所有相关结果。



技术实现要素:

本发明实施例的目的是提供一种基于对象存储的爬虫结果存储方法,实现了支持批处理的爬取结果文件的存储格式,提高了后续对数据查询的效率。

为实现上述目的,本发明实施例提供了一种基于对象存储的爬虫结果存储方法,包括以下步骤:

获取网络爬虫爬取的第一爬取结果文件,将所述第一爬取结果文件的原始链接url添加至所述第一爬取结果文件的首行,并生成所述第一爬取结果文件的第一路径;

根据所述第一爬取结果文件的属性,生成第一批处理编号,并将所述第一批处理号作为所述第一路径的前缀,生成第二路径;

将所述第一爬取结果文件上传至对象存储系统,以所述第二路径作为存储路径,并生成第一结果路径日志;其中,所述结果路径日志,用于记录爬取结果文件的来源url到所述对象存储系统中存储对应爬取结果文件路径的索引;

将所述第一爬取结果文件的来源url和所述第二路径合并,生成聚合路径,并将所述聚合路径记录在所述第一结果路径日志中的末尾,生成最终结果路径日志。

进一步的,所述第一结果路径日志包括三列数据;

第一列数据为日志时间,所述日志时间为所述第一爬取结果文件上传至所述对象存储系统的时间;

第二列数据为所述第一爬取结果文件的来源url;

第三列数据为所述第二路径。

进一步的,所述基于对象存储的爬虫结果存储方法,还包括:根据网络爬虫的编号和所述网络爬虫爬取的爬取结果文件的内容,生成与爬取结果文件对应的哈希路径,以使每个爬取结果文件都具有唯一的且对应的路径。

本发明实施例还提供了一种基于对象存储的爬虫结果存储装置,包括:第一路径生成模块、第二路径生成模块、数据存储模块,以及最终结果生成模块;

所述第一路径生成模块,用于获取网络爬虫爬取的第一爬取结果文件,将所述第一爬取结果文件的原始链接url添加至所述第一爬取结果文件的首行,并生成所述第一爬取结果文件的第一路径;

所述第二路径生成模块,用于根据所述第一爬取结果文件的属性,生成第一批处理编号,并将所述第一批处理号作为所述第一路径的前缀,生成第二路径;

所述数据存储模块,用于将所述第一爬取结果文件上传至对象存储系统,以所述第二路径作为存储路径,并生成第一结果路径日志;其中,所述结果路径日志,用于记录爬取结果文件的来源url到所述对象存储系统中存储对应爬取结果文件路径的索引;

所述最终结果生成模块,用于将所述第一爬取结果文件的来源url和所述第二路径合并,生成聚合路径,并将所述聚合路径记录在所述第一结果路径日志中的末尾,生成最终结果路径日志。

进一步的,所述第一结果路径日志包括三列数据;

第一列数据为日志时间,所述日志时间为所述第一爬取结果文件上传至所述对象存储系统的时间;

第二列数据为所述第一爬取结果文件的来源url;

第三列数据为所述第二路径。

进一步的,所述基于对象存储的爬虫结果存储装置,还包括:哈希路径生成模块;

所述哈希路径生成模块,用于根据网络爬虫的编号和所述网络爬虫爬取的爬取结果文件的内容,生成与爬取结果文件对应的哈希路径,以使每个爬取结果文件都具有唯一的且对应的路径。

作为本发明的优选实施例,本发明还提供了一种基于对象存储的爬虫结果存储设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述发明实施例所述的基于对象存储的爬虫结果存储方法。

本发明另一实施例提供了一种存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述发明实施例所述的基于对象存储的爬虫结果存储方法。

与现有技术相比,具有如下有益效果:

本发明实施例提供的基于对象存储的爬虫结果存储方法,通过获取网络爬虫爬取的第一爬取结果文件,将第一爬取结果文件的原始链接url添加至第一爬取结果文件生成路径的首行,生成第一路径,再根据第一爬取结果文件的属性,生成第一批处理编号,并将第一批处理号作为第一路径的前缀,生成第二路径,然后将第一爬取结果文件上传至对象存储系统,以第二路径作为存储路径,并生成第一结果路径日志,最后将第一爬取结果文件的来源url和第二路径合并,生成聚合路径,并将聚合路径记录在第一结果路径日志中的末尾,生成最终结果路径日志,采用本发明提供的实施例,实现了支持批处理的爬取结果文件的存储格式,提高了后续对数据查询的效率。

附图说明

图1是本发明提供的基于对象存储的爬虫结果存储方法的一个实施例的流程示意图;

图2是本发明提供的基于对象存储的爬虫结果存储装置的一个实施例的结构示意图。

具体实施方式

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

参见图1,图1是本发明提供的基于对象存储的爬虫结果存储方法的一个实施例的流程示意图;本发明实施例提供一种基于对象存储的爬虫结果存储方法,包括步骤s1-s4;

s1,获取网络爬虫爬取的第一爬取结果文件,将所述第一爬取结果文件的原始链接url添加至所述第一爬取结果文件的首行,并生成所述第一爬取结果文件的第一路径。

s2,根据所述第一爬取结果文件的属性,生成第一批处理编号,并将所述第一批处理号作为所述第一路径的前缀,生成第二路径。

s3,将所述第一爬取结果文件上传至对象存储系统,以所述第二路径作为存储路径,并生成第一结果路径日志。

在本实施例中,所述对象存储系统是一个基于分布式文件系统的文件存储系统。从而在降低成本的同时,可提高存储和下载的速度。通过调用http接口传递相应参数,可以实现对对象存储系统上文件的删除(delete)、创建(post)、重写(put)。基于hdfs分布式文件系统,对象存储系统可以支持pt级别数量文件的存储。

其中,所述结果路径日志,用于记录爬取结果文件的来源url到所述对象存储系统中存储对应爬取结果文件路径的索引。在外部系统需要调取数据库中的数据时,通过索引可直接得到对象存储系统上所有互相关联的爬虫结果文件。

具体的,所述第一结果路径日志包括三列数据;第一列数据为日志时间,所述日志时间为所述第一爬取结果文件上传至所述对象存储系统的时间;第二列数据为所述第一爬取结果文件的来源url;第三列数据为所述第二路径。

s4,将所述第一爬取结果文件的来源url和所述第二路径合并,生成聚合路径,并将所述聚合路径记录在所述第一结果路径日志中的末尾,生成最终结果路径日志。

优选的,作为本发明的优选实施例,本发明提供的一种基于对象存储的爬虫结果存储方法,还包括步骤s5;

s5,根据网络爬虫的编号和所述网络爬虫爬取的爬取结果文件的内容,生成与爬取结果文件对应的哈希路径,以使每个爬取结果文件都具有唯一的且对应的路径。

在本发明实施例中,通过引入对象存储系统,保证了文件读写速度,通过建立结果路径日志,在外部系统调取数据时可以直接将所有相关联的爬虫结果尽数读取,解决了现有技术中无法解决的关联结果处理的问题。

为了更好的说明本发明实施例提供的基于对象存储的爬虫结果存储方法的原理,以下为实现本发明的具体步骤:假设一个爬虫s的多个相关联的爬取结果文件为r1、r2、r3,首先将对应的原始链接url1、url2、url3分别添加到r1、r2、r3的首行,然后为该相关联的爬取结果生成一个批处理编号multipart1,并对文件r1、r2、r3生成路径以multipart1为前缀的路径p1、p2、p3,将爬取结果文件上传到对象存储系统中的p1、p2、p3路径位置,同时根据该爬虫编号s以及爬取结果文件r1、r2、r3的内容生成唯一哈希路径multipart1/<r1_hash>、multipart1/<r2_hash>、multipart1/<r3_hash>,从而可以保证每个爬取结果文件跟其路径能够一一对应,并且生成多条含爬取结果的来源url1、url2、url3、路径p1、p2、p3的聚合路径记录,最后将该记录添加到每个爬虫各自对应的结果路径日志的末尾。

在后续工作中,需要调取数据时,通过外部系统先对结果路径日志进行排序,使得相同前缀的路径相互紧挨,并遍历日志中的不同前缀,检索到一个不同的前缀时,通过该记录中的路径前缀,如multipart1,到对象存储系统中查询所有以此为前缀的文件,下载所有相关爬取结果文件到本地进行清洗;在下载到的所有前缀为multipart1的结果文件r1、r2、r3后,从该文件的首行中读取出原始链接url1、url2、url3,并按照现有的路径追踪方法进行解析清洗。

需要说明的是,r1、r2、r3可能因为爬取时间差的问题,分布于不同的结果路径日志中,但是因为对于每个日志,外部系统通过multipart1前缀下载得到的爬取结果文件都是当前爬取到的所有相关文件,所以当解析最后一个日志时,自当会得到完整的爬取结果。

本发明实施例提供的基于对象存储的爬虫结果存储方法,通过获取网络爬虫爬取的第一爬取结果文件,将第一爬取结果文件的原始链接url添加至第一爬取结果文件生成路径的首行,生成第一路径,再根据第一爬取结果文件的属性,生成第一批处理编号,并将第一批处理号作为第一路径的前缀,生成第二路径,然后将第一爬取结果文件上传至对象存储系统,以第二路径作为存储路径,并生成第一结果路径日志,最后将第一爬取结果文件的来源url和第二路径合并,生成聚合路径,并将聚合路径记录在第一结果路径日志中的末尾,生成最终结果路径日志。

采用本发明提供的实施例,具有以下有益效果:

(1)通过引入对象存储系统,实现了海量结果文件的储存,提高了io效率,保证了文件读写速度;

(2)通过建立批处理结果路径日志,在外部系统调取数据时可以直接将所有相关联的爬虫结果尽数读取,解决了现有技术中无法解决的关联结果处理的问题,实现了支持批处理的爬虫结果存储格式,保证检索效率,实现数据解析清洗的一致性,并且解除与外部系统间的耦合。

作为本发明提供的优选实施例,请参见图2,图2是本发明提供的基于对象存储的爬虫结果存储装置的一个实施例的结构示意图,包括:第一路径生成模块、第二路径生成模块、数据存储模块,以及最终结果生成模块;

所述第一路径生成模块,用于获取网络爬虫爬取的第一爬取结果文件,将所述第一爬取结果文件的原始链接url添加至所述第一爬取结果文件的首行,并生成所述第一爬取结果文件的第一路径;所述第二路径生成模块,用于根据所述第一爬取结果文件的属性,生成第一批处理编号,并将所述第一批处理号作为所述第一路径的前缀,生成第二路径;所述数据存储模块,用于将所述第一爬取结果文件上传至对象存储系统,以所述第二路径作为存储路径,并生成第一结果路径日志;其中,所述结果路径日志,用于记录爬取结果文件的来源url到所述对象存储系统中存储对应爬取结果文件路径的索引;所述最终结果生成模块,用于将所述第一爬取结果文件的来源url和所述第二路径合并,生成聚合路径,并将所述聚合路径记录在所述第一结果路径日志中的末尾,生成最终结果路径日志。

在本实施例中,所述第一结果路径日志包括三列数据;

第一列数据为日志时间,所述日志时间为所述第一爬取结果文件上传至所述对象存储系统的时间;第二列数据为所述第一爬取结果文件的来源url;第三列数据为所述第二路径。

优选的,所述基于对象存储的爬虫结果存储装置,还包括哈希路径生成模块;

所述哈希路径生成模块,用于根据网络爬虫的编号和所述网络爬虫爬取的爬取结果文件的内容,生成与爬取结果文件对应的哈希路径,以使每个爬取结果文件都具有唯一的且对应的路径。

由上可见,本发明实施例提供的一种基于对象存储的爬虫结果存储装置,通过第一路径生成模块获取网络爬虫爬取的第一爬取结果文件,将所述第一爬取结果文件的原始链接url添加至所述第一爬取结果文件的首行,并生成所述第一爬取结果文件的第一路径,然后通过第二路径生成模块根据所述第一爬取结果文件的属性,生成第一批处理编号,并将所述第一批处理号作为所述第一路径的前缀,生成第二路径,再通过数据存储模块将所述第一爬取结果文件上传至对象存储系统,以所述第二路径作为存储路径,并生成第一结果路径日志,最后通过最终结果生成模块将所述第一爬取结果文件的来源url和所述第二路径合并,生成聚合路径,并将所述聚合路径记录在所述第一结果路径日志中的末尾,生成最终结果路径日志,采用本发明提供的实施例,解决了现有技术中无法解决的关联结果处理的问题,实现了支持批处理的爬虫结果存储格式,保证检索效率,实现数据解析清洗的一致性,并且解除与外部系统间的耦合。

本发明实施例还提供了一种基于对象存储的爬虫结果存储设备。该设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述各个基于对象存储的爬虫结果存储方法实施例中的步骤,例如图1所示的步骤s1至s4。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述基于对象存储的爬虫结果存储设备的控制中心,利用各种接口和线路连接整个基于对象存储的爬虫结果存储设备的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述基于对象存储的爬虫结果存储设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述基于对象存储的爬虫结果存储设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

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

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