一种网页抓取方法及系统的制作方法

文档序号:6438439阅读:162来源:国知局
专利名称:一种网页抓取方法及系统的制作方法
技术领域
本发明涉及互联网领域,更具体的说,是涉及一种网页抓取的方法及系统。
背景技术
随着互联网的迅速发展,互联网的网页数量越来越庞大,互联网网页的收集也越来越重要,现有的网页抓取系统,就是一种收集互联网网页内容的系统。它根据一些初始链接集合出发,抓取这些初始链接的原始网页并提取所述原始网页上的新链接,并继续抓取所述原始网页上的新链接所指的网页,如此不断循环迭代抓取互联网上的网页。所述网页抓取系统基于网页链接库实现网页抓取。而现有的网页抓取系统是将其抓取的所有链接都集中存放到一个网页链接库中,但是现有的网页抓取系统对所述网页链接库的选取操作与更新操作是互斥的。所以所述网页抓取系统对所述网页链接库执行选取操作时,就无法执行对所述网页链接库的更新操作,只能等到所述选取过程结束;同理,如果对所述网页链接库执行更新操作时,所述网页抓取系统也只能等待,直至所述更新操作结束后,才可以执行选取操作。而且对所述网页链接库的不同的选取操作之间也是互斥的,当对所述网页链接库执行当前的选取操作时,就无法执行下一个选取操作;对所述网页链接库的不同的更新操作之间也是互斥的,当对所述网页链接库执行当前的更新操作时,就无法执行下一个更新操作。所述网页链接库存储了各个链接的抓取状态以及各个链接。所述选取操作指:所述网页抓取系统从所述网页链接库中选取出额定数量的初始链接。所述更新操作指:所述各个链接的抓取状态的更新,因为所述网页抓取系统在抓取网页的过程中,原有的被选取的链接的抓取状态会发现改变,这需要更新到所述网页链接库中。所述更新还包括:增加新链接到所述网页链接库中,因为所述网页抓取系统在抓取网页的过程中,会不断发现到新链接,所以必须将这些新链接增加到所述网页链接库中。在所述网页抓取系统中,由于存在无法对所述网页链接库同时进行选取和更新操作,这样就使得网页抓取系统抓取到的新链接无法及时更新到网页链接库中,而且所述网页链接库也不能同时进行选取和选取操作以及更新和更新操作,这三方面的原因导致了所述网页抓取系统在抓取网页的链接时存在效率低的技术问题。

发明内容
有鉴于此,本发明提供了一种网页抓取方法及系统,以克服现有技术中无法对所述网页抓取系统中的网页链接库同时进行选取和更新操作、选取和选取操作以及更新和更新操作,而导致的所述网页抓取系统在抓取网页的链接时存在效率低的技术问题。为实现上述目的,本发明提供如下技术方案:一种网页抓取方法,所述方法应用的网页抓取系统包括至少两个网页链接库,包括步骤:A、在任一个网页链接库处于空闲状态的情况下,从所述至少任一个网页链接库中选取额定数量的初始链接,所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态;B、从所述初始链接对应的各个原始网页中抓取新链接;C、对于每个待更新链接,所述待更新链接指所述新链接以及所述初始链接,判断所述待更新链接是否存在于任一个网页链接库中,如果是,则进入步骤D,如果否,则进入步骤E;D、将所述待更新链接存储至包含所述待更新链接的网页链接库对应的链接缓存中,或在包含所述待更新链接的网页链接库处于空闲状态的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态;E、将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。一种网页抓取系统,所述系统包括:至少两个网页链接库,以及,状态检测模块,用于检测任一个网页链接库是否处于空闲状态,所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态;选取模块,用于在所述状态检测模块的检测结果为是的情况下,从至少任一个处于空闲状态的网页链接库中选取额定数量的初始链接;抓取模块,用于根据所述初始链接获得与所述初始连接对应的各个原始网页,再从所述各个原始网页中抓取新链接;重复链接判定模块,用于判断各个待更新链接是否存在于任一个网页链接库中,所述待更新链接指所述新链接以及所述初始链接;更新模块,在所述重复链接判定模块的判断结果为是的情况下,将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新链接缓存中,或者,在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包括所述待更新链接的网页链接库中对应链接的抓取状态,在所述重复链接判定模块的判断结果为否的情况下,将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。经由上述的技术方案可知,采用本发明实施例公开的方法和系统,用至少两个网页链接库替换现有技术中的一个网页链接库,从而所述网页抓取系统就可以从处于空闲状态的至少任一个网页链接库中选取额定数量的初始链接,在进行更新时,对于每一个所述待更新链接,判断所述待更新链接是否存在于任一个网页链接库中,如果存在,则将所述待更新链接存储至包括所述待更新链接的网页链接库对应的更新链接缓存中,或者,当包括所述待更新链接的网页链接库处于空闲状态时,可以直接根据所述待更新链接的抓取状态,将该网页链接库中对应的链接的抓取状态进行更新,对于不存在于任何网页链接库中的所述待更新链接,将其存储至任一个网页链接库对应的追加链接缓存中,从而实现了网页链接库同时进行不同的选取操作、同时进行不同的更新操作以及同时进行选取与更新操作,从而提高了网页抓取系统的效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本发明实施例公开的第一种网页抓取方法流程图;图2为本发明实施例公开的第二种网页抓取方法流程图;图3为本发明实施例公开的第三种网页抓取方法流程图;图4为本发明实施例公开的第一种网页抓取系统结构示意图;图5为本发明实施例公开的第二种网页抓取系统结构示意图;图6为本发明实施例公开的第三种网页抓取系统结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一请参阅附图1,为本发明实施例公开的第一种网页抓取方法流程图,该方法可以包括:步骤SlOl:在任一个网页链接库处于空闲状态的情况下,从所述至少任一个网页链接库中选取额定数量的初始链接;所述各个网页链接库中存储的链接各不相同。所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态。所述初始链接可以为URL(统一资源定位符)。现有技术中的网页抓取系统只有一个网页链接库,而对于同一个网页链接库不能同时进行选取和更行操作,而且对同一个网页链接库不同的选取操作以及不同的更新操作都是互斥的,例如:如果所述网页链接库当前处于选取操作,当下一次选取操作到来时,就必须等待直至当前选取操作结束;如果所述网页链接库当前处于更新状态,当下一次更新操作到来时,就必须等待直至当前更新操作结束。这样现有技术中网页抓取系统的效率就降低了,所以本发明是将原有的一个网页链接库分为至少两个网页链接库,也就是说N个网页链接库代替了现有技术中的一个网页链接库,所述N大于或者等于2,N取自然数,但是所述N个网页链接库存储链接量之和与现有技术中网页链接库的存储量相同,当然根据实际需要,也可以大于或小于现有技术中网页链接库的存储量。所述网页链接库的个数与所述网页抓取系统所占用的内存成反比,也就是网页抓取系统能够占用的内存越小,那么网页链接库的数量就要相对的多一些,因为这样每个网页链接库的存储量就会相应减小,这样每个网页链接库不论是在选取或更新的时候,占用的内存都小,这样所述网页抓取系统的效率就高了 ;如果网页抓取系统能够占用的内存大,那么网页链接库的数量相对的少一些。但是本发明所述N个网页链接库中,对于同一个网页链接库,也是不能同时进行选取和更新操作的,而且不同的选取操作以及不同的更新操作之间也是互斥的,由于网页抓取系统的操作是循环的,也就是所述网页抓取系统在不停的选取、抓取以及更新,所以首先要判断本发明中各个网页链接库中哪一个处于空闲状态。
如果判断出只有一个网页链接库处于空闲状态,那么只能从处于空闲状态的该网页链接库中选取额定数量的初始链接,如果判断出至少有两个网页链接库处于空闲状态,例如:3个,那么可以从这三个网页链接库中选取额定数量的初始链接,当然也可以只从这三个中的一个选取额定数据量的初始链接,或者这三个中的两个选择额定数量的初始链接,到底选择几个可以根据实际情况而定。从几个网页链接库中选取额定数量的初始链接不影响本发明的实现,所以在本发明实施例中就不对此作特殊限定。所述初始链接,一般来说就是重要的或更新频率比较高的网页的链接。所述额定数量是根据实际情况而定的,例如:如果所述网页抓取系统占用的内存大,那么所述额定数量就大;反之越小。步骤S102:从所述初始链接对应的各个原始网页中抓取新链接;所述新链接可以为URL(统一资源定位符),还可以为所述原始网页上的文字链接。具体的,根据所述初始链接所在的IP,将所述链接放入到对应的IP队列中,然后不停的从每个IP队列上采用多线程方法取出待抓取的链接并抓取。根据抓取的初始链接的原始网页,解析所述原始网页的HTML文件,从中抽取出新链接。需要注意的是,现有技术中已经存在了本步骤的具体实施方案,因此具体的本文就不再赘述。步骤S103:对于每个待更新链接,判断所述待更新链接是否存在于任一个网页链接库中,如果是,则进入步骤S104,如果否,则进入步骤S105 ;所述待更新链接指所述新链接以及所述初始链接。具体的,采用多哈希函数映射的快速查找算法判断各个所述待更新链接是否存在于任一个网页链接库中。这样通过数百兆的内存就可以判断数亿的所述待更新链接重复的问题,大大降低了内存的消耗。步骤S104:将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新连接缓存中,或者在包括所述待更新链接的网页链接库处于空闲状态的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态;由于在网页链接库中的链接是以类或结构体的对象的方式进行存储的,而类或结构体在定义时,有抓取状态对应的变量,而在抓取到新链接后就会生成对应的对象,步骤S104中将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新连接缓存中,实际就是将待更新链接的当前抓取状态存储到包括所述待更新链接的网页链接库对应的更新连接缓存中。对于每一个网页链接库都对应一个更新链接缓存。对于包含所述待更新链接的网页链接库,不论其是否处于空闲状态,都可以将所述待更新链接存储至与其对应的更新链接缓存中,如果包含所述待更新链接的网页链接库处于空闲状态,则优选地,可以直接将所述待更新链接存储至包含所述待更新链接的网页链接库中。步骤S105:将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。同步骤S104中一样,将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中,实际就是将所述待更新链接以及对应的抓取状态追加到任一个网页链接库对应的追加链接缓存中。在更新过程中,如果直接将所述待更新链接写入任一个处于空闲状态的网页链接库中,将会占用大量内存,使整个网页抓取效率降低,所以,先将所述待更新链接存储到任一个网页链接库对应的追加链接缓存中。对于每一个网页链接库都对应一个追加链接缓存。本发明实施例中,用至少两个网页链接库替换现有技术中的一个网页链接库,从而所述网页抓取系统就可以从处于空闲状态的至少任一个网页链接库中选取额定数量的初始链接,在进行更新时,对于每一个所述待更新链接,判断所述待更新链接是否存在于任一个网页链接库中,如果存在,则将所述待更新链接存储至包括所述待更新链接的网页链接库对应的更新链接缓存中,或者,当所述包括所述待更新链接的网页链接库处于空闲状态时,可以直接根据所述待更新链接的抓取状态,将该网页链接库中对应的链接的抓取状态进行更新,对于不存在于任何网页链接库中的所述待更新链接,将其存储至任一个网页链接库对应的追加链接缓存中,从而实现了网页链接库同时进行不同的选取操作、同时进行不同的更新操作以及同时进行选取与更新操作的目的,进一步提高了网页抓取系统的效率。实施例二在实际应用中,根据不同的需求,有时需要各个网页链接库存储的链接量大体相同,请参阅图2,为本发明实施例公开的第二种网页抓取方法流程图,该方法可以包括:步骤S201:检测所述各个网页链接库是否处于空闲状态,如果至少两个网页链接库处于空闲状态,则比较所述处于空闲状态的网页链接库的存储链接量,得到链接存储量最大的网页链接库;根据实际情况,也可以将处于空闲状态的网页链接库进行正向排序,获得前三个链接存储量最大的网页链接库,为了方便将前三名取名为:第一网页链接库、第二网页链接库以及第三网页链接库,获得几个链接存储量最大的网页链接库不影响本发明的实现,所以对此不作特殊限定。步骤S202:从所述链接存储最大的网页链接库中选取额定数量的初始链接;如果步骤S201获得了所述第一网页链接库、所述第二网页链接库以及所述第三网页链接库,那么可以从这是三个网页链接库中选取初始链接,优选的,从所述第一网页链接库中选取的初始链接个数多于从所述第二网页链接库中选取的初始链接的个数,从所述第二网页链接库中选取的初始链接个数多于从所述第三网页链接库选取的初始链接的个数。当然,根据不同实际情况,也可以从所述三个网页链接库中选取的初始链接个数相同。步骤S203:从所述初始链接对应的各个原始网页中抓取新链接;步骤S204:对于每个待更新链接,判断所述待更新链接是否存在于任一个网页链接库中,如果是,则进入步骤S205,如果否,则进入步骤S206 ;步骤S205:将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新连接缓存中,或者在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态;所述待更新链接指所述新链接以及所述初始连接。步骤S206:将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。
在所述步骤S206之后,还可以包括步骤S207。步骤S207:在所述各个待更新链接判断完毕后,将所述追加链接缓存中的链接写入与所述追加链接缓存对应的网页链接库中,以及将更新链接缓存中的链接的当前抓取状态写入与所述更新链接缓存对应的网页链接库中。根据实际情况的不同,步骤S207还可以在下一轮更新或选取的时候执行,而且步骤“将所述追加链接缓存中的链接写入与所述追加链接缓存对应的网页链接库中”与步骤“将更新链接缓存中的链接的当前抓取状态写入与所述更新链接缓存对应的网页链接库中”可以不必同时执行,例如,步骤“将所述追加链接缓存中的链接写入与所述追加链接缓存对应的网页链接库中”可以在下一轮执行更新操作之前执行,而步骤“将更新链接缓存中的链接的当前抓取状态写入与所述更新链接缓存对应的网页链接库中”可以在本轮结束后执行。实际上将所述追加链接缓存中的链接写入与所述追加链接缓存对应的网页链接库中,就是将所述追加链接缓存中的链接以及对应的抓取状态写入与所述追加链接缓存对应的网页链接库中,而将更新链接缓存中的链接的当前抓取状态写入与所述更新链接缓存对应的网页链接库中,就是将更新链接缓存中的链接的当前抓取状态写入与所述更新链接缓存对应的网页链接库中。这一轮的待更新链接都逐一判断完毕后,在将所述追加链接缓中的链接追加到与所述追加链接缓存对应的额网页链接库中。这样就更能节省了内存的开销,使整个网页抓取系统的效率提高得更多。本发明实施例中,不仅可以实现实施例一中的效果,因为在选取初始链接时,首先判断处于空闲状态的各个网页链接库存储链接的量,并从存储链接量最大的网页链接库中选取初始链接,所以,还可以实现减少各个网页链接库存储链接量的差异的效果。实施例三请参阅图3,为本发明实施例公开的第三种网页抓取方法流程图,该方法可以包括:步骤S301:在任一个网页链接库处于空闲状态的情况下,从所述至少任一个网页链接库中选取额定数量的初始链接;步骤S302:从所述初始链接对应的各个原始网页中抓取新链接;步骤S303:检测所述各个网页链接库是否处于空闲状态,如果至少两个处于空闲状态,则进入步骤S304,如果只有一个处于空闲状态,则进入步骤S305 ;步骤S304:比较所述处于空闲状态的网页链接库中链接的存储量,得到链接存储量最小的网页链接库;步骤S305:对于每个待更新链接,判断所述待更新链接是否存在于任一个网页链接库中,如果是,则进入步骤S306,如果否,则进入步骤S307 ;具体的,对于每个所述待更新链接,判断所述待更新链接是否存在于除所述链接存储量最小的网页链接库以外的其他任一个网页链接库中,如果否,则判断所述待更新链接是否存在于所述链接存储量最小的网页链接库中。如果只有一个网页链接库处于空闲状态,那么具体的,对于每个所述待更新链接,判断所述待更新链接是否存在于除所述处于空闲状态的网页链接库以外,其他任一个网页链接库中,如果否,则判断所述待更新链接是否存在于所述处于空闲状态的网页链接库中。步骤S306:将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新连接缓存中,或者在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态;所述待更新链接指所述新链接以及所述初始连接。如果所述待更新链接存在于除所述链接存储量最小的网页链接库以外的其他任一个网页链接库中,那么步骤S306具体为:将所述待更新链接存储至包含所述待更新链接的所述其他任一个网页链接库对应的更新链接缓存中,或在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态;如果所述待更新链接存在于所述链接存储量最小的网页链接库中,那么步骤S306具体为:将所述待更新链接存储至所述链接存储量最小的网页链接库对应的更新链接缓存中,或在所述链接存储量最小的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新所述链接存储量最小的网页链接库中对应链接的抓取状态。步骤S307:将所述待更新链接追加到所述链接存储量最小的网页链接库对应的追加链接缓存中。不论所述链接存储量最小的网页链接库是否处于空闲状态,都将所述待更新链接存储至与其对应的追加链接缓存中。或根据实际情况的不同,将所述待更新链接追加到所述处于空闲状态的网页链接库对应的追加链接缓存中。根据实际情况不同,所述步骤S304可以在所述步骤S306的后面。本发明实施例中,不经可以实现实施例一中的效果,因为在进行更新时,首先判断处于空闲状态的各个网页链接库所存储的链接,获得链接存储量最少的网页链接库,对于不存在于任何网页链接库中的所述待更新链接,将其存储至所述链接存储量最少的网页链接库对应的追加链接缓存中,所以,还可以实现减少各个网页链接库存储链接量的差异的效果。尤其是将实施例二与实施例三中的步骤相结合,能使各个网页链接库之间存储链接量的差异降到最小。上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的系统实现,因此本发明还公开了三种系统,下面给出具体的实施例进行详细说明。实施例四请参阅图4,为本发明实施例公开的第一种网页抓取系统结构示意图,该系统可以包括至少两个网页链接库,以及状态检测模块401、选取模块402、抓取模块403、重复链接判定模块404和更新模块405,其中:所述状态检测模块401,用于检测任一个网页链接库是否处于空闲状态;所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态。所述选取模块402,用于在所述状态检测模块的检测结果为是的情况下,从至少任一个处于空闲状态的网页链接库中选取额定数量的初始链接;所述抓取模块403,用于根据所述初始链接,获得与所述初始连接对应的各个原始网页,再从所述各个原始网页中抓取新链接;
所述重复链接判定模块404,用于判断各个待更新链接是否存在于任一个网页链接库中;所述待更新链接指所述新链接以及所述初始链接。优选的,对于每一个网页链接库都有一个与之相对应的重复链接判定模块,所述重复链接判定模块中存储了与之对应的网页链接库中所有的链接签名,在后续每次在所述网页链接库中有新链接增加时,都会将该新链接的链接签名加入到所述重复链接判定模块中。所述链接签名是指将链接按照一定的算法映射到一个64位无符号整形值,例如采用md5算法。所述更新模块405,在所述重复链接判定模块404的判断结果为是的情况下,将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新链接缓存中,或者,在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包括所述待更新链接的网页链接库中对应链接的抓取状态,在所述重复链接判定模块404的判断结果为否的情况下,将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。本发明实施例中,用至少两个网页链接库替换现有技术中的一个网页链接库,从而所述网页抓取系统就可以调用所述状态检测模块401获得处于空闲状态的网页链接库,所述选取模块402从处于空闲状态的至少任一个网页链接库中选取额定数量的初始链接,所述重复链接判定模块404从所述抓取模块403获得所述待更新链接,然后对于每一个所述待更新链接,判断所述待更新链接是否存在于任一个网页链接库中,如果存在,则调用所述更新模块405将所述待更新链接存储至包括所述待更新链接的网页链接库对应的更新链接缓存中,或者,当所述状态检测模块401检测到包括所述待更新链接的网页链接库处于空闲状态时,所述更新模块405可以直接根据所述待更新链接的抓取状态,将该网页链接库中对应的链接的抓取状态进行更新,对于不存在于任何网页链接库中的所述待更新链接,所述更新模块405将其存储至任一个网页链接库对应的追加链接缓存中,从而实现了网页链接库同时进行不同的选取操作、同时进行不同的更新操作以及同时进行选取与更新操作,从而提高了网页抓取系统的效率。实施例五请参阅图5,为本发明实施例公开的第二种网页抓取系统结构示意图,该系统可以包括:状态检测模块401、第一链接存储量比较模块501、选取模块402、抓取模块403、重复链接判定模块404和更新模块405,其中:所述状态检测模块401,用于检测任一个网页链接库是否处于空闲状态;所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态。 所述第一链接存储量比较模块501,用于在所述状态检测模块检测出至少两个网页链接库处于空闲状态的情况下,比较所述处于空闲状态的网页链接库的存储链接量,得到链接存储量最大的网页链接库;相应的,所述选取模块402,具体用于从所述链接存储量最大的网页链接库中选取额定数量的初始链接。所述抓取模块403,用于根据所述初始链接对应的各个原始网页,再从所述各个原始网页中抓取新链接;
所述重复链接判定模块404,用于判断各个待更新链接是否存在于任一个网页链接库中;所述待更新链接指所述新链接以及所述初始链接。所述更新模块405,在所述重复链接判定模块404的判断结果为是的情况下,将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新链接缓存中,或者,在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包括所述待更新链接的网页链接库中对应链接的抓取状态,在所述重复链接判定模块404的判断结果为否的情况下,将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。所述系统还可以包括:写入模块502,用于在所述各个待更新链接判断完毕后,将所述追加链接缓存中的链接写入与所述追加链接缓存对应的网页链接库中,以及将更新链接缓存中的链接的当前抓取状态写入与所述更新链接缓存对应的网页链接库中。本发明实施例中,不仅可以实现实施例四中的效果,因为所述第一链接存储量比较模块501判断处于空闲状态的各个网页链接库存储链接的量,并从存储链接量最大的网页链接库中选取初始链接,所以,还可以实现减少各个网页链接库存储链接量的差异的效果O实施例六请参阅图6,为本发明实施例公开的第三种网页抓取系统结构示意图,该系统可以包括至少两个网页链接库,以及状态检测模块401、选取模块402、第二链接存储量比较模块601、抓取模块403、重复链接判定模块404和更新模块405,其中:所述状态检测模块401,用于检测任一个网页链接库是否处于空闲状态;所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态。所述选取模块402,用于在所述状态检测模块的检测结果为是的情况下,从至少任一个处于空闲状态的网页链接库中选取额定数量的初始链接;所述第二链接存储量比较模块601,用于在所述状态检测模块401检测出至少两个网页链接库处于空闲状态的情况下,则比较所述处于空闲状态的网页链接库中链接的存储量,得到所述链接存储量最小的网页链接库;第二链接存储量比较模块601,用于在所述更新模块检测出所述待更新链接不存在于任一个网页链接库的情况下,并且所述状态检测模块检测出至少两个网页链接库处于空闲状态的情况下,则比较所述处于空闲状态的网页链接库中链接的存储量,得到所述链接存储量最小的网页链接库;所述重复链接判定模块404,用于判断各个待更新链接是否存在于任一个网页链接库中,所述待更新链接指所述新链接以及所述初始链接;所述重复链接判定模块404,还可以包括:第一重复连接判定子模块,用于判断所述待更新链接是否存在于除所述链接存储量最小的网页链接库以外,其他任一个网页链接库中;相应的,实施例五中所述更新模块405,具体用于将所述待更新链接存储至包含所述待更新链接的网页链接库对应的更新链接缓存中,或在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态;以及第二重复连接判定子模块,用于在所述第一重复连接判定子模块的判定结果为否的情况下,判断所述待更新链接是否存在于所述链接存储量最小的网页链接库中。相应的,实施例五中所述更新模块405,具体用于在所述第二重复连接判定子模块的判定结果为是的情况下,所述待更新链接存储至所述链接存储量最小的网页链接库对应的更新链接缓存中,或在所述链接存储量最小的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新所述链接存储量最小的网页链接库中对应链接的抓取状态。相应的,实施例五所述更新模块405,具体用于将所述新链接追加到所述链接存储量最小的网页链接库对应的追加链接缓存中。本发明实施例中,不仅可以实现实施例一中的效果,因为在进行更新前,所述第二链接存储量比较模块601判断处于空闲状态的各个网页链接库所存储的链接,获得链接存储量最少的网页链接库,对于不存在于任何网页链接库中的所述待更新链接,所述更新模块405将其存储至所述链接存储量最少的网页链接库对应的追加链接缓存中,所以,还可以实现减少各个网页链接库存储链接量的差异的效果。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置或系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设
备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不
排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.一种网页抓取方法,其特征在于,所述方法应用的网页抓取系统包括至少两个网页链接库,包括步骤: A、在任一个网页链接库处于空闲状态的情况下,从所述至少任一个网页链接库中选取额定数量的初始链接,所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态; B、从所述初始链接对应的各个原始网页中抓取新链接; C、对于每个待更新链接,所述待更新链接指所述新链接以及所述初始链接,判断所述待更新链接是否存在于任一个网页链接库中,如果是,则进入步骤D,如果否,则进入步骤E ; D、将所述待更新链 接存储至包含所述待更新链接的网页链接库对应的链接缓存中,或在包含所述待更新链接的网页链接库处于空闲状态的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态; E、将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。
2.根据权利要求1所述方法,其特征在于,在所述步骤A前,还包括: 步骤F、检测所述各个网页链接库是否处于空闲状态,如果至少两个网页链接库处于空闲状态,则比较所述处于空闲状态的网页链接库的存储链接的量,得到链接存储量最大的网页链接库; 相应的,步骤A为:从所述链接存储量最大的网页链接库中选取额定数量的初始链接。
3.根据权利要求1所述方法,其特征在于,在所述步骤C前还包括: 步骤G、检测所述各个网页链接库是否处于空闲状态,如果至少两个处于空闲状态,则比较所述处于空闲状态的网页链接库中链接的存储量,得到链接存储量最小的网页链接库; 相应的,所述步骤E具体为:将所述待更新链接追加到所述链接存储量最小的网页链接库对应的追加链接缓存中。
4.根据权利要求3所述方法,其特征在于,所述步骤C具体为: Cl、对于每个所述待更新链接,判断所述待更新链接是否存在于除所述链接存储量最小的网页链接库以外的其他任一个网页链接库中,如果是,则相应的,所述步骤D为:将所述待更新链接存储至包含所述待更新链接的所述其他任一个网页链接库对应的更新链接缓存中,或在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态;如果否,则进入步骤C2 ; C2、判断所述待更新链接是否存在于所述链接存储量最小的网页链接库中,如果是,则相应的,所述步骤D为:将所述待更新链接存储至所述链接存储量最小的网页链接库对应的更新链接缓存中,或在所述链接存储量最小的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新所述链接存储量最小的网页链接库中对应链接的抓取状态。
5.根据权利要求1所述方法,其特征在于,所述步骤C具体为:采用多哈希函数映射的快速查找算法判断各个所述待更新链接是否存在于任一个网页链接库中。
6.根据权利要求1所述方法,其特征在于,在步骤E后,还包括: 步骤H、在所述各个待更新链接判断完毕后,将所述追加链接缓存中的链接写入与所述追加链接缓存对应的网页链接库中,以及将更新链接缓存中的链接写入与所述更新链接缓存对应的网页链接库中。
7.—种网页抓取系统,其特征在于,所述系统包括:至少两个网页链接库; 以及,状态检测模块,用于检测任一个网页链接库是否处于空闲状态,所述空闲状态指所述网页链接库既不处于被选取状态,又不处于更新状态; 选取模块,用于在所述状态检测模块的检测结果为是的情况下,从至少任一个处于空闲状态的网页链接库中选取额定数量的初始链接; 抓取模块,用于根据所述初始链接获得与所述初始连接对应的各个原始网页,再从所述各个原始网页中抓取新链接; 重复链接判定模块,用于 判断各个待更新链接是否存在于任一个网页链接库中,所述待更新链接指所述新链接以及所述初始链接; 更新模块,在所述重复链接判定模块的判断结果为是的情况下,将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新链接缓存中,或者,在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包括所述待更新链接的网页链接库中对应链接的抓取状态,在所述重复链接判定模块的判断结果为否的情况下,将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。
8.根据权利要求7所述系统,其特征在于,所述系统还包括: 第一链接存储量比较模块,用于在所述状态检测模块检测出至少两个网页链接库处于空闲状态的情况下,比较所述处于空闲状态的网页链接库的存储链接量,得到链接存储量最大的网页链接库; 相应的,所述选取模块,具体用于从所述链接存储量最大的网页链接库中选取额定数量的初始链接。
9.根据权利要求7所述系统,其特征在于,所述系统还包括: 第二链接存储量比较模块,用于在所述状态检测模块检测出至少两个网页链接库处于空闲状态的情况下,则比较所述处于空闲状态的网页链接库中链接的存储量,得到所述链接存储量最小的网页链接库; 相应的,所述更新模块,具体用于将所述新链接追加到所述链接存储量最小的网页链接库对应的追加链接缓存中。
10.根据权利要求9所述系统,其特征在于,所述重复链接判定模块还包括: 第一重复连接判定子模块,用于判断所述待更新链接是否存在于除所述链接存储量最小的网页链接库以外,其他任一个网页链接库中; 相应的,所述更新模块,具体用于将所述待更新链接存储至包含所述待更新链接的网页链接库对应的更新链接缓存中,或在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态; 以及,第二重复连接判定子模块,用于在所述第一重复连接判定子模块的判定结果为否的情况下,判断所述待更新链接是否存在于所述链接存储量最小的网页链接库中; 相应的,所述更新模块,具体用于在所述第二重复连接判定子模块的判定结果为是的情况下,所述待更新链接存储至所述链接存储量最小的网页链接库对应的更新链接缓存中,或在所述链接存储量最小的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新所述链接存储量最小的网页链接库中对应链接的抓取状态。
11.根据权利要求7所述方法,其特征在于,所述重复链接判定模块具体为:多哈希函数映射的快速查找算法重复链接判定模块。
12.根据权利要求7所述系统,其特征在于,所述系统还包括: 写入模块,用于在所述待更新链接判断完毕后,将所述追加链接缓存中的链接写入与所述追加链接缓存对应的网页链接库,以及将更新链接缓存中的链接的当前抓取状态写入与所述更新链接缓存对应的网页`链接库中。
全文摘要
本发明公开了一种网页抓取方法和系统,该方法包括在任一个网页链接库处于空闲状态的情况下,从至少任一个网页链接库中选取额定数量的初始链接;从所述初始连接对应的各个原始网页中抓取新链接;对每个待更新链接,判断所述待更新链接是否存在于任一个网页链接库中,如果是,将所述待更新链接存储到包括所述待更新链接的网页链接库对应的更新连接缓存中,或者在包括所述待更新链接的网页链接库处于空闲的情况下,根据所述待更新链接的抓取状态更新包含所述待更新链接网页连接库中对应链接的抓取状态,如果否,将所述待更新链接追加到任一个网页链接库对应的追加链接缓存中。采用本发明实施例公开的方法或系统,可以提高网页抓取系统的效率。
文档编号G06F17/30GK103106219SQ20111036187
公开日2013年5月15日 申请日期2011年11月15日 优先权日2011年11月15日
发明者陈华清, 吕晴 申请人:盛乐信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1