网页爬取请求处理方法和装置与流程

文档序号:11155102阅读:325来源:国知局
网页爬取请求处理方法和装置与制造工艺

本申请涉及数据处理领域,具体而言,涉及一种网页爬取请求处理方法和装置。



背景技术:

网络爬虫在爬取页面的过程中,会不断解析出新的页面链接,网络爬虫需要根据这些页面链接构建新的爬取请求去爬取页面,而爬取的页面又会解析出新的页面链接,构建新的爬取请求,以此类推,直到爬取结束。由于新页面的产生速度往往远快于网络爬虫爬取网页的速度,因此需要把这些新的页面链接保存到一个队列里,作为待爬取请求队列。在页面数量及其庞大的情形下,该待爬取请求队列的数据量将会急剧膨胀,造成内存的大量消耗。由于待爬取链接的生成速度远大于网络爬虫爬取这些链接的速度,如果直接将待爬取链接保存到内存,一方面浪费了大量空间,另一方面在爬虫程序崩溃退出时会造成数据丢失。

针对相关技术中直接将大量的网页爬取请求存储于内存中耗费内存空间的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请的主要目的在于提供一种网页爬取请求处理方法和装置,以解决直接将大量的网页爬取请求存储于内存中耗费内存空间的问题。

为了实现上述目的,根据本申请的一个方面,提供了一种网页爬取请求处理方法。该方法包括:获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取页面的链接;判断是否存在存储文件,其中,存储文件用于存储待爬取请求;在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中;以及在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中。

进一步地,在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中包括:获取新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量;判断新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量之和是否小于第一预设值;当判断出新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量之和小于第一预设值时,将新解析得到的待爬取请求存储于请求队列中。

进一步地,当判断出新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量之和不小于第一预设值时,该方法还包括:创建存储文件;以及将新解析得到的待爬取请求存储于存储文件中。

进一步地,在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中包括:判断存储文件的大小是否大于第二预设值;在判断出存储文件的大小小于第二预设值时,将新解析得到的待爬取请求存储于存储文件中;在判断出存储文件的大小不小于第二预设值时,创建新的存储文件;以及将新解析得到的待爬取请求存储于新的存储文件中。

进一步地,将新解析得到的待爬取请求存储于存储文件中包括:对新解析得到的待爬取请求进行二进制编码,得到二进制的待爬取请求;以及将二进制的待爬取请求存储于存储文件中。

进一步地,在获取新解析得到的待爬取请求之前,该方法还包括:判断是否存在存储文件;当判断出存在存储文件时,从存储文件中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求;以及当判断出不存在存储文件时,从请求队列中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求。

进一步地,当判读出存在存储文件时,从存储文件中读取待爬取请求包括:获取存储文件上一次的读取位置;从存储文件上一次的读取位置读取预设数量的待爬取请求;判断是否已读取到存储文件的末端位置;在判断出读取到存储文件的末端位置时,删除存储文件;以及在判断出未读取到存储文件的末端位置时,标记存储文件当前的读取位置。

为了实现上述目的,根据本申请的另一方面,提供了一种网页爬取请求处理装置。该装置包括:获取单元,用于获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取页面的链接;第一判断单元,用于判断是否存在存储文件,其中,存储文件用于存储爬取请求;以及存储单元,用于在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中,在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中。

进一步地,存储单元包括:判断模块,用于判断存储文件的大小是否大于第二预设值;第一存储模块,用于在判断出存储文件的大小小于第二预设值时,将新解析得到的待爬取请求存储于存储文件中;创建模块,用于在判断出存储文件的大小不小于第二预设值时,创建新的存储文件;以及第二存储模块,用于将新解析得到的待爬取请求存储于新的存储文件中。

进一步地,该装置还包括:第二判断单元,用于判断是否存在存储文件;第一读取单元,用于在判断出存在存储文件时,从存储文件中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求;以及第二读取单元,用于在判断出不存在存储文件时,从请求队列中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求。

本申请通过获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取页面的链接;判断是否存在存储文件,其中,存储文件用于存储待爬取请求;在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中;以及在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中,从而可以在网页爬取请求数量较多时,将网页爬取请求存储于存储文件中,可以避免在网页爬取请求数量较多时将网页爬取请求全部存储于内存中造成内存空间的耗费;在网页爬取请求较少时,直接将网页爬取请求存储于请求队列中,从而可以避免在网页爬取请求数量较少时将网页爬取请求存储于磁盘中造成读取效率的降低,解决了直接将大量的网页爬取请求存储于内存中耗费内存空间的问题,进而达到了根据网页爬取请求的数量对待爬取请求进行灵活存储效果。

附图说明

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

图1是根据本申请第一实施例的网页爬取请求处理方法的流程图;

图2是根据本申请第二实施例的网页爬取请求处理方法的流程图;

图3是根据本申请实施例的待爬取请求读取的流程图;

图4是根据本申请实施例的待爬取请求存储与读取的示意图;以及

图5是根据本申请实施例的网页爬取请求处理装置的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

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

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

为了便于描述,以下对本申请涉及的一些概念进行说明:

队列,是一种特殊的线性表,其只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,也称作先进先出(First In First Out)的线性表,简称为FIFO表。

网络爬虫:又被称为网页蜘蛛或网络机器人,是一种按照预设规则自动抓取万维网信息的程序或者脚本。

网页爬取请求:用于网页爬取的数据,通常包括网页的链接,还可以包括网页的来源(例如,来源URL)、上下文信息等信息。

根据本申请实施例,提供了一种网页爬取请求处理方法。图1是根据本申请第一实施例的网页爬取请求处理方法的流程图,如图1所示,该方法包括如下的步骤S102至步骤S108:

步骤S102,获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取页面的链接。

具体地,网络爬虫根据某个待爬取请求取下载对应的页面内容,并从该页面内容中解析得到该页面所含的网页链接,优选地,可以从中过滤掉已经爬取过的网页链接,并对其中未被爬取过的网页链接(即新解析得到的待爬取请求)进行存储。

需要说明的是,为了提高存储效率,可以在新解析得到的待爬取请求达到预设数量后再批量进行存储。

步骤S104,判断是否存在存储文件,其中,存储文件用于存储待爬取请求。

本申请实施例的存储文件用于存储待爬取请求,该存储文件可以是自定义的存储文件,例如,包括文件头和文件体的存储文件,其中,文件头用于记录存储文件的读 取位置、存储文件大小等信息,文件体则用于存储待爬取请求;该存储文件也可以是数据库。

具体地,本申请实施例在网络爬虫无法及时消耗掉所有的待爬取请求,则会将待爬取请求存储于存储文件中,而在网络爬虫能够及时消耗掉所有的待爬取请求时,则将待爬取请求直接存储于请求队列中。需要说明的是,为了提高存储与读取待爬取请求的效率,可以将存储文件放置于网络爬虫的应用程序目录下。当然,也可以将存储文件放置于系统的其他存储位置。

步骤S106,在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中。

即网络爬虫能够及时消耗掉所有的待爬取请求,此时,为了不影响后续读取待爬取请求的效率,将新解析得到的待爬取请求存储于请求队列中。

步骤S108,在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中。

即网络爬虫不能够及时消耗掉所有的待爬取请求,此时,为了不占用过多的内存,将新解析得到的待爬取请求存储于存储文件中。

本申请实施例通过获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取页面的链接;判断是否存在存储文件,其中,存储文件用于存储待爬取请求;在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中;以及在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中,从而可以在网页爬取请求数量较多时,将网页爬取请求存储于存储文件中,可以避免在网页爬取请求数量较多时将网页爬取请求全部存储于内存中造成内存空间的耗费;在网页爬取请求较少时,直接将网页爬取请求存储于请求队列中,从而可以避免在网页爬取请求数量较少时将网页爬取请求存储于磁盘中造成读取效率的降低,解决了直接将大量的网页爬取请求存储于内存中耗费内存空间的问题,进而达到了根据网页爬取请求的数量对待爬取请求进行灵活存储效果。

优选地,为了避免新解析得到的待爬取请求的丢失,在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中包括:获取新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量;判断新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量之和是否小于第一预设值;当判断出新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量之和小于第一预设值时,将新解析得到的待爬取请求存储于请求队列中。

本申请实施例在判断出不存在存储文件时,计算新解析得到的待爬取请求的数量 以及请求队列中已存储的待爬取请求的数量之和,将新解析得到的待爬取请求的数量以及请求队列中已存储的待爬取请求的数量之和与第一预设值进行比较,其中,第一预设值可以根据请求队列的大小进行设置,如果新解析得到的待爬取请求的数量以及请求队列中已存储的待爬取请求的数量之和小于第一预设值,则说明当前请求队列能够存储全部新解析得到的待爬取请求,则将新解析得到的待爬取请求存储至请求队列中,如果新解析得到的待爬取请求的数量以及请求队列中已存储的待爬取请求的数量之和不小于第一预设值,则说明当前请求队列无法存储全部新解析得到的待爬取请求,此时可以通过存储文件对新解析得到的待爬取请求进行存储,从而可以避免新解析得到的待爬取请求的丢失。

优选地,当判断出新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量之和不小于第一预设值时,该方法还包括:创建存储文件;以及将新解析得到的待爬取请求存储于存储文件中。

本申请实施例在判断出新解析得到的待爬取请求的数量和请求队列中已存储的待爬取请求的数量之和不小于第一预设值时,创建一个存储文件,为了区分不同的存储文件以及不同存储文件的创建时间,可以将不同存储文件按照递增数列或是递减数列等设置序号,例如,将第一个创建的存储文件序号设为1,将第二个创建的存储文件的序号设为2。本申请实施例在创建存储文件后,将新解析得到的待爬取请求存储于存储文件中。优选地,为了便于后续能够按照待爬取请求获取顺序对待爬取请求进行爬取,本申请实施例可以按照新解析得到的待爬取请求的获取顺序对新解析得到的待爬取请求进行存储。

优选地,为了便于对存储文件进行操作,在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中包括:判断存储文件的大小是否大于第二预设值;在判断出存储文件的大小小于第二预设值时,将新解析得到的待爬取请求存储于存储文件中;在判断出存储文件的大小不小于第二预设值时,创建新的存储文件;以及将新解析得到的待爬取请求存储于新的存储文件中。

本申请实施例在判断出存在存储文件时,进一步判断当前存储文件的大小是否大于某个预设值(即第二预设值),在判断出前存储文件的大小小于第二预设值时,则将新解析得到的待爬取请求存储于当前的存储文件中,在判断出前存储文件的大小不小于第二预设值时,则创建新的存储文件以存储新解析得到的待爬取请求,从而可以避免一个存储文件存储过多的待爬取请求不利于后续对存储文件的读取操作(即读取效率较低)以及后续对存储文件的删除操作(即需要存储文件中所有的待爬取请求均被爬取后才可以删除该存储文件,会造成存储空间的浪费)。

需要说明的是,可以将新的存储文件的序号设为当前存储文件中最大序号加1。 在网络爬虫从存储文件中读取待爬取请求时,则可以根据存储文件的序号按顺序地读取待爬取请求。

优选地,为了节省存储空间,将新解析得到的待爬取请求存储于存储文件中包括:对新解析得到的待爬取请求进行二进制编码,得到二进制的待爬取请求;以及将二进制的待爬取请求存储于存储文件中。

本申请实施例在获取到新解析得到的待爬取请求之后,对新解析得到的待爬取请求进行二进制编码,并将编码后的待爬取请求存储于存储文件中,从而可以节省存储空间。在从存储文件中读取待爬取请求时,则先对编码后的待爬取请求进行解码,根据解码后的待爬取请求进行网页的爬取。

可选地,为了保证待爬去请求存储与读取顺序的一致性,在获取新解析得到的待爬取请求之前,该方法还包括:判断是否存在存储文件;当判断出存在存储文件时,从存储文件中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求;以及当判断出不存在存储文件时,从请求队列中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求。

本申请实施例在获取新解析得到的待爬取请求之前,可以从存储文件或是请求队列中读取待爬取请求,并根据读取得到的待爬取请求下载页面内容,从而可以从下载的页面内容中解析得到新的待爬取请求。具体地,本申请实施例在读取待爬取请求之前,判断是否存在存储文件,在判断出存在存储文件时,则从存储文件中读取待爬取请求,在判断出不存在存储文件时,则从请求队列中读取待爬取请求。

需要说明的是,如果当前存在多个存储文件,则可以从序号最小的存储文件中读取待爬取请求。此外,本申请实施例可以并行的进行待爬取请求的存储与读取,因此,上述待爬取请求的读取过程并不限于在获取新解析得到的待爬取请求之前,例如,通过第一线程进行新解析得到的待爬取请求的存储,通过第二线程进行待爬取请求的读取。

优选地,为了进一步节省存储空间,当判读出存在存储文件时,从存储文件中读取待爬取请求包括:获取存储文件上一次的读取位置;从存储文件上一次的读取位置读取预设数量的待爬取请求;判断是否已读取到存储文件的末端位置;在判断出读取到存储文件的末端位置时,删除存储文件;以及在判断出未读取到存储文件的末端位置时,标记存储文件当前的读取位置。

具体地,本申请实施例每次从存储文件中读取待爬取请求之后,都会对读取位置进行标记,因此,在下一次从存储文件中读取待爬取请求时,则可以根据上一次的读 取位置进行往后读取,从而可以避免读取到同样的待爬取请求。此外,本申请实施例在判断出已读取到当前存储文件的末端位置时,即当前存储文件的所有待爬取请求均被读取过,则删除当前的存储文件,以节省存储空间。

图2是根据本申请第二实施例的网页爬取请求处理方法的流程图,如图2所示,该方法包括如下的步骤S202至步骤S222:

步骤S202,获取新的爬取请求。

具体地,新的爬取请求即上述新解析得到的待爬取请求,网络爬虫根据某个待爬取请求取下载对应的页面内容,并从该页面内容中解析得到该页面所含的网页链接,优选地,可以从中过滤掉已经爬取过的网页链接,并对其中未被爬取过的网页链接(即新解析得到的待爬取请求)进行存储。

步骤S204,是否已存在存储文件?

即判断是否已存在存储文件,在判断出已存在存储文件时,执行步骤S214,在判断出不存在存储文件时,执行步骤S206。

步骤S206,请求队列的大小与新的爬取请求的数量之和是否大于阈值?

本申请实施例在判断出不存在存储文件时,继续判断请求队列的大小(例如,请求队列中存储的待爬取请求的数量)与新的爬取请求的数量之和是否小于阈值,在判断出请求队列的大小与新的爬取请求的数量之和小于阈值时,执行步骤S208,在判断出请求队列的大小与新的爬取请求的数量之和不小于阈值时,执行步骤S210。

步骤S208,添加至请求队列。

即将新的爬取请求存储于请求队列中。

步骤S210,新建存储文件,并将序号设为1。

步骤S212,在新建存储文件中存储新的爬取请求。

步骤S214,获取序号最大的存储文件。

步骤S216,判断存储文件的大小是否超过预设的数值。

即判断当前序号最大的存储文件的大小是否超过预设的数值,在判断出当前序号最大的存储文件的大小超过预设的数值时,则执行步骤S218,在判断出当前序号最大的存储文件的大小未超过预设的数值时,则执行步骤S222。

步骤S218,新建存储文件,并将序号设为最大序号加1。

即将新建存储文件的序号值设为上述最大序号值加1。

步骤S220,在新建存储文件中存储新的爬取请求。

步骤S222,在序号最大的存储文件中存储新的爬取请求。

在该存储文件中追加该请求记录(即爬取请求),并将该爬取请求的记录条数加1。

需要说明的是,由于可以并行的进行待爬取请求的存储与读取,对应地,如图3所示,本申请实施例可以采用如下步骤进行待爬取请求的读取:

步骤S302,是否已存在存储文件?

即判断是否已存在存储文件,在判断出不存在存储文件时,执行步骤S304,在判断出存在存储文件时,执行步骤S306。

步骤S304,从请求队列中获得第一条待爬取请求。

步骤S306,获取序号最小的存储文件,并从上次读取位置之后读取若干条记录至请求队列。

若干条记录即若干条待爬取请求,需要说明的是,本申请实施例的请求队列包括排队队列、输入缓冲区和输出缓冲区,在判断出存在存储文件时,则从存储文件中获取待爬取请求经由输入缓冲区进入排队队列进行等待,网络爬虫从输出缓冲区读取待爬取请求进行网页爬取。

步骤S308,是否已读取到存储文件末端?

即判断是否已读取到存储文件末端(即末端位置),在判断出未读取到存储文件末端时,执行步骤S310,在判断出已读取到存储文件末端时,执行步骤S312。

步骤S310,记录当前的读取位置。

步骤S312,删除该存储文件。

图4是根据本申请实施例的待爬取请求存储与读取的示意图,以下结合图4对本申请实施例的待爬取请求存储与读取过程进行说明:

步骤S402,初始化请求队列,网络爬虫从请求队列取得待爬取URL(即待爬取请求)。

步骤S404,网络爬虫爬取并下载待爬取URL对应的页面内容,解析出页面所含的网页链接,过滤出已爬取过的URL,将新的URL添加到请求队列中。

步骤S406,在一定的条件下,请求队列会将新的待爬取请求保存到存储文件中,并从该存储文件中读取待爬取请求。

需要说明的是,本申请实施例的请求队列包括排队队列、输入缓冲区和输出缓冲区,在存储待爬取请求时,新解析得到的URL添加至请求队列的输入缓冲区,如果判断出存在存储文件,则将新解析得到的URL进一步存入存储文件中,如果判断出不存在存储文件,则输入缓冲区的新解析得到的URL进入排队队列,并进一步进入输出缓冲区以网络爬虫读取。在读取待爬取请求时,如果判断出存在存储文件,则从存储文件中读取待爬取请求进入输入缓冲区,并进一步经由排队队列进行输出缓冲区供网络爬虫读取;如果不存在存储文件,则直接从请求队列中获取待爬取请求。即本申请实施例只要存在存储文件,则都通过存储文件进行待爬取请求的存储与读取,从而保证爬取请求顺序的一致性。

从以上的描述中,可以看出,本申请实施例对于页面数不多的网站,待爬取请求直接保存在请求队列里,无需保存到存储文件,对于页面数较多的网站,则将待爬取请求保存到存储文件中;无论请求队列里待爬取请求数量有多少,在存储文件存在的情况下,都通过存储文件进行待爬取请求的存储与读取,从而可以保证爬取请求顺序的一致性;保存存储文件的读取位置,一方面在程序中断的情况下,可以从上次读取的位置继续取得下一个待爬取请求继续爬取,而不会造成数据丢失,另一方面在存储文件读取完毕的情况下可以将存储文件删除,以节约磁盘空间;对于待爬取请求的保存和读取都可以批量进行,以减少磁盘输入和输出(俗称IO)的次数;请求队列的阈值、存储文件大小以及一次读取记录数(即待爬取请求数)的数值都可以设置,以灵活应对不同的软硬件环境和爬取速度;可以分多个存储文件进行存储,由于读操作和写操作往往针对的是不同的存储文件,在存在多个存储文件的情况下可以实现读写分离;对于同一个存储文件的读写是线程安全的。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本申请实施例的另一方面,提供了一种网页爬取请求处理装置,该网页爬取请求处理装置可以用于执行本申请实施例的网页爬取请求处理方法,本申请实施例的网页爬取请求处理方法也可以通过本申请实施例的网页爬取请求处理装置来执行。

图5是根据本申请实施例的网页爬取请求处理装置的示意图,如图5所示,该装置包括:获取单元10,第一判断单元20和存储单元30。

获取单元10,用于获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取 页面的链接。

第一判断单元20,用于判断是否存在存储文件,其中,存储文件用于存储爬取请求。

存储单元30,用于在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中,在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中。

本申请实施例通过获取单元10获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取页面的链接;第一判断单元20判断是否存在存储文件,其中,存储文件用于存储待爬取请求;以及存储单元30在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中,在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中,从而可以在网页爬取请求数量较多时,将网页爬取请求存储于存储文件中,可以避免在网页爬取请求数量较多时将网页爬取请求全部存储于内存中造成内存空间的耗费;在网页爬取请求较少时,直接将网页爬取请求存储于请求队列中,从而可以避免在网页爬取请求数量较少时将网页爬取请求存储于磁盘中造成读取效率的降低,解决了直接将大量的网页爬取请求存储于内存中耗费内存空间的问题,进而达到了根据网页爬取请求的数量对待爬取请求进行灵活存储效果。

可选地,存储单元30包括:判断模块,用于判断存储文件的大小是否大于第二预设值;第一存储模块,用于在判断出存储文件的大小小于第二预设值时,将新解析得到的待爬取请求存储于存储文件中;创建模块,用于在判断出存储文件的大小不小于第二预设值时,创建新的存储文件;以及第二存储模块,用于将新解析得到的待爬取请求存储于新的存储文件中。

可选地,该装置还包括:第二判断单元,用于判断是否存在存储文件;第一读取单元,用于在判断出存在存储文件时,从存储文件中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求;以及第二读取单元,用于在判断出不存在存储文件时,从请求队列中读取待爬取请求,其中,根据读取到的待爬取请求爬取页面,并从页面中解析得到新的待爬取请求。

所述网页爬取请求处理装置包括处理器和存储器,上述获取单元、第一判断单元和存储单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来对待爬取请求进行存储。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/ 或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:获取新解析得到的待爬取请求,其中,待爬取请求包括待爬取页面的链接;判断是否存在存储文件,其中,存储文件用于存储待爬取请求;在判断出不存在存储文件时,将新解析得到的待爬取请求存储于请求队列中;以及在判断出存在存储文件时,将新解析得到的待爬取请求存储于存储文件中。

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

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

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

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

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

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

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

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