一种网页链接库的更新方法及系统的制作方法

文档序号:6438476阅读:287来源:国知局
专利名称:一种网页链接库的更新方法及系统的制作方法
技术领域
本发明涉及互联网领域,更具体的说,是涉及一种网页链接库的更新方法及系统。
背景技术
随着互联网的迅速发展,互联网的网页数量越来越庞大,互联网网页的收集也越来越重要,现有的网页抓取方法,是根据一些初始链接集合出发,抓取这些初始链接的原始网页并提取所述原始网页上的新链接,并抓取所述新链接所指的网页,如此不断循环迭代抓取互联网上的网页。所述网页抓取方法是基于网页链接库实现网页抓取。所述网页链接库中存储着各个链接以及各个链接的信息,所述信息包括各个链接对应的抓取状态以及各个链接在所述网页链接库中的具体位置和链接的长度。在抓取网页的过程中,原有被选取的初始链接的抓取状态会发现改变,而且会不断发现到新链接,所述初始链接的抓取状态、新链接以及所述新链接的抓取状态都需要更新到所述网页链接库中。所述链接的抓取状态包括:链接的抓取时间、该链接的抓取次数、是否抓取成功以及该链接的签名。所述链接的签名是指将链接的统一资源定位符这个字符串按照一定的算法映射到一个64位无符号整型值。所述网页链接库中的链接是按照链接的签名进行排序的,在对所述网页链接库进行更时,对不存在于所述网页链接库中的新链接,根据该新链接的签名将其写入所述网页链接库中,如果该新链接的签名处于所述网页链接库中某两个链接之间,则会将所述新链接插入到这两个链接之间,并且其他链接的位置相应的向后移,这期间需要很长时间,甚至长达2、3个小时,导致了所述网页链接库更新效率低。

发明内容
有鉴于此,本发明提供了一种网页链接库的更新方法及系统,以克服现有技术中由于更新时间太长导致所述网页链接库更新效率低的问题。为实现上述目的,本发明提供如下技术方案:—种网页链接库的更新方法,所述网页链接库中各个链接是按照对应的抓取顺序进行排序,包括步骤:A、获取包括初始链接和新链接的待更新链接;B、判断所述待更新链接是否属于所述网页链接库,如果是,则进入步骤C,如果否,则进入步骤D ;C、根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态;D、按照与所述待更新链接对应的抓取顺序,将所述待更新链接更新至所述网页链接库中已有链接序列的后面。一种网页链接库的更新系统,所述网页链接库中各个链接是按照对应的抓取顺序进行排序的,包括:
获取模块,用于获取包括初始链接和新链接的待更新链接;判断模块,用于判断所述待更新链接是否属于所述网页链接库;第一更新模块,用于在所述判断模块的判断结果为是的情况下,根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态;第二更新模块,用于在所述判断模块的判断结果为否的情况下,按照与所述待更新链接对应的抓取顺序,将所述待更新链接更新至所述网页链接库中已有链接序列的后面。经由上述的技术方案可知,采用本发明实施例,首先获取包括初始链接以及新链接的待更新链接,并对于各个待更新链接进行判断,判断所述待更新链接是否属于所述网页链接库,如果是,则直接对所述网页链接库中对应的初始链接的初始抓取状态进行更新,如果否,则将所述待更新链接更新至所述网页链接库中链接序列的最后,这样所述待更新链接不会因为抓取顺序在某两个已存在于所述网页链接库中的链接之间,出现网页链接库中其他链接在所述网页链接库中的顺序发生变化,而导致的更新效率低的问题,从而提高了所述网页链接库更新的效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本发明实施例公开的第一种网页链接库更新方法流程图;图2为本发明实施例公开的第二种网页链接库更新方法流程图;图3为本发明实施例公开的第一种网页链接库的更新系统的结构示意图;图4为本发明实施例公开的第二种网页链接库的更新系统的结构示意图。
具体实施例方式为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:URL:Uniform/Universal Resource Locator,统一资源定位符。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一请参阅附图1,为本发明实施例公开第一种网页链接库更新方法流程图,该实施例中的网页链接库中的各个链接是按照对应的抓取顺序进行排序的。现有技术中的网页链接库包括定长文件以及变长文件,各个链接存储在所述变长文件中,各个链接的抓取状态、在变长文件中的位置以及长度存储在所述定长文件中。所述变长文件中存储的是链接等变长信息。所述定长文件是由一个个类或结构体的对象组成的,例如:对定长文件定义的结构体为ClinkData,那么定长文件就是一个ClinkData对象接一个ClinkData对象组成。如果需要增加链接的某个信息,就可以直接在所述结构体ClinkData中增加一个参数,例如,本发明实施例中可以在ClinkData中增加抓取顺序这一变量。所述抓取顺序可以为所述各个链接第一次的抓取时间,例如,第一个被抓取的链接的抓取顺序排在所述网页链接库中链接序列的首位,第二被抓取的链接位于所述网页链接库中链接序列的第二位,如此类推。在实际应用中,根据不同的需求,也可以将所述第二个被抓取的链接置于所述网页链接库中链接序列的首位,当然,也可以是第三个被抓取的链接置于所述网页链接库中链接序列的首位,至于所述网页链接库中链接序列的首位是哪个链接不影响本发明的实现,所以本发明实施例不对其作具体限定。为了让本领域技术人员更加清楚的理解所述抓取顺序,再举一个例子,所述抓取顺序采用数值表示,只要处于所述网页链接库中各个链接对应数值是按照各个链接在所述网页链接库中的位置从小到大或从大到小排列均可。在实际应用中,根据实际情况的不同,所述抓取顺序也可以采用字母表示,也可以按照字母与数字的组合表示。例如,1A2大于1B2。所述抓取顺序变量就是表示链接在所述网页链接库中的位置。所述方法可以包括:步骤SlOl:获取包括初始链接和新链接的待更新链接;所述链接可以为URL。现有的网页抓取方法,首先从网页链接库中选取一些初始链接,抓取这些初始链接的原始网页并提取所述原始网页上的新链接,然后抓取所述新链接所指的网页,如此不断循环迭代抓取互联网上的网页。在每一个循环抓取互联网上网页的过程中,所述网页链接库中初始链接的抓取状态会发生变化,而且会抓取到新链接,所以就需要对所述网页链接库中这些初始链接的初始抓取状态进行更新,并且需要将本轮网页抓取中抓取的新链接以及这些新链接的抓取状态更新至所述网页链接库中,实际上对所述网页链接库的更新就是对其包括的所述定长文件以及变长文件的更新。在更新前首先需要获取包括所述链接以及新链接的待更新链接。步骤S102:判断所述待更新链接是否属于所述网页链接库,如果是,则进入步骤S103,如果否,则进入步骤S104 ;具体的,可以根据所述待更新链接的抓取顺序,来判断所述待更新链接是否属于所述网页链接库,例如,可以比较所述待更新链接的抓取顺序与所述网页链接库中各个初始链接的抓取顺序,如果相同,则表明一定存在;如果不同,可能存在于所述网页链接库中,也可能不存在,例如,在http://123.com网页上,抓取到http://456.com,而在http://456.com上又抓取到http://123.com,这样,按照新链接的定义:在本轮抓取网页的过程中,不是从所述网页链接库中抓取的链接就属于新链接,在http://456.com抓取的链接http://123.com是新链接,http://456.com也是新链接,然而,http://123.com在所述网页链接库中就存在的。如果所述抓取顺序这个变量的类型为静态变量,那么在生成一个链接对象之后,该对象的抓取顺序变量值就为零,如果所述网页链接库中的各个链接是按照正序排列的,而最小的一个链接的抓取顺序变量值为1,那么步骤S102具体的,还可以为判断所述待更新链接的抓取顺序这一变量的值是否大于零,如果是,则进入步骤S103,如果否,则进入步骤 S104。如果所述抓取顺序这个变量的类型不是静态变量,那么可以在步骤S102前包括步骤:将所述新链接的抓取顺序这一变量的值设置为预设值。如果所述网页链接库中的各个链接是正序排列的,则所述预设值为小于所述网页链接库中各个链接对应的抓取顺序这一变量的最小值。相应的,步骤S102具体为:判断所述待更新链接的抓取顺序这一变量的值是否大于所述预设值。如果所述网页链接库中的各个链接是倒序排列的,则所述预设值为大于所述网页链接库中各个链接对应的抓取顺序这一变量的最大值。相应的,步骤S102具体为:判断所述待更新链接的抓取顺序这一变量的值是否小于所述预设值。步骤S103:根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态;具体的,可以通过所述待更新链接的抓取顺序,计算出所述待更新链接在所述网页链接库中的位置;根据所述待更新链接的当前抓取状态更新所述网页链接库中所述位置的链接的初始抓取状态。在网页链接库中的链接是由一个一个类或结构体的对象组成的,还以ClinkData为例,如果所述抓取顺序这一变量的值是整数,将所述待更新链接的抓取顺序变量值称为A,所述网页链接库中链接序列中首位链接的抓取顺序变量值称为B,则可以通过公式:(I A-B I) *sizeof (ClinkData)(计算所述待更新链接的首地址,如果所述网页链接库中的各个链接是按照正序进行排列的,则可以去掉绝对值,如果是按照倒序进行排序的,则可以将A与B互换,然后去掉绝对值,如果不互换,则加上绝对值;如果所述抓取顺序值为小数,例如,该小数的小数点后只有一位,则公式可以为:(IA-B |)*10*sizeof(Cl inkData),如果所述抓取顺序这一变量的值为复数,则公式可以为:_ (IA-B I) *j*sizeof (ClinkData),或者
士 (M)2 *sizeof (ClinkData),如果所述抓取顺序变量值为字符型,则可以先将字符型转
换成数值,在通过上述公式进行计算,由于在已知抓取顺序变量值以及每个链接的长度的情况下,计算该链接的首地址是现有技术,所以这里就不在赘述。步骤S104:按照与所述待更新链接对应的抓取顺序,将所述待更新链接更新至所述网页链接库中已有链接序列的后面。具体的,如果采用抓取顺序变量值表示所述抓取顺序,则将所述待更新链接的抓取顺序变量值设置为已扫描的不存在于所述网页链接库中的待更新链接的抓取顺序变量值与固定值之和;将设置后的所述待更新链接更新至所述网页链接库中已有链接序列的后面。所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值抓取顺序变量值之差。所述固定值可以为正数也可以为负数,也就是说,链接在所述网页链接库中的排序可以是正序,也可以是倒序。还可以将所述待更新链接抓取顺序变量值设置为已扫描的不存在于所述网页链接库中的待更新链接的抓取顺序变量值与某个实数之积,所述实数可以根据实际情况而定。例如,如果所述网页链接库中的链接的抓取顺序变量值以1.5倍递增,那么所述实数可以为1.5,相应的,计算该待更新链接的首地址的公式要处以1.5。本发明实施例,由于所述网页链接库中的各个链接包括抓取顺序,而所述网页链接库中的各个链接是按照与其对应的抓取顺序进行排序的,当发现与所述新链接不存在于所述网页链接库中,可以利用所述抓取顺序将所述新链接更新至所述网页链接库中链接序列的最后面,这样所述新链接不会因为抓取顺序在某两个已存在于所述网页链接库中的链接之间,出现网页链接库中其他链接由于在所述网页链接库中的顺序发生变化,而导致的更新效率低的问题,从而提高了所述网页链接库的效率。实施例二请参阅图2,为本发明实施例公开的第二种网页链接库更新方法流程图,该实施例中的网页链接库中的各个链接是按照对应的抓取顺序进行排序的,该方法可以包括:步骤S201:获取包括初始链接和新链接的待更新链接;步骤S202:将所述网页链接库中网页的初始链接以及初始抓取状态映射到内存中;实际上也就是将所述网页链接库中的定长文件映射到内存中,在映射到内存后,内存中的文件与所述定长文件的内容一样。这样做的目的是,只有将定长文件映射到内存中,才可以像操作数组一样操作定长文件中各个链接对象,所述定长文件中的初始链接在进行更新时,才不会有由于所述对象的长度变化,导致其他链接对象在所述定长文件中的位置进行移动,例如,如果所述定长文件中某个初始链接的抓取状态发生变化,在对其进行更新时,如果所述定长文件没有映射到内存中,该链接对象长度可能会发生变化,从而导致后面的链接对象位置移动,从而导致所述网页链接库更新速度慢。而且在内存中操作速度要比直接在硬盘中快。在实际应用中,根据不同的情况,步骤S202可以在步骤S201之前,只是为了画图方便才规定了顺序。步骤S203:根据所述待更新链接的规模在硬盘上生成缓存文件,将所述缓存文件映射到内存中,获得第一内存映射文件;所述第一内存映射文件包括各个待更新链接以及各个待更新链接的抓取状态。由于待更新链接的规模庞大,如果直接对硬盘中各个待更新链接进行扫描,速度会很慢,也会影响所述网页链接库的更新速度。本步骤也是一个优选的步骤,本实施例中可以没有本步骤。在实际应用中,根据不同的情况,步骤S202可以位于步骤S203之后,只是为了画图方便才规定了顺序。步骤S204:对于所述第一内存映射文件中的各个待更新链接,比较所述待更新链接的抓取顺序变量值和所述预设值的大小,获得所述新链接的集合以及所述初始链接的集合,根据所述新链接的签名判断所述新链接集合中的各个新链接是否属于映射到内存中的初始链接,如果是,则进入步骤S205,如果否,则进入步骤S206 ;具体的,如果所述网页链接库中的链接序列是按照正序进行排序的,而且所述预设值是指小于所述网页链接库中已存在链接的抓取顺序变量值的最小值,那么在所述待更新链接的抓取顺序变量值大于所述预设值时,所述待更新链接为初始链接,如果所述网页链接库中的链接序列是按照倒序进行排序的,而且所述预设值是指大于所述网页链接库中已存在链接的抓取顺序变量值的最大值,则在所述待更新链接的抓取顺序变量值小于所述预设值时,所述待更新链接为初始链接。步骤S205:根据所述初始链接集合中的各个链接的当前抓取状态更新映射到内存中的具有所述抓取顺序的链接的初始抓取状态;具体的,根据所述待更新链接的抓取顺序,计算出所述待更新链接在映射到内存中该链接位于所述网页链接库中的首地址;根据所述待更新链接的当前抓取状态更新所述内存中的所述首地址指向的链接的初始抓取状态。步骤S206:根据所述新链接集合中各个新链接的签名,判断所述新链接是否属于映射到内存中的初始链接,如果是,则进入步骤S210,如果否,则进入步骤S207 ;步骤S202是一个优选步骤,如果没有本步骤也可以实现本发明的发明目的,如果没有步骤S202,则步骤S205中的应更改为:根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态;步骤S206应更改为:根据所述新链接集合中各个新链接的签名,判断所述新链接是否属于所述网页链接库中初始链接,如果是,则进入步骤S210,如果否,则进入步骤S207步骤S207:将所述新链接的抓取顺序的变量值设置为:前一个不存在于所述网页链接库中的新链接对应的抓取顺序变量值与固定值之和;所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值之差,可能为正直,也可能为负值。步骤S208:在处于所述第一映射文件中的各个待更新链接扫描结束后,将所述第一内存映射文件截断,获得第二内存映射文件,并将映射到内存的各个初始链接以及对应的当前抓取状态同步到所述网页链接库中;因为上述步骤都是对映射到内存中的初始链接的抓取状态进行的更新,而处于硬盘中的网页链接库没有进行更新,所以在本轮抓取的所述待更新链接都结束后,在同步到硬盘中的网页链接库,硬盘中的网页链接库就是参与网页抓取的链接库。所述第二内存映射文件包括不存在于所述网页链接库中的所述各个待更新链接、不存在于所述网页链接库中的所述各个待更新链接的信息。所述信息包括:不存在于所述网页链接库中的所述各个待更新链接的抓取状态,以及不存在于所述网页链接库中的所述各个待更新链接的长度及早变长文件中的位置。具体获得第二内存映射的步骤可以为:在所述各个待更新链接扫描结束后,将所述第一内存映射文件截断,获得第三内存映射文件,所述第三映射文件包括不存在于所述网页链接库中的所述各个待更新链接,以及不存在于所述网页链接库中的所述各个待更新链接的抓取状态;将所述第三内存映射文件中除抓取状态外的信息写入所述网页链接库中的原始变长文件,获得更新后的变长文件;所述更新后的变长文件将所述第三内存映射文件中的各个链接在所述变长文件的位置以及对应链接的长度反馈给所述第四内存映射文件,获得所述第二内存映射文件。步骤S209:根据所述第二内存映射文件更新所述网页链接库。具体的,可以将所述第二内存映射文件中的信息采用尾部追加的方式写入所述网页链接库中。步骤S203是一个优选的步骤,本实施例中没有本步骤也可以实现本发明的发明目的,如果没有步骤S203,那么步骤S204中“对于所述第一内存映射文件中的各个待更新链接”应改为“对于所述网页链接库中的各个待更新链接”,步骤S207中“将所述新链接的抓取顺序的变量值设置为:前一个不存在于所述网页链接库中的新链接对应的抓取顺序变量值与固定值之和;”更改为“将所述新链接的抓取顺序的变量值设置为:前一个不存在于所述网页链接库中的新链接对应的抓取顺序变量值与固定值之和,并将所述新链接存储至所述网页链接库中”,在去掉步骤S208以及步骤S209。步骤S210:跳过所述新链接。由于所述待更新链接存储在所述网页链接库中,而且在上述步骤中,该链接已经以初始链接的身份对所述网页链接库中对应链接进行了更新,所以当所述新链接属于所述网页链接库时,不对所述网页链接库进行处理,直接跳过。上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了两种系统,下面给出具体的实施例进行详细说明。本发明实施例,除了具有实施例一中的有益效果外,首先将所述网页链接库中网页的初始链接以及初始抓取状态映射到内存中,后续步骤,都是对内存中的初始抓取状态进行更新,最后在将内存中的初始抓取状态同步到硬盘中的所述网页链接库中,由于对内存的操作速度比对硬盘中的文件进行操作的速度要快,所以增加了所述网页链接库的更新速度;其次,将所述待更新链接的规模在硬盘上生成缓存文件,将所述缓存文件映射到内存中,获得第一内存映射文件,在扫描各个待更新链接时,都是从所述第一内存映射文件中扫描的,由于对内存的操作速度比对硬盘中的文件进行操作的速度要快,所以增加了所述网页链接库的更新速度;再次,本发明实施例是在所述第一映射文件中的各个待更新链接都扫描完毕后,才将扫描出的,不存在于所述网页链接库中的新链接更新至所述网页链接库中,而不是每扫描到一个不属于所述网页链接库的新链接就更新至所述网页链接库中,这样也加快了所述网页链接库的更新速度。实施例三请参阅图3,为本发明实施例公开的第一种网页链接库的更新系统的结构示意图,该系统中的网页链接库中各个链接是按照抓取顺序进行排序的,该系统可以包括:获取模块301、判断模块302、第一更新模块303以及第二更新模块304,其中:所述获取模块301,用于获取包括初始链接和新链接的待更新链接;所述判断模块302,用于判断所述待更新链接是否属于所述网页链接库;具体的,如果所述抓取顺序变量类型为静态变量,那么在生成一个链接对象之后,该对象的抓取顺序变量值就为零,如果所述网页链接库中的各个链接是按照正序排列的,而最小的一个链接的抓取顺序变量值为1,那么所述判断模块302,具体用于判断所述待更新链接的抓取顺序这一变量的值是否大于零。如果所述抓取顺序这个变量的类型不是静态变量,那么所述系统可以包括初始化模块,用于将各个新链接对应的抓取顺序变量值设置为预设值,所述预设值是指小于所述网页链接库中已存在链接的抓取顺序变量值的最小值;相应的,所述判断模块302,具体用于判断所述待更新链接的抓取顺序变量值是否大于所述预设值。在实际应用中,所述网页链接库中的各个链接可以是倒序排列的,所述预设值为大于所述网页链接库中各个链接对应的抓取顺序这一变量的最大值。相应的,所述判断模块302,具体用于判断所述待更新链接的抓取顺序这一变量的值是否小于所述预设值。所述第一更新模块303,用于在所述判断模块302的判断结果为是的情况下,根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态;所述第一更新模块303具体包括:计算子模块,用于根据所述待更新链接的抓取顺序,计算出所述待更新链接在所述网页链接库中的位置;第一存储子模块,用于根据所述待更新链接的当前抓取状态更新所述网页链接库中链接的初始抓取状态。所述第二更新模块304,用于在所述判断模块302的判断结果为否的情况下,按照与所述待更新链接对应的抓取顺序,将所述待更新链接更新至所述网页链接库中已有链接序列的后面。所述第二更新模块具体包括:设置子模块,用于将所述待更新链接的抓取顺序变量值设置为已扫描的不存在于所述网页链接库中的待更新链接的抓取顺序变量值与固定值之和,所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值之差,以及存储子模块,用于将设置后的所述待更新链接更新至所述网页链接库中已有链接序列的后面。本发明实施例,由于所述网页链接库中的各个链接包括抓取顺序,而所述网页链接库中的各个链接是按照与其对应的抓取顺序进行排序的,当所述判断模块302发现与所述新链接不存在于所述网页链接库中,可以调用所述第二更新模块304利用所述抓取顺序将所述新链接更新至所述网页链接库中链接序列的最后面,这样所述新链接不会因为抓取顺序在某两个已存在于所述网页链接库中的链接之间,就不会出现网页链接库中其他链接由于在所述网页链接库中的顺序发生变化,而导致的更新效率低的问题,从而提高了所述网页链接库的效率。实施例四请参阅图4,为本发明实施例公开的第二种网页链接库的更新系统的结构示意图,该系统可以包括:获取模块301、第一映射模块401、第二映射模块402、判断模块302、第二存储子模块403、设置子模块404、跳过子模块405、截断子模块406、同步子模块407以及第三存储子模块408,其中:所述获取模块301,用于获取包括初始链接和新链接的待更新链接;所述第一映射模块401,用于将所述网页链接库中的初始链接以及初始抓取状态映射到内存中;所述第二映射模块402,用于根据所述待更新链接的规模在硬盘上生成缓存文件,将所述缓存文件映射到内存中,获得第一内存映射文件;所述第一内存映射文件包括各个待更新链接以及各个待更新链接的抓取状态。所述判断模块302,具体包括:比较子模块,用于比较所述待更新链接的抓取顺序变量值与所述预设值的大小;获取子模块,用于根据所述比较子模块的比较结果,获得所述新链接的集合以及所述初始链接的集合,以及判断子模块,具体用于判断所述新链接集合中的各个新链接是否属于映射到内存中的初始链接;第二存储子模块403,用于根据所述判断模块302中获取子模块的获取结果,以及判断模块302根据所述初始链接集合中的初始链接的当前抓取状态更新所述内存中的所述首地址指向的链接的初始抓取状态。设置子模块404,用于在所述判断模块302中判断子模块的判断结果为否的情况下,将所述新链接的抓取顺序变量值设置为:前一个不存在于所述网页链接库中的新链接对应的抓取顺序变量值与固定值之和,所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值之差;跳过子模块405,用于在所述判断模块302中判断子模块的判断结果为是的情况下,跳过所述新链接。截断子模块406,用于处于所述第一映射文件中的各个待更新链接扫描结束后,将所述第一内存映射文件截断,获得第二内存映射文件;所述第二内存映射文件包括不存在于所述网页链接库中的所述各个待更新链接、不存在于所述网页链接库中的所述各个待更新链接的抓取状态以及不存在于所述网页链接库中的所述各个待更新链接在变长文件中的位置和所述链接的长度。同步子模块407,用于处于所述第一映射文件中的各个待更新链接扫描结束后,将映射到内存的各个初始链接以及对应的当前抓取状态同步到所述网页链接库中;第三存储子模块408,用于根据所述第二内存映射文件更新所述网页链接库。优选的,所述第三存储模块,具体用于将所述第二内存映射文件中的信息采用尾部追加的方式写入所述网页链接库中。本发明实施例,除了具有实施例三中的有益效果外,首先所述第一映射模块401将所述网页链接库中网页的初始链接以及初始抓取状态映射到内存中,后续都是对内存中的初始抓取状态进行更新操作,最后在通过所述同步模块407将内存中的初始抓取状态同步到硬盘中的所述网页链接库中,由于对内存的操作速度比对硬盘中的文件进行操作的速度要快,所以增加了所述网页链接库的更新速度;其次,所述第二映射模块402将所述待更新链接的规模在硬盘上生成缓存文件,将所述缓存文件映射到内存中,获得第一内存映射文件,所述判断模块302在扫描各个待更新链接时,都是从所述第一内存映射文件中扫描的,由于对内存的操作速度比对硬盘中的文件进行操作的速度要快,所以增加了所述网页链接库的更新速度;再次,所述第二存储模块408在所述第一映射文件中的各个待更新链接都扫描完毕后,才将扫描出的,不存在于所述网页链接库中的新链接更新至所述网页链接库中,而不是每扫描到一个不属于所述网页链接库的新链接就更新至所述网页链接库中,这样也加快了所述网页链接库的更新速度。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设
备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不
排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.一种网页链接库的更新方法,其特征在于,所述网页链接库中各个链接是按照对应的抓取顺序进行排序,包括步骤: A、获取包括初始链接和新链接的待更新链接; B、判断所述待更新链接是否属于所述网页链接库,如果是,则进入步骤C,如果否,则进入步骤D ; C、根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态; D、按照与所述待更新链接对应的抓取顺序,将所述待更新链接更新至所述网页链接库中已有链接序列的后面。
2.根据权利要求1所述方法,其特征在于,所述抓取顺序采用抓取顺序变量值表示,步骤D具体为: D11、将所述待更新链接的抓取顺序变量值设置为已扫描的不存在于所述网页链接库中的待更新链接的抓取顺序变量值与固定值之和,所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值之差; D12、将设置后的所述待更新链接更新至所述网页链接库中已有链接序列的后面。
3.根据权利要求2所述方法,其特征在于,所述抓取顺序变量值为静态变量,所述预设值为零,所述步骤B具体为: 判断所述待更新链接的抓取顺序变量值是否大于零,如果是,则进入步骤C,如果否,则进入步骤D。
4.根据权利要求2所述方法,其特征在于,所述步骤A还包括: 将各个新链接对应的抓取顺序变量值设置为预设值,所述预设值是指小于所述网页链接库中已存在链接的抓取顺序变量值的最小值或指大于所述网页链接库中已存在链接的抓取顺序变量值的最大值; 相应的,步骤B具体为: 通过比较所述待更新链接的抓取顺序变量值和所述预设值的大小,获得所述新链接的集合以及所述初始链接的集合,根据所述新链接的签名判断所述新链接集合中的各个新链接是否属于所述网页链接库,如果是,则进入步骤C,如果否,则进入步骤D ; 相应的,在所述步骤C为:根据所述初始链接集合中各个初始链接的当前抓取状态更新所述网页链接库中具有对应抓取顺序的链接的初始抓取状态,在所述新链接集合中的某一链接属于所述网页链接库的情况下,则跳过所述新链接。
5.根据权利要求1所述方法,其特征在于,在所述步骤B前还包括: 将所述网页链接库中网页的链接以及抓取状态映射到内存中。
6.根据权利要5所述方法,其特征在于,所述步骤C具体为: Cl、根据所述待更新链接的抓取顺序,计算出所述待更新链接在所述网页链接库中的位置; C2、根据所述待更新链接的当前抓取状态更新所述内存中所述位置的链接的初始抓取状态。
7.根据权利要求1所述方法,其特征在于,在所述步骤B前,还包括: 根据所述待更新链接的规模在硬盘上生成缓存文件,将所述缓存文件映射到内存中,获得第一内存映射文件,所述第一内存映射文件包括各个待更新链接以及各个待更新链接的抓取状态; 相应的,所述抓取顺序所述步骤D具体为: D21、将所述待更新链接的抓取顺序设置为:前一个不存在于所述网页链接库中的待更新链接对应的抓取顺序与固定值之和,所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值之差; D22、在处于所述第一映射文件中的各个待更新链接扫描结束后,将所述第一内存映射文件截断,获得第二内存映射文件,所述第二内存映射文件包括不存在于所述网页链接库中的所述各个待更新链接、不存在于所述网页链接库中的所述各个待更新链接的信息,并将映射到内存的各个初始链接以及对应的当前抓取状态同步到所述网页链接库中; D23、根据所述第二内存映射文件更新所述网页链接库。
8.根据权利要求7所述方法,其特征在于,所述步骤D3具体为: 将所述第二内存映射文件中的信息采用尾部追加的方式写入所述网页链接库中。
9.一种网页链接库的更新系统,其特征在于,所述网页链接库中各个链接是按照对应的抓取顺序进行排序的,包括: 获取模块,用于获取包括初始链接和新链接的待更新链接; 判断模块,用于判断 所述待更新链接是否属于所述网页链接库; 第一更新模块,用于在所述判断模块的判断结果为是的情况下,根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态; 第二更新模块,用于在所述判断模块的判断结果为否的情况下,按照与所述待更新链接对应的抓取顺序,将所述待更新链接更新至所述网页链接库中已有链接序列的后面。
10.根据权利要求9所述系统,其特征在于,所述抓取顺序采用抓取顺序变量值表示,所述第二更新模块具体包括: 设置子模块,用于将所述待更新链接的抓取顺序变量值设置为已扫描的不存在于所述网页链接库中的待更新链接的抓取顺序变量值与固定值之和,所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值之差; 存储子模块,用于将设置后的所述待更新链接更新至所述网页链接库中已有链接序列的后面。
11.根据权利要求10所述系统,其特征在于,所述抓取顺序变量类型为静态变量,所述预设值为零,相应的,所述判断模块,具体用于判断所述待更新链接的抓取顺序的抓取顺序变量值是否大于零。
12.根据权利要求10所述系统,其特征在于,还包括: 初始化模块,用于将各个新链接对应的抓取顺序变量值设置为预设值,所述预设值是指小于所述网页链接库中已存在链接的抓取顺序变量值的最小值; 相应的,所述判断模块,具体包括:比较子模块,用于比较所述待更新链接的抓取顺序变量值与所述预设值的大小;获取子模块,用于根据所述比较子模块的比较结果,获得所述新链接的集合以及所述初始链接的集合,以及判断子模块,用于判断所述新链接集合中的各个新链接是否属于所述网页链接库; 相应的,所述第一更新模块,具体包括:第一存储子模块,用于根据所述初始链接集合中各个初始链接的当前抓取状态更新所述网页链接库中具有对应抓取顺序的链接的初始抓取状态; 以及,跳过子模块,用于在所述判断子模块的判断结果为是的情况下,跳过所述新链接。
13.根据权利要求9所述系统,其特征在于,还包括: 第一映射模块,用于将所述网页链接库中网页的抓取状态映射到内存中。
14.根据权利要求13所述系统,其特征在于,所述第一更新模块具体包括: 计算子模块,用于根据所述待更新链接的抓取顺序,计算出所述待更新链接在所述网页链接库中的位置; 第二存储子模块,用于根据所述待更新链接的当前抓取状态更新所述内存中的所述位置的链接的初始抓取状态。
15.根据权利要求9所述系统,其特征在于,采用抓取顺序变量表示所述抓取顺序,所述系统还包括: 第二映射模块,用于根据所述待更新链接的规模在硬盘上生成缓存文件,将所述缓存文件映射到内存中,获得第一内存映射文件,所述第一内存映射文件包括各个待更新链接以及各个待更新链接的抓取状态; 相应的,所述第二更新模块,具体`包括: 设置子模块,用于将所述待更新链接的抓取顺序变量值设置为:前一个不存在于所述网页链接库中的待更新链接对应的抓取顺序变量值与固定值之和,所述固定值是指所述网页链接库中两个相邻初始链接对应的抓取顺序变量值之差; 截断子模块,用于处于所述第一映射文件中的各个待更新链接扫描结束后,将所述第一内存映射文件截断,获得第二内存映射文件,所述第二内存映射文件包括不存在于所述网页链接库中的所述各个待更新链接,以及不存在于所述网页链接库中的所述各个待更新链接的信息; 同步子模块,用于将映射到内存的各个初始链接以及对应的当前抓取状态同步到所述网页链接库中; 第三存储子模块,用于根据所述第二内存映射文件更新所述网页链接库。
16.根据权利要求15所述系统,其特征在于,所述第三存储子模块,具体用于将所述第二内存映射文件中的信息采用尾部追加的方式写入所述网页链接库中。
全文摘要
本发明公开了一种网页链接库更新方法及系统,所述网页链接库中各个链接是按照对应的抓取顺序进行排序,所述方法包括A、获取包括初始链接和新链接的待更新链接;B、判断所述待更新链接是否属于所述网页链接库,如果是,则进入步骤C,如果否,则进入步骤D;C根据所述待更新链接的当前抓取状态更新所述网页链接库中具有所述抓取顺序的链接的初始抓取状态;D、按照与所述待更新链接对应的抓取顺序,将所述待更新链接更新至所述网页链接库中已有链接序列的后面。从而提高了所述网页链接库更新的效率。
文档编号G06F17/30GK103106221SQ20111036206
公开日2013年5月15日 申请日期2011年11月15日 优先权日2011年11月15日
发明者陈华清, 于志伟, 吕晴 申请人:盛乐信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1