爬虫种子获取方法与设备及爬虫爬取方法与设备转让专利

申请号 : CN201110232595.X

文献号 : CN102355488B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴滨华王祖海

申请人 : 北京星网锐捷网络技术有限公司

摘要 :

本发明提供一种爬虫种子获取方法与设备及爬虫爬去方法与设备。爬虫种子获取方法包括:根据预设检索词词典和目标导航网站的URL特性,构造动态页面请求;将动态页面请求发送给目标导航网站的服务器;根据预设提取策略,从服务器根据动态页面请求返回的检索结果页面中提取目标URL,目标URL为检索结果页面中的URL的主域名地址;对目标URL进行唯一化处理,获取唯一化目标URL,将唯一化目标URL作为爬虫种子。本发明技术方案能够提供大量的、离散度大的爬虫种子,从而缩短形成主流URL的时间,提高主流URL的覆盖性,降低爬虫系统进行爬取时的时间成本。

权利要求 :

1.一种爬虫种子获取方法,其特征在于,包括:

根据预设检索词词典和目标导航网站的统一资源定位符URL特性,构造动态页面请求;

将所述动态页面请求发送给所述目标导航网站的服务器;

根据预设提取策略,从所述服务器根据所述动态页面请求返回的检索结果页面中提取目标URL,所述目标URL为所述检索结果页面中的URL的主域名地址;

对所述目标URL进行唯一化处理,获取唯一化目标URL,将所述唯一化目标URL作为爬虫种子;

其中,所述根据预设检索词词典和目标导航网站的URL特性,构造动态页面请求包括:将所述检索词词典中的所有检索词加载到内存空间;

当所述内存空间中有检索词存在时,获取一个检索词;

按照所述目标导航网站的URL特性,用所获取的检索词对应的十六进制编码构造动态URL,以形成所述动态页面请求;

其中,所述根据预设提取策略,从所述服务器根据所述动态页面请求返回的检索结果页面中提取目标URL包括:接收所述服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为所述目标URL,并将所述目标URL加入唯一化队列中;

当根据预设检索页面阈值判断出当前检索结果页面还有下一页时,获取下一页页面请求,并将所述下一页页面请求发送给所述服务器,并继续执行接收所述服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为所述目标URL,并将所述目标URL加入唯一化队列中的操作,直到当前检索结果页面不存在下一页为止,然后将与所述检索结果页面对应的检索词从所述内存空间中删除。

2.根据权利要求1所述的爬虫种子获取方法,其特征在于,所述按照所述目标导航网站的URL特性,用所获取的检索词对应的十六进制编码构造动态URL,以形成所述动态页面请求包括:判断所述目标导航网站是否为预设的特殊网站;

如果判断结果为是,将所获取的检索词对应的GB2312格式的编码转换为UTF-8格式的编码,将UTF-8格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合所述特殊网站的URL特性的动态URL,以形成所述动态页面请求;

如果判断结果为否,将所获取的检索词对应的GB2312格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合所述目标导航网站的URL特性的动态URL,以形成所述动态页面请求。

3.根据权利要求1或2所述的爬虫种子获取方法,其特征在于,所述将所述动态页面请求发送给所述目标导航网站的服务器包括:向所述服务器发送超文本传输协议HTTP请求,所述HTTP请求包括所述动态页面请求;

或者

向所述服务器发送URL访问请求,所述URL访问请求包括所述动态页面请求。

4.根据权利要求1所述的爬虫种子获取方法,其特征在于,所述获取下一页页面请求,并将所述下一页页面请求发送给所述服务器包括:从当前检索结果页面中获取下一页点击按钮,点击所述下一页点击按钮以向所述服务器发送所述下一页页面请求;或者根据所述动态页面请求对应的检索词和当前检索结果页面的页面规律,构造所述下一页检索结果页面对应的动态URL,并将所述下一页检索结果页面对应的动态URL发送给所述服务器。

5.根据权利要求1所述的爬虫种子获取方法,其特征在于,所述对所述目标URL进行唯一化处理,获取唯一化目标URL,将所述唯一化目标URL作为爬虫种子包括:当所述唯一化队列中还存在目标URL时,从所述唯一化队列中获取一目标URL;

当所获取的目标URL已经存在于爬虫种子列表中时,将所获取的目标URL从唯一化队列中删除,并判断所述唯一化队列中是否还存在目标URL;

当所获取的目标URL不存在于所述爬虫种子列表中时,将所获取的目标URL存储到所述爬虫种子列表中,将所获取的目标URL从唯一化队列中删除,并判断所述唯一化队列中是否还存在目标URL;

当所述唯一化队列中不存在目标URL时,将所述爬虫种子列表中存储的目标URL作为所述爬虫种子。

6.一种使用权利要求1-5任一项所述的爬虫种子获取方法所获取的爬虫种子的爬虫爬取方法,其特征在于,包括:当内存空间中的种子队列中存在所述爬虫种子时,从所述种子队列中获取一个爬虫种子进行爬取,并将根据所述爬虫种子爬取到的页面中的URL添加到所述内存空间的待爬取队列中,并将爬取过的爬虫种子从所述种子队列中删除;

当所述种子队列中不存在所述爬虫种子,而所述待爬取队列中存在待爬取URL时,从所述待爬取队列中获取一个待爬取URL进行爬取,并将根据所获取的待爬取URL爬取到的页面中的URL添加到所述待爬取队列中,并将已爬取的URL从所述待爬取队列中删除。

7.根据权利要求6所述的爬虫爬取方法,其特征在于,在所述内存空间中的种子队列中存在所述爬虫种子时,从所述种子队列中获取一个爬虫种子进行爬取之前包括:将所述爬虫种子列表中的爬虫种子全部加载到所述内存空间中的种子队列中;或者定时访问所述爬虫种子列表,将所述爬虫种子列表中未被加载的爬虫种子加载到所述内存空间的种子队列中,并为所述爬虫种子列表中被加载到所述种子队列中的爬虫种子设置访问标识。

8.一种爬虫种子获取设备,其特征在于,包括:

构造模块,用于根据预设检索词词典和目标导航网站的统一资源定位符URL特性,构造动态页面请求;

发送模块,用于将所述动态页面请求发送给所述目标导航网站的服务器;

提取模块,用于根据预设提取策略,从所述服务器根据所述动态页面请求返回的检索结果页面中提取目标URL,所述目标URL为所述检索结果页面中的URL的主域名地址;

获取模块,用于对所述目标URL进行唯一化处理,获取唯一化目标URL,将所述唯一化目标URL作为爬虫种子;

其中,所述构造模块包括:

加载单元,用于将所述检索词词典中的所有检索词加载到内存空间;

检索词获取单元,用于在所述内存空间中有检索词存在时,获取一个检索词;

构造单元,用于按照所述目标导航网站的URL特性,用所获取的检索词对应的十六进制编码构造动态URL,以形成所述动态页面请求;

其中,所述提取模块包括:

接收获取单元,用于接收所述服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为所述目标URL,并将所述目标URL加入唯一化队列中;

判断触发单元,用于在根据预设检索页面阈值判断出当前检索结果页面还有下一页时,获取下一页页面请求,并将所述下一页页面请求发送给所述服务器,并触发所述接收获取单元执行接收所述服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为所述目标URL,并将所述目标URL加入唯一化队列中的操作,直到当前检索结果页面不存在下一页为止;

删除单元,用于在当前检索结果页面不存在下一页时,将与所述检索结果页面对应的检索词从所述内存空间中删除。

9.根据权利要求8所述的爬虫种子获取设备,其特征在于,所述构造单元具体用于判断所述目标导航网站是否为预设的特殊网站,当判断结果为是时,将所获取的检索词对应的GB2312格式的编码转换为UTF-8格式的编码,将UTF-8格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合所述特殊网站的URL特性的动态URL,以形成所述动态页面请求;当判断结果为否时,将所获取的检索词对应的GB2312格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合所述目标导航网站的URL特性的动态URL,以形成所述动态页面请求。

10.根据权利要求8或9所述的爬虫种子获取设备,其特征在于,所述发送模块包括:第一发送单元,用于向所述服务器发送超文本传输协议HTTP请求,所述HTTP请求包括所述动态页面请求;和/或第二发送单元,用于向所述服务器发送URL访问请求,所述URL访问请求包括所述动态页面请求。

11.根据权利要求8所述的爬虫种子获取设备,其特征在于,所述判断触发单元具体用于从当前检索结果页面中获取下一页点击按钮,点击所述下一页点击按钮以向所述服务器发送所述下一页页面请求,然后触发所述接收获取单元执行接收所述服务器返回的检索结果页面,提取所述检索结果页面中的URL的主域名地址作为所述目标URL,并将所述目标URL加入唯一化队列中的操作,直到当前检索结果页面不存在下一页为止;或者具体用于根据所述动态页面请求对应的检索词和当前检索结果页面的页面规律,构造所述下一页检索结果页面对应的动态URL,并将所述下一页检索结果页面对应的动态URL发送给所述服务器,然后触发所述接收获取单元执行接收所述服务器返回的检索结果页面,提取所述检索结果页面中的URL的主域名地址作为所述目标URL,并将所述目标URL加入唯一化队列中的操作,直到当前检索结果页面不存在下一页为止。

12.根据权利要求8所述的爬虫种子获取设备,其特征在于,所述获取模块包括:提取单元,用于在所述唯一化队列中存在目标URL时,从所述唯一化队列中获取一目标URL;

判断单元,用于在所获取的目标URL已经存在于爬虫种子列表中时,将所获取的目标URL从所述唯一化队列中删除,并判断所述唯一化队列中是否还存在目标URL;

存储判断单元,用于在所获取的目标URL不存在于所述爬虫种子列表中时,将所获取的目标URL存储到所述爬虫种子列表中,将所获取的目标URL从所述唯一化队列中删除,并判断所述唯一化队列中是否还存在目标URL;

种子获取单元,用于在所述唯一化队列中不存在目标URL时,将所述爬虫种子列表中存储的目标URL作为所述爬虫种子。

13.一种使用权利要求1-5任一项所述的爬虫种子获取方法所获取的爬虫种子的爬虫爬取设备,其特征在于,包括:第一爬取模块,用于在内存空间中的种子队列中存在所述爬虫种子时,从所述种子队列中获取一个爬虫种子进行爬取,并将根据所述爬虫种子爬取到的页面中的URL添加到所述内存空间的待爬取队列中,并将爬取过的爬虫种子从所述种子队列中删除;

第二爬取模块,用于在所述种子队列中不存在所述爬虫种子,而所述待爬取队列中存在待爬取URL时,从所述待爬取队列中获取一个待爬取URL进行爬取,并将根据所获取的待爬取URL爬取到的页面中的URL添加到所述待爬取队列中,并将已爬取的URL从所述待爬取队列中删除。

14.根据权利要求13所述的爬虫爬取设备,其特征在于,还包括:

第一加载模块,用于将所述爬虫种子列表中的爬虫种子全部加载到所述内存空间中的种子队列中;和/或第二加载模块,用于定时访问所述爬虫种子列表,将所述爬虫种子列表中未被加载的爬虫种子加载到所述内存空间的种子队列中,并为所述爬虫种子列表中的被加载到所述种子队列中的爬虫种子设置访问标识。

说明书 :

爬虫种子获取方法与设备及爬虫爬取方法与设备

技术领域

[0001] 本发明涉及搜索引擎技术,尤其涉及一种爬虫种子获取方法与设备及爬虫爬取方法及设备。

背景技术

[0002] 搜索引擎(search engine)是指根据一定的策略、运用特定的计算机程序从因特网(Internet)上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将与用户相关的检索结果展示给用户的系统。
[0003] 目前,网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。其中,深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单,广度优先搜索方法能够覆盖尽可能多的网页。目前也有很多研究将广度优先搜索策略应用于聚焦爬虫(聚焦爬虫是“面向特定主题”的一种网络爬虫程序)中,其基本思想是认为与初始统一资源定位符(Universal Resource Locator;简称为:URL)在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。最佳优先搜索策略只访问经过网页分析算法预测为“有用”的网页,因此最佳优先策略是一种局部最优搜索算法。
[0004] 网络爬虫是搜索引擎的信息爬取器。爬虫种子是网络爬虫初始化爬取的URL或者URL集合。其中,URL是用于完整描述Internet上网页和其他资源的地址的一种标识方法,Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL地址,这种URL地址可以是本地磁盘,也可以是局域网上的某一台计算机,简单的说,URL就是Web地址,俗称“网址”。在现有技术中,爬虫种子是由人工预先分配给网络爬虫的。爬虫种子是网络爬虫后续爬取URL的信息来源。具体的,网络爬虫把爬虫种子页面中包含的其他URL地址提取出来,放入待爬取URL队列,作为后续爬取的对象;随着爬取的URL数量的增加,爬虫种子也就不断变化和扩大。
[0005] 现有技术中,由于爬虫种子通常是由人工预先指定的若干个URL,对爬虫种子的筛选构建没有体系化的策略或者方案,这就导致了在全网搜索的情况下,需要较长的时间(通常为半年或者1年)才能够获取到大量主流URL,而且由于爬虫种子数量有限所形成的主流URL的覆盖性也较差,对需要快速实现全网主流数据搜索的爬虫系统来说,时间成本巨大,不易于部署实施。

发明内容

[0006] 本发明实施例提供一种爬虫种子获取方法与设备及爬虫爬去方法与设备,用以提供大量的、离散度大的爬虫种子,从而缩短形成主流URL的时间,提高主流URL的覆盖性,降低爬虫系统进行爬取时的时间成本。
[0007] 本发明提供一种爬虫种子获取方法,包括:
[0008] 根据预设检索词词典和目标导航网站的统一资源定位符URL特性,构造动态页面请求;
[0009] 将所述动态页面请求发送给所述目标导航网站的服务器;
[0010] 根据预设提取策略,从所述服务器根据所述动态页面请求返回的检索结果页面中提取目标URL,所述目标URL为所述检索结果页面中的URL的主域名地址;
[0011] 对所述目标URL进行唯一化处理,获取唯一化目标URL,将所述唯一化目标URL作为爬虫种子。
[0012] 本发明提供一种使用本发明提供的爬虫种子获取方法获取的爬虫种子的爬虫爬取方法,包括:
[0013] 当内存空间中的种子队列中存在所述爬虫种子时,从所述种子队列中获取一个爬虫种子进行爬取,并将根据所述爬虫种子爬取到的页面中的URL添加到所述内存空间的待爬取队列中,并将爬取过的爬虫种子从所述种子队列中删除;
[0014] 当所述种子队列中不存在所述爬虫种子,而所述待爬取队列中存在待爬取URL时,从所述待爬取队列中获取一个待爬取URL进行爬取,并将根据所获取的待爬取URL爬取到的页面中的URL添加到所述待爬取队列中,并将已爬取的URL从所述待爬取队列中删除。
[0015] 本发明提供一种爬虫种子获取设备,包括:
[0016] 构造模块,用于根据预设检索词词典和目标导航网站的统一资源定位符URL特性,构造动态页面请求;
[0017] 发送模块,用于将所述动态页面请求发送给所述目标导航网站的服务器;
[0018] 提取模块,用于根据预设提取策略,从所述服务器根据所述动态页面请求返回的检索结果页面中提取目标URL,所述目标URL为所述检索结果页面中的URL的主域名地址;
[0019] 获取模块,用于对所述目标URL进行唯一化处理,获取唯一化目标URL,将所述唯一化目标URL作为爬虫种子。
[0020] 本发明提供一种使用本发明提供的爬虫种子获取方法获取的爬虫种子的爬虫爬取设备,包括:
[0021] 第一爬取模块,用于在内存空间中的种子队列中存在所述爬虫种子时,从所述种子队列中获取一个爬虫种子进行爬取,并将根据所述爬虫种子爬取到的页面中的URL添加到所述内存空间的待爬取队列中,并将爬取过的爬虫种子从所述种子队列中删除;
[0022] 第二爬取模块,用于在所述种子队列中不存在所述爬虫种子,而所述待爬取队列中存在待爬取URL时,从所述待爬取队列中获取一个待爬取URL进行爬取,并将根据所获取的待爬取URL爬取到的页面中的URL添加到所述待爬取队列中,并将已爬取的URL从所述待爬取队列中删除。
[0023] 本发明的爬虫种子获取方法与设备,爬虫种子获取设备根据检索词词典和目标导航网站的URL特性,构造动态页面请求并发送给服务器,从服务器返回的检索页面中主动提取符合URL特性的URL的主域名地址作为目标URL,并对目标URL进行唯一化处理得到爬虫种子,与现有技术中人工指定爬虫种子的的方法相比,本发明技术方案能够获取到大量的、离散度大的URL作为爬虫种子,使爬虫种子的获取实现了体系化,进而降低了基于爬虫种子获取主流URL的时间成本,提高了获取的主流URL的覆盖性,并提高了爬虫基于爬虫种子进行爬取的效率,降低了爬虫爬取的时间成本。

附图说明

[0024] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025] 图1为现有技术的搜索引擎的拓扑结构示意图;
[0026] 图2本发明一实施例提供的爬虫种子获取方法的流程图;
[0027] 图3为本发明另一实施例提供的爬虫种子获取方法的流程图;
[0028] 图4为本发明一实施例提供的爬虫爬取方法的流程图;
[0029] 图5A为本发明另一实施例提供的爬虫爬取方法的流程图;
[0030] 图5B为本发明另一实施例提供的爬虫爬取拓扑结构示意图;
[0031] 图6为本发明一实施例提供的爬虫种子获取设备的结构示意图;
[0032] 图7为本发明另一实施例提供的爬虫种子获取设备的结构示意图;
[0033] 图8为本发明一实施例提供的爬虫爬取设备的结构示意图;
[0034] 图9为本发明另一实施例提供的爬虫爬取设备的结构示意图。

具体实施方式

[0035] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036] 图1为现有技术的搜索引擎的拓扑结构示意图。在图1中示出3个服务器,但并不限于此。其中,第一服务器、第二服务器和第三服务器可以分别为新浪(sina)网站的服务器、163网站的服务器和雅虎(yahoo)网站的服务器。各个服务器主要存储web页面,用于根据爬虫服务器提供的爬取请求,向爬虫服务器返回爬取结果页面。爬虫服务器,用于负责在互联网上根据某些规则进行web页面的爬取,并将爬取的内容(即各个服务器返回的爬取结果页面)保存到本地。其中,爬虫服务器可以以文本形式保存爬取到的内容,也可以以数据库的形式保存。信息提取器,用于将爬虫服务器爬取的web页面内容进行信息提取与剥离等处理。搜索引擎全文检索系统,用于根据业务需求在信息提取器提取和剥离出的海量的web信息中进行信息检索,并将检索结果提交给用户。
[0037] 在上述搜索引擎的拓扑结构中,爬虫服务器仅以人工预先设定的数量有限的URL作为爬虫种子开始爬取,并在爬取过程中通过不断提取爬取到的web页面中的URL扩大要爬取的URL。在现有方案中,一开始爬虫沿着较少路径进行爬取,容易导致爬取路径死循环,而主要通过在爬取过程中提取URL来扩展需要爬取的URL以最终形成主流URL的方法速度较慢、时间成本较高,进而导致搜索引擎的效率较低、时间成本代价较高。针对上述问题,本发明以下实施例提供一种在爬虫服务器开始爬取之前获取大量主流的、合乎目标主题的URL作为起始爬取时的爬虫种子,以提高爬取速度、节约爬取时间成本的技术方案。
[0038] 图2本发明一实施例提供的爬虫种子获取方法的流程图。如图2所示,本实施例的方法包括:
[0039] 步骤101、根据预设检索词词典和目标导航网站的URL特性,构造动态页面请求。
[0040] 本实施例的核心问题是如何在爬虫服务器开始爬取之前,获取大量离散化的URL作为爬虫种子。本实施例充分利用百度(Baidu)、谷歌(google)等已知网站的大型搜索引擎数据库,自动构建符合各已知网站的URL,并将构造的URL发送给各已知网站的服务器进行全站深度检索,从各服务器返回的检索结果页面中获取大量URL。
[0041] 目前,大多数已知网站(例如Baidu,gooogle,Alexa)中核心数据都是通过构建动态URL向网站的服务器发出请求获取的。也就是说,大多数已知网站的数据输出是以数据输入为条件的。其中,数据输入条件通常为按照一定格式构造的动态URL。通常,每种网站所支持的动态URL的格式不同。例如:以检索词“股票”为例,对不同的网站来说,“股票”在URL中的位置、所使用的编码格式、显示方式等均不相同。另外,除了URL的格式之外,对于不同的网站来说,如何控制接收到的检索结果进行翻页,以及如何控制每个web页面中显示多少条数据记录等都有不同的实现方式。其中,上面提及的检索词在URL中的位置、所使用的编码格式、以及对翻页的控制、对显示条数的控制等等统称为网站的特性,而检索词在URL中的位置、所使用的编码格式等与URL相关的信息被称为网站的URL特性。对于不同网站来说,其URL特性一般不相同。通常,google网站的动态URL字符串格式为:http://www.google.com.hk/search?q=%E8%82%A1%E7%A5%A8&hl=zh-CN&newwindow=1&safe=strict&prmd=ivnsub&ei=upHTTZiZGIycvgPB7dS4DQ&start=0&sa=N;而Baidu网站的动态URL字符串格式为:http://www.baidu.com/s?wd=%s&pn=%d&usm=3。其中,每个动态URL字符串中的%s表示要填写的实际编码转换后的关键字的编码;pn=%d表示每次起始的URL的索引位置,与Baidu、google等为了辨别用户身份、进行会话(session)跟踪而存储在本地终端上的数据(cookie)设置有关,决定了每个页面有多少条搜索记录。例如:以检索词“股票”为例,在Baidu网站进行检索时对应的URL为:http://www.baidu.com/s?wd=%B9%C9%C6%B1&pn=0&usm=3;而在google网站进行检索时对应的URL为:http://www.google.com.hk/search?q=%E8%
82%A1%E7%A5%A8&hl=zh-CN&newwindow=1&safe=strict&prmd=ivnsub&ei=upHTTZiZGIycvgPB7dS4DQ&start=0&sa=N。其中,对Baidu网站来说,“股票”对应的关键字码为%B9%C9%C6%B1,而对google网站来说,“股票”对应的关键字码为%E8%
82%A1%E7%A5%A8。另外,对Baidu网站来说,“股票”对应的URL中的Pn=0表示起始位置从ID=0开始;而对google网站来说,“股票”对应的URL中的start=10表示起始位置从ID=10开始。
[0042] 其中,为了适应不同网站的URL特性,本实施例的爬虫种子获取设备根据各网站的URL特性构造动态URL。
[0043] 另外,为了尽可能获取较大数量的离散化URL,本实施例的爬虫种子获取设备预先设定了包括大量检索词的检索词词典并预先指定了所需的目标导航网站。其中,检索词词典中的检索词可以是人工输入的目标导航网站能够识别的任意数据,也可以是目标导航网站所提供的有效数据集合中的数据,还可以是从科技词典或搜索引擎的分次词典中的数据。其中,检索词词典所包含的检索词越多越好,指定的目标导航网站数量越多越好。其中,目标导航网站可以包括Baidu、google、Alexa、yahoo、sina等。基于此,本实施例的爬虫种子获取设备根据预设检索词词典中的检索词和目标导航网站的URL特性,构造符合目标导航网站的URL特性的动态页面请求,亦即构造符合目标导航网站的URL特性的动态URL。
[0044] 步骤102、将动态页面请求发送给目标导航网站的服务器。
[0045] 当构造出符合URL特性的动态页面请求后,爬虫种子获取设备将构造出的动态页面请求发送给目标导航网站的服务器,以使服务器根据动态页面请求进行全站深度检索。
[0046] 在具体实施过程中,爬虫种子获取设备可以采用超文本传输协议(HyperText Transfer Protocol;简称为:HTTP)协议向服务器发送HTTP请求,实现向服务器发送动态页面请求的目的。其中,HTTP请求包括动态页面请求。除此之外,爬虫种子获取设备还可以以web浏览器控件的方式,真实的模拟IE浏览器对URL的访问,向服务器发送URL访问请求,以实现向服务器发送动态页面请求的目的。其中,URL访问请求包括动态页面请求。
[0047] 步骤103、根据预设提取策略,从服务器根据动态页面请求返回的检索结果页面中提取目标URL。
[0048] 当服务器接收到动态页面请求后,会根据动态页面请求进行全站深度检索,并会向爬虫种子获取设备返回检索结果页面。该检索结果页面通常为携带检索结果的web页面;并且视检索结果的多少不同,该检索结果页面可以是一个web页面也可以是多个web页面。
[0049] 爬虫种子获取设备接收到服务器返回的检索结果页面后,根据预设提取策略,从检索结果页面中提取目标URL。其中,目标URL主要是指符合该目标导航网站的URL特性的URL中的主域名地址。由于不同网站的URL特性不同,且由于不同检索词对应的检索结果的数量不同导致检索结果页面的数量不同,故本实施例的爬虫种子获取设备结合实际情况,预先设定了提取目标URL的策略。其中,提取策略主要包括判断检索结果页面是否还有下一页的操作、判断是否满足目标导航网站的URL特性的操作,以及在各种判断结果下的相应处理操作等。
[0050] 对于一个URL来说,通常由主域名地址(domain)和叶子构成。例如:设检索词“股票”对应的在Baidu网站上的URL为:http://www.baidu.com/s?wd=%B9%C9%C6%B 1&pn=0&usm=3,则该URL中的主域名地址为www.baidu.com,其他部分为叶子。又例如:设在检索结果页面中获取到检索词“股票”对应的一目标URL,具体为:http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=%B9%C9%C6%B1,其中“news.baidu.com”为主域名地址,其他部分为叶子。
[0051] 在实际应用中,对于同一检索词,通常会在检索结果页面中获取到主域名地址相同的多个目标URL,例如www.sina.com.cn/sports与www.sina.com.cn/news是主域名地址相同的两个目标URL。而对于这几个主域名地址相同的目标URL来说,通过一个主域名地址就可以将这几个目标URL对应的web页面都爬取到;如果针对主域名相同的每个目标URL都进行爬取,其爬取结果相同,这将增加爬取次数、降低爬取效率、浪费爬取时间。故在本实施例中,爬虫种子获取设备根据上述提取策略从检索结果页面中提取URL中的主域名地址作为目标URL。
[0052] 步骤104、对目标URL进行唯一化处理,获取唯一化目标URL,将唯一化目标URL作为爬虫种子。
[0053] 当爬虫种子获取设备从检索结果页面中提取到目标URL后,为了保证最终获取的爬虫种子的离散度,在使爬虫种子的覆盖范围尽可能广的前提下,使各爬虫种子尽可能离散化,避免将更多无效的目标URL加载到内存空间进行爬取,以提高基于爬虫种子进行爬取检索时的效率。
[0054] 为实现上述目的,本实施例的爬虫种子获取设备对目标URL进行唯一化处理,获取唯一化目标URL。具体的,爬虫种子获取设备将各个目标URL进行比较,对于重复的目标URL只保留一个,该被保留的目标URL被视为唯一化目标URL。爬虫种子获取设备将获取的唯一化目标URL作为爬虫种子。
[0055] 本实施例的爬虫种子获取方法,爬虫种子获取设备根据检索词词典和目标导航网站的URL特性,构造动态页面请求并发送给服务器,从服务器返回的检索页面中主动提取符合URL特性的URL的主域名地址作为目标URL,并对目标URL进行唯一化处理得到爬虫种子。与现有技术中人工指定爬虫种子的方法相比,本实施例能够获取到大量的、离散度大的爬虫种子,使爬虫种子的获取实现了体系化,这样当基于爬虫种子进行爬取来获取主流URL时,能够提高获取主流URL的效率、降低获取主流URL的时间成本,并且能够提高获取的主流URL的覆盖性,同时,还为提高基于爬虫种子所进行的爬取操作的速度和效率、节约爬取时间成本打下了基础。
[0056] 本发明各实施例中的检索词词典通常包括大量检索词,每个检索词都对应一个动态页面请求,也就是说,爬虫种子获取设备会根据按照目标导航网站的URL特性为每个检索词构造一个动态页面请求。本实施例提供的步骤101的实施方式,包括:
[0057] 步骤1011、爬虫种子获取设备首先将检索词词典中的所有检索词加载到其内存空间中。
[0058] 在正常情况下,检索词词典是保存在外部存储空间中的。为了提高执行速度和效率,爬虫种子获取设备预先将检索词词典中的所有检索词加载到其内存空间中。
[0059] 步骤1012、爬虫种子获取设备判断其内存空间中是否还有检索词存在;如果判断结果为是,执行步骤1013;如果判断结果为否,执行步骤1016。
[0060] 在本实施例中,爬虫种子获取设备每根据一个检索词生成动态页面请求并在获取到检索结果页面后,就将该检索词从内存空间中删除。故爬虫种子获取设备需要判断内存空间中是否还有检索词存在,来判断是否根据所有检索词都进行了检索操作。
[0061] 其中,爬虫种子获取设备可以按照一定频率主动去查询内存空间是否还有检索词存在,也可以在收到上一个检索词对应的检索结果页面后去查询内存空间是否还有检索词存在,即处理完一个检索词后再处理另一个检索词。由于爬虫种子获取设备在收到上一个检索词对应的检索结果页面后去查询内存空间是否还有检索词存在,能够避免对同一检索词的重复获取,故为一种优选实施方式。
[0062] 步骤1013、爬虫种子获取设备获取一个检索词,并执行步骤1014。
[0063] 当内存空间中还有检索词存在时,爬虫种子获取设备就从中获取一个检索词。
[0064] 步骤1014、爬虫种子获取设备按照目标导航网站的URL特性,用所获取的检索词对应的十六进制编码构造动态URL,以形成动态页面请求,并转去执行步骤1015。
[0065] 通常,各网站的URL都是以十六进制形式表示的,故在获取到检索词后,爬虫种子获取设备按照目标导航网站的URL特性,用所获取的检索词对应的十六进制编码构造动态URL,以形成动态页面请求。首先,爬虫种子获取设备需要明确本次要进行检索的目标导航网站,例如是Baidu还是google,进而确定目标导航网站的URL特性。这里URL的特性主要是指URL字符串的基本格式。
[0066] 其中,大多数网站所使用的编码格式为GB2312,例如Baidu、yahoo等,而像google等一些特殊网站的URL使用的是UTF-8。为了适应大多数网站的需求,本实施例的检索词词典中的检索词采用GB2312编码格式进行编码。而对于像google等使用UTF-8格式的网站,爬虫种子获取设备预先将这些网站作为特殊网站存储起来。基于此,在上述过程中,爬虫种子获取设备需要判断目标导航网站是否为预设的特殊网站。如果判断结果为是,即目标导航网站是特殊网站时,爬虫种子获取设备将取的检索词对应的GB2312格式的编码转换为UTF-8格式的编码,将UTF-8格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合特殊网站的URL特性的动态URL,从而形成动态页面请求。如果判断结果为否,即目标导航网站不是特殊网站时,爬虫种子获取设备将所获取的检索词对应的GB2312格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合目标导航网站的URL特性的动态URL,从而形成动态页面请求。
[0067] 步骤1015、当服务器根据所获取的检索词形成的动态页面请求返回检索结果页面后,爬虫种子获取设备将所获取的检索词从内存空间中删除,并转去执行步骤1012。
[0068] 在本实施例中,主要描述的是如何有序的根据每个检索词构造动态页面请求的过程,故在步骤1014中构造动态页面请求之后转去执行步骤1015,即将处理过的检索词从内存空间中删除,一方面释放对内存空间的占用,另一方面通过该方式来确保每个检索词都被处理过。在该过程中,如果在发送动态页面请求后未能接收到服务器返回的检索结果页面,可以尝试多次发送,如果在尝试多次发送之后仍未能接收到服务器返回的检索结果页面,就将该检索词记录到一个文本中以待后续进行处理,同时将该检索词从内存空间中删除并对下一个检索词进行处理。
[0069] 而结合整个爬虫种子获取流程,本步骤1014还需要同时转向步骤102,即每根据检索词构造出一个动态页面请求就将其发送给服务器,以使服务器进行全站深度检索。其中,当爬虫种子获取设备按照一定频率主动查询内存空间是否存在检索词并在存在时获取检索词时,爬虫种子获取设备使用当前检索词构造动态页面请求的过程,与服务器根据之前检索词对应的动态页面请求进行检索并返回检索结果页面的过程是并行执行的。当爬虫种子获取设备在接收到上一个检索词对应的检索结果页面后去查询内存空间是否还有检索词存在并在存在时获取检索词时,爬虫种子获取设备只有在服务器根据上一个检索词对应的动态页面请求进行检索并返回检索结果页面之后,才能使用当前检索词构造动态页面请求。
[0070] 另外,爬虫种子获取设备也可以在根据所有检索词都构造出动态页面请求后,将所有动态页面请求一起发送给服务器,即在步骤1016后转去执行步骤102。
[0071] 步骤1016、爬虫种子获取设备结束构造动态页面请求的操作。
[0072] 在本实施例中,爬虫种子获取设备预先将检索词词典中的所有检索词加载到内存空间中,分别根据每个检索词构造动态页面请求,并在接收到服务器返回的检索结果页面后将相应的检索词删除,一方面提高了构造动态页面请求的效率,为节约获取爬虫种子的时间打下了基础;另一方面还能及时释放对内存空间的占用,有利于提高内存空间的利用率,提高爬虫种子获取设备的处理速度。
[0073] 在上述实施例的基础上,本实施例提供一种步骤103的实施方式,包括:
[0074] 步骤1031、爬虫种子获取设备接收服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为目标URL,并将获取到的目标URL加入唯一化队列中。
[0075] 其中,服务器返回的检索结果页面主要是指文本标记语言(Hypertext Markup Language;简称为:HTML)格式的web页面。爬虫种子获取设备首先从web页面的主体(body)部分进行外部链接地址的提取,即提取符合URL特性的URL;然后再提取URL的主域名地址作为目标URL,之后将获取到的目标URL加入唯一化队列中,以准备对目标URL进行唯一化处理。其中,唯一化队列优选为爬虫种子获取设备的内存空间实现的存储队列。
[0076] 步骤1032、爬虫种子获取设备根据预设检索页面阈值判断当前检索结果页面是否还有下一页;当判断结果为是,即当前检索结果页面还有下一页,则执行步骤1033;当判断结果为否,即当前检索结果页面不存在下一页时,执行步骤1034。
[0077] 在本实施例中,针对不同网站的URL特性以及不同检索词,爬虫种子获取设备预先设置了检索页面阈值,从而限定针对每个检索词服务器需要返回的检索结果页面的页数。例如:当检索页面阈值设置为10时,服务器需要返回10页检索结果页面。
[0078] 具体的,爬虫种子获取设备会记录服务器已返回的检索结果页面的数量,并会实时与检索页面阈值进行比较;当达到检索页面阈值时,就对下一个检索词进行处理。其中,当爬虫种子获取设备每根据一个检索词生成一个动态页面请求并将动态页面请求发送给服务器时,对下一个检索词进行处理是指根据下一个检索词生成下一个动态页面请求并发送给服务器以使服务器进行全站深度检索以及后续处理。当爬虫种子获取设备同时将所有检索词对应的动态页面请求发送给服务器时,对下一个检索词进行处理是指对下一个检索词对应的检索结果页面进行提取目标URL的处理。
[0079] 步骤1033、爬虫种子获取设备获取下一页页面请求,并将下一页页面请求发送给服务器,并返回执行步骤1031。
[0080] 当某个检索词对应的检索结果页面还有下一页时,爬虫种子获取设备获取下一页页面请求,并将下一页页面请求发送给服务器,以获取下一页的检索结果。在获取下一页的检索结果后,执行步骤1031的操作以对下一页的检索结果进行目标URL的提取处理,直到当前检索结果页面没有下一页为止。
[0081] 在实际应用过程中,一些网站的页面上会设置有下一页点击按钮。故对于具有下一页点击按钮的检索结果页面,爬虫种子获取设备可以从当前检索结果页面中获取下一页点击按钮,点击该下一页点击按钮以向服务器发送下一页页面请求。对于不具有下一页点击按钮的检索结果页面,爬虫种子获取设备可以根据动态页面请求对应的检索词和当前检索结果页面的页面规律(例如:包含的检索结果条数、URL中起始显示的ID号等),构造下一页检索结果页面对应的动态URL,并将下一页检索结果页面对应的动态URL发送给服务器,以请求下一页的检索结果。
[0082] 步骤1034、爬虫种子获取设备将与检索结果页面对应的检索词从内存空间中删除,并结束此次对目标URL的提取操作。
[0083] 在本实施例中,爬虫种子获取设备通过将目标URL存储到唯一化队列中为后续对目标URL进行唯一化处理提供了便利条件,且使用爬虫种子获取设备的内存空间作为唯一化队列能够极大的提高唯一化处理的速度,为节约获取爬虫种子的时间成本做出了贡献。
[0084] 基于上述实施例,本实施例提供一种步骤104的实施方式,包括:
[0085] 步骤1041、爬虫种子获取设备判断唯一化队列中是否还存在目标URL;当判断结果为是,即唯一化队列中还存在目标URL时,执行步骤1042;当判断结果为否,即唯一化队列中不存在目标URL时,执行步骤1046。
[0086] 在本实施例中,爬虫种子获取设备每对一个目标URL进行唯一化处理后,将其从唯一化队列中删除,故爬虫种子获取设备通过判断唯一化队列中是否还存在目标URL可以获知是否对所有目标URL进行了唯一化处理。
[0087] 步骤1042、爬虫种子获取设备从唯一化队列中获取一目标URL,并执行步骤1043。
[0088] 当唯一化队列中存在目标URL时,爬虫种子获取设备从唯一化队列中获取一目标URL。
[0089] 步骤1043、爬虫种子获取设备判断所获取的目标URL是否已经存在于爬虫种子列表中;当判断结果为是,即所获取的目标URL已经存在于爬虫种子列表中时,执行步骤1045;当判断结果为否时,执行步骤1044。
[0090] 在本实施例中,爬虫种子获取设备通过爬虫种子列表来存储唯一化目标URL,其中爬虫种子列表优选为爬虫种子获取设备的外部存储空间实现。
[0091] 具体的,在获取到的目标URL后,爬虫种子获取设备判断所获取的目标URL是否已经存在于爬虫种子列表中,以判断是否存在与所获取的目标URL相同的目标URL。
[0092] 步骤1044、爬虫种子获取设备将所获取的目标URL存储到爬虫种子列表中,并执行步骤1045。
[0093] 步骤1045、将所获取的目标URL从唯一化队列中删除,并转去执行步骤1041。
[0094] 当所获取的目标URL不存在爬虫种子列表中时,说明该目标URL第一次出现,故爬虫种子获取设备将所获取的目标URL存储到爬虫种子列表中,并将所获取的目标URL从唯一化队列中删除,继续执行步骤1041以及后续操作。
[0095] 当所获取的目标URL存在于爬虫种子列表中时,说明该目标URL并不是第一次出现,故爬虫种子获取设备不再将所获取的目标URL存储到爬虫种子列表中,而直接将所获取的目标URL从唯一化队列中删除,并继续执行步骤1041以及后续操作。
[0096] 步骤1046、爬虫种子获取设备将爬虫种子列表中存储的目标URL作为爬虫种子。
[0097] 当唯一化队列中不存在目标URL时,说明已经对所有目标URL进行了唯一化处理,此时,爬虫种子获取设备将爬虫种子列表中存储的目标URL作为爬虫种子。
[0098] 在本实施例中,爬虫种子获取设备对各目标URL进行唯一化处理,具有简单易于实施的优势,而通过将经过唯一化处理的目标URL从唯一化队列中删除,可以及时释放所占用的内存空间,提高内存空间的利用率。
[0099] 图3为本发明另一实施例提供的爬虫种子获取方法的流程图。如图3所示,本实施例的方法包括:
[0100] 步骤301、爬虫种子获取设备将预设检索词词典加载到内存空间中。
[0101] 步骤302、爬虫种子获取设备确定目标导航网站以及目标导航网站的URL特性。
[0102] 在本步骤中,URL特性主要是指URL字符串的格式。
[0103] 步骤303、爬虫种子获取设备判断内存空间中是否存在检索词;如果判断结果为是,即内存空间中存在检索词,执行步骤304;反之,执行步骤315。
[0104] 步骤304、爬虫种子获取设备获取一个检索词,并执行步骤305。
[0105] 步骤305、爬虫种子获取设备判断目标导航网站是否为预设的特殊网站;如果判断结果为是,执行步骤306;如果判断结果为否,执行步骤307。
[0106] 其中,预设的特殊网站主要是指使用UTF-8编码格式的网站,例如google网站。
[0107] 步骤306、爬虫种子获取设备将检索词由GB3212编码格式转换为UTF-8编码格式,并执行步骤307。
[0108] 步骤307、爬虫种子获取设备将UTF-8编码格式的检索词的二进制值转换为十六进制值,并进行显示,之后执行步骤308。
[0109] 步骤308、爬虫种子获取设备根据十六进制的检索词编码构造动态URL,并发送给服务器。
[0110] 步骤309、爬虫种子获取设备获取服务器返回的携带有检索结果的HTML页面(即检索结果页面)。
[0111] 步骤310、爬虫种子获取设备解析HTML页面,获取符合URL特性的外部链接地址,即URL。
[0112] 步骤311、爬虫种子获取设备对获取的URL进行格式化,提取URL中的主域名地址,并将提取的主域名地址作为目标URL送入唯一化队列中。
[0113] 步骤312、爬虫种子获取设备根据预设检索页面阈值判断HTML页面是否还有下一页;如果判断结果为是,返回执行步骤308;如果判断结果为否,执行步骤313。
[0114] 步骤313、爬虫种子获取设备将唯一化队列中的主域名地址输出到本地爬虫种子列表中,并将唯一化队列清空。
[0115] 步骤314、爬虫种子获取设备将当前检索词从内存空间中删除,并返回执行步骤303。
[0116] 步骤315、爬虫种子获取设备对爬虫种子列表中的主域名地址进行唯一化处理,并结束操作。
[0117] 在本实施例中,是将获取到的所有主域名地址送到爬虫种子列表中后,再对主域名地址进行唯一化处理,但并不限于此。例如:爬虫种子获取设备还可以在将主域名地址从唯一化队列中输出到爬虫种子列表的过程中对主域名地址进行唯一化处理。
[0118] 本实施例的唯一化处理是指对于多个相同的主域名地址仅保留一个在爬虫种子列表中,而将其他的删除。
[0119] 本实施例的爬虫种子获取方法,爬虫种子获取设备根据检索词词典和目标导航网站的URL特性,构造动态页面请求并发送给服务器,从服务器返回的检索页面中主动提取符合URL特性的URL的主域名地址作为目标URL,并对目标URL进行唯一化处理得到爬虫种子。与现有技术中人工指定爬虫种子的方法相比,本实施例能够获取到大量的、离散化度大的爬虫种子,使爬虫种子的获取实现了体系化,进而降低了基于爬虫种子获取主流URL的时间成本,提高了获取的主流URL的覆盖性,同时提高了爬虫基于爬虫种子进行爬取时的效率,降低了爬虫爬取的时间成本。
[0120] 图4为本发明一实施例提供的爬虫爬取方法的流程图。如图4所示,本实施例的方法包括:
[0121] 步骤400、爬虫爬取设备判断其内存空间中的种子队列中是否存在爬虫种子;如果判断结果为是,执行步骤401;如果判断结果为否,执行步骤402。
[0122] 其中,本实施例的爬虫种子是由上述各实施例提供的爬虫种子获取方法获取到的爬虫种子。所述爬虫种子被加载到爬虫爬取设备的内存空间中,为爬虫提供进行爬取的原始URL。
[0123] 在本实施例中,爬虫爬取设备将爬虫种子加载到内存空间的种子队列中可以提高爬取过程中获取爬虫种子的速度,进而提高爬取效率,有利于节约时间成本。
[0124] 步骤401、爬虫爬取设备从种子队列中获取一个爬虫种子进行爬取,并将根据爬虫种子爬取到的页面中的URL添加到内存空间的待爬取队列中,并将爬取过的爬虫种子从种子队列中删除。
[0125] 当内存空间中的种子队列中存在爬虫种子时,爬虫爬取设备获取一个爬虫种子,并以爬虫种子为原始URL进行此次爬取。当爬取到爬取页面时,爬虫爬取设备对爬取页面进行解析,从中获取外部链接的URL;当获取到外部链接的URL时,将获取到的URL添加到内存空间中的待爬取队列中。在本实施例中,为了保证爬虫种子优先被爬取,故在内存空间中同时设置种子队列和待爬取队列,种子队列中存储爬虫种子,而待爬取队列中存储在爬取过程中获取的URL,只有当种子队列中的爬虫种子都被爬取过后,才能开始对待爬取队列中URL的爬取。同时,爬虫爬取设备将被爬取后的爬虫种子从种子队列中删除,一方面防止对同一爬虫种子进行重复爬取,另一方面及时释放内存空间,提高内存空间的利用率。
[0126] 另外,对于爬取到的页面,爬虫爬取设备还将其发送给后续的信息提取器,由信息提取器对爬取页面进行相关信息的提取。
[0127] 步骤402、爬虫爬取设备判断待爬取队列中是否存在待爬取的URL;当判断结果为是时,执行步骤403;当判断结果为否时,执行步骤404。
[0128] 当种子队列中不存在爬虫种子,爬虫爬取设备判断待爬取队列中是否有待爬取的URL;如果有,则继续对待爬取队列中的URL进行爬取;如果没有,则结束爬取操作。
[0129] 步骤403、爬虫爬取设备从待爬取队列中获取一个待爬取URL进行爬取,并将根据所获取的待爬取URL爬取到的页面中的URL添加到待爬取队列中,并将已爬取的URL从待爬取队列中删除。
[0130] 当种子队列中不存在爬虫种子,而待爬取队列中存在待爬取URL时,爬虫爬取设备从待爬取队列中获取一个待爬取URL进行爬取,并对爬取到的页面进行分析,从爬取页面中获取外部链接的URL,并将获取的URL添加到待爬取队列中以继续进行爬取。同时,爬虫爬取设备将爬取过的URL从待爬取队列中删除,一方面防止对同一URL进行重复爬取,另一方面及时释放内存空间,为后续爬取到的新URL提供存储空间,提高内存空间的利用率。
[0131] 同理,对于爬取到的页面,爬虫爬取设备还将其发送给后续的信息提取器,由信息提取器对爬取页面进行相关信息的提取。
[0132] 步骤404、结束爬取操作。
[0133] 当种子队列中不存在爬虫种子,且待爬取队列中也不存在待爬取URL时,没有URL需要爬取,故爬取过程结束。
[0134] 本实施例的爬虫爬取方法,以上述实施例获取的爬虫种子作为原始爬取的URL,并优先爬取爬虫种子,只有待所有爬虫种子都爬取过后,再爬取其他URL,通过对爬虫种子的优先爬取,优化搜索引擎的爬虫的运行效率,在较短的时间内有目的完成大量数据的爬取,对诸如垂直搜索引擎的快速部署可以大大的缩短网络爬虫的数据准备时间,提高系统部署便捷性和实用性。
[0135] 在上述实施例中,在步骤400之前,爬虫爬取设备可以预先将爬虫种子列表中的爬虫种子全部加载到内存空间中的种子队列中,为步骤400以及后续步骤打下基础。在该实施方式中,爬虫种子获取过程在爬虫爬取之前完成。
[0136] 除上述方式之外,爬虫种子获取过程还可以与爬虫爬取过程并行执行,即在爬虫种子获取过程中,爬虫爬取设备定时访问爬虫种子列表,将爬虫种子列表中未被加载的爬虫种子加载到其内存空间的种子队列中,并为爬虫种子列表中被加载到种子队列中的爬虫种子设置访问标识,从而实现在爬虫种子获取过程中进行爬虫爬取操作,并且保证了爬虫种子被优先爬取。另外,在该实施方式中,通过为被加载的爬虫种子设置访问标识,实现了对爬虫种子的识别,避免了同一爬虫种子被多次加载,为提高爬取效率打下了基础。
[0137] 图5A为本发明另一实施例提供的爬虫爬取方法的流程图;图5B为本发明另一实施例提供的爬虫爬取拓扑结构示意图。图5B所示的爬取拓扑结构与图1所示的拓扑相比,区别在于在爬虫服务器之前设置有爬虫种子获取设备和一存储爬虫种子的爬虫种子服务器;另外,图5B所示爬取拓扑中的爬虫服务器为图4所示实施例中的爬虫爬取设备,具有优先爬取爬虫种子的功能。如图5A所示,本实施例的方法包括:
[0138] 步骤501、爬虫种子获取设备获取爬虫种子,并将爬虫种子存储到爬虫种子数据库中。
[0139] 该步骤中的爬虫种子服务器相当于上述实施例中的爬虫种子列表的功能。
[0140] 该步骤501的具体实现过程可参见图2或图3所示实施例的详细描述。
[0141] 步骤502、爬虫服务器定时从爬虫种子服务器中提取没有访问标识的爬虫种子,为提取的爬虫种子设置访问标识,并将提取的爬虫种子插入其内存空间的种子队列中。
[0142] 步骤503、爬虫服务器优先爬取种子队列中的爬虫种子,当种子队列中没有爬虫种子时,再爬取由爬取到的HTML页面中提取出的外部链接URL。
[0143] 本实施例的爬虫爬取方法,爬虫种子获取设备结合目标导航网站构造动态URL,达到挖掘目标导航网站深层次的URL,以获取大量离散的、优化的爬虫种子的目的,进而使得爬虫服务器通过对爬虫种子的优先爬取,优化搜索引擎的爬虫的运行效率,在较短的时间内有目的完成大量数据的爬取;尤其对像垂直搜索引擎的快速部署可以大大的缩短网络爬虫的数据准备时间,提高系统部署便捷性和实用性。
[0144] 图6为本发明一实施例提供的爬虫种子获取设备的结构示意图。如图6所示,本实施例的爬虫种子获取设备包括:构造模块61、发送模块62、提取模块63和获取模块64。
[0145] 其中,构造模块61,用于根据预设检索词词典和目标导航网站的URL特性,构造动态页面请求。发送模块62,与构造模块61和服务器连接,用于将动态页面请求发送给目标导航网站的服务器。提取模块63,与服务器连接,用于根据预设提取策略,从服务器根据动态页面请求返回的检索结果页面中提取目标URL,所述目标URL为检索结果页面中的URL的主域名地址。获取模块64,与提取模块63连接,用于对目标URL进行唯一化处理,获取唯一化目标URL,将唯一化目标URL作为爬虫种子。
[0146] 本实施例爬虫种子获取设备的各功能模块可用执行图2所示爬虫种子获取方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。
[0147] 本实施例的爬虫种子获取设备,根据检索词词典和目标导航网站的URL特性,构造动态页面请求并发送给服务器,从服务器返回的检索页面中主动提取符合URL特性的URL的主域名地址作为目标URL,并对目标URL进行唯一化处理得到爬虫种子。与现有技术中人工指定爬虫种子的方法相比,本实施例的爬虫种子获取设备能够获取到大量的、离散度大的爬虫种子,使爬虫种子的获取实现了体系化,这样当基于爬虫种子进行爬取来获取主流URL时,能够提高获取主流URL的效率、降低获取主流URL的时间成本,并且能够提高获取的主流URL的覆盖性,同时,还为提高基于爬虫种子所进行的爬取操作的速度和效率、节约爬取时间成本打下了基础。
[0148] 图7为本发明另一实施例提供的爬虫种子获取设备的结构示意图。本实施例基于图6所示实施例实现,如图7所示,本实施例爬虫种子获取设备的构造模块61包括:加载单元611、检索词获取单元612和构造单元613。
[0149] 在具体实施过程中,加载单元611将检索词词典中的所有检索词加载到爬虫种子获取设备的内存空间。检索词获取单元612判断内存空间中是否存在检索词,并在内存空间中有检索词存在时,获取一个检索词。构造单元613按照目标导航网站的URL特性,用检索词获取单元612所获取的检索词对应的十六进制编码构造动态URL,以形成动态页面请求。
[0150] 进一步,本实施例的构造单元613具体用于判断目标导航网站是否为预设的特殊网站;其中特殊网站主要是指使用UTF-8编码格式的网站,例如google网站等。当目标导航网站为特殊网站时,构造单元613将所获取的检索词对应的GB2312格式的编码转换为UTF-8格式的编码,将UTF-8格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合特殊网站的URL特性的动态URL,以形成动态页面请求。当目标导航网站不是特殊网站时,构造单元613将所获取的检索词对应的GB2312格式的编码的二进制值转换为十六进制值,用转换出的十六进制编码构造符合目标导航网站的URL特性的动态URL,以形成动态页面请求。
[0151] 上述各功能单元可用于执行上述方法实施例中步骤101的具体实施方式的流程,其具体工作原理不再赘述,详见方法实施例的描述。
[0152] 本实施例的发送模块62包括以下任一发送单元或其组合。第一发送单元621,用于向服务器发送HTTP请求,该HTTP请求包括构造单元613形成的动态页面请求。第二发送单元622,用于向服务器发送URL访问请求,该URL访问请求包括构造单元613形成的动态页面请求。
[0153] 上述各功能单元可用于执行上述方法实施例中步骤102的具体实施方式的流程,其具体工作原理不再赘述,详见方法实施例的描述。
[0154] 本实施例的提取模块63包括:接收获取单元631、判断触发单元632和删除单元633。
[0155] 在具体实施过程中,接收获取单元631与服务器连接,用于接收服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为目标URL,并将获取的目标URL加入唯一化队列中。判断触发单元632与接收获取单元631和服务器连接,用于根据预设检索页面阈值判断当前检索结果页面是否还有下一页,并在当前检索结果页面还有下一页时,获取下一页页面请求,并将下一页页面请求发送给服务器,并触发接收获取单元631执行接收服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为目标URL,并将目标URL加入唯一化队列中的操作,直到当前检索结果页面不存在下一页为止。删除单元633,与判断触发单元632连接,用于在判断触发单元632判断出当前检索结果页面不存在下一页时,将与检索结果页面对应的检索词从内存空间中删除,为检索词获取单元612获取检索词提供条件。
[0156] 更为具体的,判断触发单元632可以从当前检索结果页面中获取下一页点击按钮,点击下一页点击按钮以向服务器发送下一页页面请求,然后触发接收获取单元631执行接收服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为目标URL,并将目标URL加入唯一化队列中的操作,直到当前检索结果页面不存在下一页为止。
[0157] 另外,判断触发单元632还可以根据动态页面请求对应的检索词和当前检索结果页面的页面规律,构造下一页检索结果页面对应的动态URL,并将下一页检索结果页面对应的动态URL发送给服务器,然后触发接收获取单元631执行接收服务器返回的当前检索结果页面,提取当前检索结果页面中的URL的主域名地址作为目标URL,并将目标URL加入唯一化队列中的操作,直到当前检索结果页面不存在下一页为止。
[0158] 上述各功能单元可用于执行上述方法实施例中步骤103的具体实施方式的流程,其具体工作原理不再赘述,详见方法实施例的描述。
[0159] 本实施例的获取模块64包括:提取单元641、判断单元642、存储判断单元643和种子获取单元644。
[0160] 其中,提取单元641,与接收获取单元631连接,用于在唯一化队列中存在目标URL时,从唯一化队列中获取一目标URL。判断单元642,与提取单元641连接,用于在提取单元641所获取的目标URL已经存在于爬虫种子列表中时,将所获取的目标URL从唯一化队列中删除,并判断唯一化队列中是否还存在目标URL,并在判断结果为存在时触发提取单元641执行提取操作,在判断结果为否时,触发种子获取单元644执行获取操作。存储判断单元
643,与提取单元641连接,用于在提取单元641所获取的目标URL不存在于爬虫种子列表中时,将所获取的目标URL存储到爬虫种子列表中,将所获取的目标URL从唯一化队列中删除,并判断唯一化队列中是否还存在目标URL,并在判断结果为存在时触发提取单元641执行提取操作,在判断结果为否时,触发种子获取单元644执行获取操作。种子获取单元644,分别与判断单元642和存储判断单元643连接,用于在唯一化队列中不存在目标URL时,将爬虫种子列表中存储的目标URL作为爬虫种子。
[0161] 上述各功能单元可用于执行上述方法实施例中步骤104的具体实施方式的流程,其具体工作原理不再赘述,详见方法实施例的描述。
[0162] 本实施例的爬虫种子获取设备,根据检索词词典和目标导航网站的URL特性,构造动态页面请求并发送给服务器,从服务器返回的检索页面中主动提取符合URL特性的URL的主域名地址作为目标URL,并对目标URL进行唯一化处理得到爬虫种子。与现有技术中人工指定爬虫种子的方法相比,本实施例的爬虫种子获取设备能够获取到大量的、离散度大的爬虫种子,使爬虫种子的获取实现了体系化,这样当基于爬虫种子进行爬取来获取主流URL时,能够提高获取主流URL的效率、降低获取主流URL的时间成本,并且能够提高获取的主流URL的覆盖性,同时,还为提高基于爬虫种子所进行的爬取操作的速度和效率、节约爬取时间成本打下了基础。
[0163] 图8为本发明一实施例提供的爬虫爬取设备的结构示意图。如图8所示,本实施例的爬虫爬取设备包括:第一爬取模块81和第二爬取模块82。
[0164] 其中,第一爬取模块81,与爬虫爬取设备的内存空间连接,用于在内存空间中的种子队列中存在爬虫种子时,从种子队列中获取一个爬虫种子进行爬取,并将根据爬虫种子爬取到的页面中的URL添加到内存空间的待爬取队列中,并将爬取过的爬虫种子从种子队列中删除。第二爬取模块82,与爬虫爬取设备的内存空间连接,用于在种子队列中不存在爬虫种子,而待爬取队列中存在待爬取URL时,从待爬取队列中获取一个待爬取URL进行爬取,并将根据所获取的待爬取URL爬取到的页面中的URL添加到待爬取队列中,并将已爬取的URL从待爬取队列中删除。
[0165] 其中,本实施例的爬虫种子是由图6或图7的爬虫种子获取设备获取到的爬虫种子,关于爬虫种子的具体获取流程可参见图2或图3所示爬虫种子获取方法的流程,在本实施例中不再做详细描述。
[0166] 本实施例的爬虫爬取设备的各功能模块可用于执行图4所示爬虫爬取方法中的相应流程,其具体工作原理不再赘述,详见方法实施例的描述。
[0167] 本实施例的爬虫爬取设备,与本发明实施例提供的爬虫种子获取设备相结合,使用爬虫种子获取设备获取的爬虫种子进行爬取操作,充分利用爬虫种子的数据量大、离散化度大等特点,并通过对爬虫种子的优先爬取,优化搜索引擎的爬虫的运行效率,在较短的时间内有目的完成大量数据的爬取;尤其对像垂直搜索引擎的快速部署可以大大的缩短网络爬虫的数据准备时间,提高系统部署便捷性和实用性。
[0168] 图9为本发明另一实施例提供的爬虫爬取设备的结构示意图。本实施例基于图8所示实施例实现,如图9所示,本实施例的爬虫爬取设备还包括包括以下任一加载模块或其组合:
[0169] 第一加载模块83,与爬虫爬取设备的内存空间连接,用于将爬虫种子列表中的爬虫种子全部加载到内存空间中的种子队列中。第二加载模块84,与爬虫爬取设备的内存空间连接,用于定时访问爬虫种子列表,将爬虫种子列表中未被加载的爬虫种子加载到内存空间的种子队列中,并为爬虫种子列表中的被加载到种子队列中的爬虫种子设置访问标识。
[0170] 上述各功能模块可用于执行图4或图5A所示爬虫爬取方法中的相应流程,用于将爬虫种子获取设备获取的爬虫种子加载到爬虫爬取设备的内存空间中,为第一爬取模块和第二爬取模块打下基础,其具体工作原理不再赘述,详见方法实施例的描述。
[0171] 本实施例的爬虫爬取设备,与本发明实施例提供的爬虫种子获取设备相结合,使用爬虫种子获取设备获取的爬虫种子进行爬取操作,充分利用爬虫种子的数据量大、离散化度大等特点,并通过对爬虫种子的优先爬取,优化搜索引擎的爬虫的运行效率,在较短的时间内有目的完成大量数据的爬取;尤其对像垂直搜索引擎的快速部署可以大大的缩短网络爬虫的数据准备时间,提高系统部署便捷性和实用性。
[0172] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0173] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。