爬虫种子获取方法与设备及爬虫爬取方法与设备 技术领域 本发明涉及搜索引擎技术, 尤其涉及一种爬虫种子获取方法与设备及爬虫爬取方 法及设备。
背景技术 搜索引擎 (search engine) 是指根据一定的策略、 运用特定的计算机程序从因特 网 (Internet) 上搜集信息, 在对信息进行组织和处理后, 为用户提供检索服务, 将与用户 相关的检索结果展示给用户的系统。
目前, 网页的抓取策略可以分为深度优先、 广度优先和最佳优先三种。其中, 深度 优先在很多情况下会导致爬虫的陷入 (trapped) 问题, 目前常见的是广度优先和最佳优先 方法。广度优先搜索策略是指在抓取过程中, 在完成当前层次的搜索后, 才进行下一层次 的搜索。该算法的设计和实现相对简单, 广度优先搜索方法能够覆盖尽可能多的网页。目 前也有很多研究将广度优先搜索策略应用于聚焦爬虫 ( 聚焦爬虫是 “面向特定主题” 的
一种网络爬虫程序 ) 中, 其基本思想是认为与初始统一资源定位符 (Universal Resource Locator ; 简称为 : URL) 在一定链接距离内的网页具有主题相关性的概率很大。 另外一种方 法是将广度优先搜索与网页过滤技术结合使用, 先用广度优先策略抓取网页, 再将其中无 关的网页过滤掉。最佳优先搜索策略按照一定的网页分析算法, 预测候选 URL 与目标网页 的相似度, 或与主题的相关性, 并选取评价最好的一个或几个 URL 进行抓取。最佳优先搜索 策略只访问经过网页分析算法预测为 “有用” 的网页, 因此最佳优先策略是一种局部最优搜 索算法。
网络爬虫是搜索引擎的信息爬取器。爬虫种子是网络爬虫初始化爬取的 URL 或者 URL 集合。其中, URL 是用于完整描述 Internet 上网页和其他资源的地址的一种标识方法, Internet 上的每一个网页都具有一个唯一的名称标识, 通常称之为 URL 地址, 这种 URL 地 址可以是本地磁盘, 也可以是局域网上的某一台计算机, 简单的说, URL 就是 Web 地址, 俗称 “网址” 。在现有技术中, 爬虫种子是由人工预先分配给网络爬虫的。爬虫种子是网络爬虫 后续爬取 URL 的信息来源。具体的, 网络爬虫把爬虫种子页面中包含的其他 URL 地址提取 出来, 放入待爬取 URL 队列, 作为后续爬取的对象 ; 随着爬取的 URL 数量的增加, 爬虫种子也 就不断变化和扩大。
现有技术中, 由于爬虫种子通常是由人工预先指定的若干个 URL, 对爬虫种子的 筛选构建没有体系化的策略或者方案, 这就导致了在全网搜索的情况下, 需要较长的时间 ( 通常为半年或者 1 年 ) 才能够获取到大量主流 URL, 而且由于爬虫种子数量有限所形成的 主流 URL 的覆盖性也较差, 对需要快速实现全网主流数据搜索的爬虫系统来说, 时间成本 巨大, 不易于部署实施。 发明内容
本发明实施例提供一种爬虫种子获取方法与设备及爬虫爬去方法与设备, 用以提供大量的、 离散度大的爬虫种子, 从而缩短形成主流 URL 的时间, 提高主流 URL 的覆盖性, 降 低爬虫系统进行爬取时的时间成本。
本发明提供一种爬虫种子获取方法, 包括 :
根据预设检索词词典和目标导航网站的统一资源定位符 URL 特性, 构造动态页面 请求 ;
将所述动态页面请求发送给所述目标导航网站的服务器 ;
根据预设提取策略, 从所述服务器根据所述动态页面请求返回的检索结果页面中 提取目标 URL, 所述目标 URL 为所述检索结果页面中的 URL 的主域名地址 ;
对所述目标 URL 进行唯一化处理, 获取唯一化目标 URL, 将所述唯一化目标 URL 作 为爬虫种子。
本发明提供一种使用本发明提供的爬虫种子获取方法获取的爬虫种子的爬虫爬 取方法, 包括 :
当内存空间中的种子队列中存在所述爬虫种子时, 从所述种子队列中获取一个爬 虫种子进行爬取, 并将根据所述爬虫种子爬取到的页面中的 URL 添加到所述内存空间的待 爬取队列中, 并将爬取过的爬虫种子从所述种子队列中删除 ; 当所述种子队列中不存在所述爬虫种子, 而所述待爬取队列中存在待爬取 URL 时, 从所述待爬取队列中获取一个待爬取 URL 进行爬取, 并将根据所获取的待爬取 URL 爬取 到的页面中的 URL 添加到所述待爬取队列中, 并将已爬取的 URL 从所述待爬取队列中删除。
本发明提供一种爬虫种子获取设备, 包括 :
构造模块, 用于根据预设检索词词典和目标导航网站的统一资源定位符 URL 特 性, 构造动态页面请求 ;
发送模块, 用于将所述动态页面请求发送给所述目标导航网站的服务器 ;
提取模块, 用于根据预设提取策略, 从所述服务器根据所述动态页面请求返回的 检索结果页面中提取目标 URL, 所述目标 URL 为所述检索结果页面中的 URL 的主域名地址 ;
获取模块, 用于对所述目标 URL 进行唯一化处理, 获取唯一化目标 URL, 将所述唯 一化目标 URL 作为爬虫种子。
本发明提供一种使用本发明提供的爬虫种子获取方法获取的爬虫种子的爬虫爬 取设备, 包括 :
第一爬取模块, 用于在内存空间中的种子队列中存在所述爬虫种子时, 从所述种 子队列中获取一个爬虫种子进行爬取, 并将根据所述爬虫种子爬取到的页面中的 URL 添加 到所述内存空间的待爬取队列中, 并将爬取过的爬虫种子从所述种子队列中删除 ;
第二爬取模块, 用于在所述种子队列中不存在所述爬虫种子, 而所述待爬取队列 中存在待爬取 URL 时, 从所述待爬取队列中获取一个待爬取 URL 进行爬取, 并将根据所获取 的待爬取 URL 爬取到的页面中的 URL 添加到所述待爬取队列中, 并将已爬取的 URL 从所述 待爬取队列中删除。
本发明的爬虫种子获取方法与设备, 爬虫种子获取设备根据检索词词典和目标导 航网站的 URL 特性, 构造动态页面请求并发送给服务器, 从服务器返回的检索页面中主动 提取符合 URL 特性的 URL 的主域名地址作为目标 URL, 并对目标 URL 进行唯一化处理得到爬 虫种子, 与现有技术中人工指定爬虫种子的的方法相比, 本发明技术方案能够获取到大量
的、 离散度大的 URL 作为爬虫种子, 使爬虫种子的获取实现了体系化, 进而降低了基于爬虫 种子获取主流 URL 的时间成本, 提高了获取的主流 URL 的覆盖性, 并提高了爬虫基于爬虫种 子进行爬取的效率, 降低了爬虫爬取的时间成本。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根 据这些附图获得其他的附图。
图 1 为现有技术的搜索引擎的拓扑结构示意图 ;
图 2 本发明一实施例提供的爬虫种子获取方法的流程图 ;
图 3 为本发明另一实施例提供的爬虫种子获取方法的流程图 ;
图 4 为本发明一实施例提供的爬虫爬取方法的流程图 ;
图 5A 为本发明另一实施例提供的爬虫爬取方法的流程图 ;
图 5B 为本发明另一实施例提供的爬虫爬取拓扑结构示意图 ;
图 6 为本发明一实施例提供的爬虫种子获取设备的结构示意图 ; 图 7 为本发明另一实施例提供的爬虫种子获取设备的结构示意图 ; 图 8 为本发明一实施例提供的爬虫爬取设备的结构示意图 ; 图 9 为本发明另一实施例提供的爬虫爬取设备的结构示意图。具体实施方式
为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发明实施例 中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是 本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
图 1 为现有技术的搜索引擎的拓扑结构示意图。在图 1 中示出 3 个服务器, 但并 不限于此。其中, 第一服务器、 第二服务器和第三服务器可以分别为新浪 (sina) 网站的服 务器、 163 网站的服务器和雅虎 (yahoo) 网站的服务器。各个服务器主要存储 web 页面, 用 于根据爬虫服务器提供的爬取请求, 向爬虫服务器返回爬取结果页面。 爬虫服务器, 用于负 责在互联网上根据某些规则进行 web 页面的爬取, 并将爬取的内容 ( 即各个服务器返回的 爬取结果页面 ) 保存到本地。其中, 爬虫服务器可以以文本形式保存爬取到的内容, 也可以 以数据库的形式保存。信息提取器, 用于将爬虫服务器爬取的 web 页面内容进行信息提取 与剥离等处理。搜索引擎全文检索系统, 用于根据业务需求在信息提取器提取和剥离出的 海量的 web 信息中进行信息检索, 并将检索结果提交给用户。
在上述搜索引擎的拓扑结构中, 爬虫服务器仅以人工预先设定的数量有限的 URL 作为爬虫种子开始爬取, 并在爬取过程中通过不断提取爬取到的 web 页面中的 URL 扩大要 爬取的 URL。 在现有方案中, 一开始爬虫沿着较少路径进行爬取, 容易导致爬取路径死循环, 而主要通过在爬取过程中提取 URL 来扩展需要爬取的 URL 以最终形成主流 URL 的方法速度 较慢、 时间成本较高, 进而导致搜索引擎的效率较低、 时间成本代价较高。针对上述问题,本发明以下实施例提供一种在爬虫服务器开始爬取之前获取大量主流的、 合乎目标主题的 URL 作为起始爬取时的爬虫种子, 以提高爬取速度、 节约爬取时间成本的技术方案。
图 2 本发明一实施例提供的爬虫种子获取方法的流程图。如图 2 所示, 本实施例 的方法包括 :
步骤 101、 根据预设检索词词典和目标导航网站的 URL 特性, 构造动态页面请求。
本实施例的核心问题是如何在爬虫服务器开始爬取之前, 获取大量离散化的 URL 作为爬虫种子。本实施例充分利用百度 (Baidu)、 谷歌 (google) 等已知网站的大型搜索引 擎数据库, 自动构建符合各已知网站的 URL, 并将构造的 URL 发送给各已知网站的服务器进 行全站深度检索, 从各服务器返回的检索结果页面中获取大量 URL。
目前, 大多数已知网站 ( 例如 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 开始。
其中, 为了适应不同网站的 URL 特性, 本实施例的爬虫种子获取设备根据各网站 的 URL 特性构造动态 URL。
另外, 为了尽可能获取较大数量的离散化 URL, 本实施例的爬虫种子获取设备预 先设定了包括大量检索词的检索词词典并预先指定了所需的目标导航网站。其中, 检索词 词典中的检索词可以是人工输入的目标导航网站能够识别的任意数据, 也可以是目标导航网站所提供的有效数据集合中的数据, 还可以是从科技词典或搜索引擎的分次词典中的数 据。 其中, 检索词词典所包含的检索词越多越好, 指定的目标导航网站数量越多越好。 其中, 目标导航网站可以包括 Baidu、 google、 Alexa、 yahoo、 sina 等。基于此, 本实施例的爬虫种 子获取设备根据预设检索词词典中的检索词和目标导航网站的 URL 特性, 构造符合目标导 航网站的 URL 特性的动态页面请求, 亦即构造符合目标导航网站的 URL 特性的动态 URL。
步骤 102、 将动态页面请求发送给目标导航网站的服务器。
当构造出符合 URL 特性的动态页面请求后, 爬虫种子获取设备将构造出的动态页 面请求发送给目标导航网站的服务器, 以使服务器根据动态页面请求进行全站深度检索。
在具体实施过程中, 爬虫种子获取设备可以采用超文本传输协议 (HyperText Transfer Protocol ; 简称为 : HTTP) 协议向服务器发送 HTTP 请求, 实现向服务器发送动态 页面请求的目的。其中, HTTP 请求包括动态页面请求。除此之外, 爬虫种子获取设备还可 以以 web 浏览器控件的方式, 真实的模拟 IE 浏览器对 URL 的访问, 向服务器发送 URL 访问 请求, 以实现向服务器发送动态页面请求的目的。其中, URL 访问请求包括动态页面请求。
步骤 103、 根据预设提取策略, 从服务器根据动态页面请求返回的检索结果页面中 提取目标 URL。 当服务器接收到动态页面请求后, 会根据动态页面请求进行全站深度检索, 并会 向爬虫种子获取设备返回检索结果页面。该检索结果页面通常为携带检索结果的 web 页 面; 并且视检索结果的多少不同, 该检索结果页面可以是一个 web 页面也可以是多个 web 页 面。
爬虫种子获取设备接收到服务器返回的检索结果页面后, 根据预设提取策略, 从 检索结果页面中提取目标 URL。其中, 目标 URL 主要是指符合该目标导航网站的 URL 特性 的 URL 中的主域名地址。由于不同网站的 URL 特性不同, 且由于不同检索词对应的检索结 果的数量不同导致检索结果页面的数量不同, 故本实施例的爬虫种子获取设备结合实际情 况, 预先设定了提取目标 URL 的策略。其中, 提取策略主要包括判断检索结果页面是否还有 下一页的操作、 判断是否满足目标导航网站的 URL 特性的操作, 以及在各种判断结果下的 相应处理操作等。
对于一个 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” 为主域名地址, 其他部分为叶子。
在实际应用中, 对于同一检索词, 通常会在检索结果页面中获取到主域名地址相 同的多个目标 URL, 例如 www.sina.com.cn/sports 与 www.sina.com.cn/news 是主域名地 址相同的两个目标 URL。而对于这几个主域名地址相同的目标 URL 来说, 通过一个主域名 地址就可以将这几个目标 URL 对应的 web 页面都爬取到 ; 如果针对主域名相同的每个目标 URL 都进行爬取, 其爬取结果相同, 这将增加爬取次数、 降低爬取效率、 浪费爬取时间。故在 本实施例中, 爬虫种子获取设备根据上述提取策略从检索结果页面中提取 URL 中的主域名 地址作为目标 URL。
步骤 104、 对目标 URL 进行唯一化处理, 获取唯一化目标 URL, 将唯一化目标 URL 作 为爬虫种子。
当爬虫种子获取设备从检索结果页面中提取到目标 URL 后, 为了保证最终获取的 爬虫种子的离散度, 在使爬虫种子的覆盖范围尽可能广的前提下, 使各爬虫种子尽可能离 散化, 避免将更多无效的目标 URL 加载到内存空间进行爬取, 以提高基于爬虫种子进行爬 取检索时的效率。
为实现上述目的, 本实施例的爬虫种子获取设备对目标 URL 进行唯一化处理, 获 取唯一化目标 URL。具体的, 爬虫种子获取设备将各个目标 URL 进行比较, 对于重复的目标 URL 只保留一个, 该被保留的目标 URL 被视为唯一化目标 URL。爬虫种子获取设备将获取的 唯一化目标 URL 作为爬虫种子。
本实施例的爬虫种子获取方法, 爬虫种子获取设备根据检索词词典和目标导航网 站的 URL 特性, 构造动态页面请求并发送给服务器, 从服务器返回的检索页面中主动提取 符合 URL 特性的 URL 的主域名地址作为目标 URL, 并对目标 URL 进行唯一化处理得到爬虫种 子。 与现有技术中人工指定爬虫种子的方法相比, 本实施例能够获取到大量的、 离散度大的 爬虫种子, 使爬虫种子的获取实现了体系化, 这样当基于爬虫种子进行爬取来获取主流 URL 时, 能够提高获取主流 URL 的效率、 降低获取主流 URL 的时间成本, 并且能够提高获取的主 流 URL 的覆盖性, 同时, 还为提高基于爬虫种子所进行的爬取操作的速度和效率、 节约爬取 时间成本打下了基础。 本发明各实施例中的检索词词典通常包括大量检索词, 每个检索词都对应一个动 态页面请求, 也就是说, 爬虫种子获取设备会根据按照目标导航网站的 URL 特性为每个检 索词构造一个动态页面请求。本实施例提供的步骤 101 的实施方式, 包括 :
步骤 1011、 爬虫种子获取设备首先将检索词词典中的所有检索词加载到其内存空 间中。
在正常情况下, 检索词词典是保存在外部存储空间中的。为了提高执行速度和效 率, 爬虫种子获取设备预先将检索词词典中的所有检索词加载到其内存空间中。
步骤 1012、 爬虫种子获取设备判断其内存空间中是否还有检索词存在 ; 如果判断 结果为是, 执行步骤 1013 ; 如果判断结果为否, 执行步骤 1016。
在本实施例中, 爬虫种子获取设备每根据一个检索词生成动态页面请求并在获取 到检索结果页面后, 就将该检索词从内存空间中删除。故爬虫种子获取设备需要判断内存 空间中是否还有检索词存在, 来判断是否根据所有检索词都进行了检索操作。
其中, 爬虫种子获取设备可以按照一定频率主动去查询内存空间是否还有检索词 存在, 也可以在收到上一个检索词对应的检索结果页面后去查询内存空间是否还有检索词 存在, 即处理完一个检索词后再处理另一个检索词。由于爬虫种子获取设备在收到上一个 检索词对应的检索结果页面后去查询内存空间是否还有检索词存在, 能够避免对同一检索 词的重复获取, 故为一种优选实施方式。
步骤 1013、 爬虫种子获取设备获取一个检索词, 并执行步骤 1014。
当内存空间中还有检索词存在时, 爬虫种子获取设备就从中获取一个检索词。
步骤 1014、 爬虫种子获取设备按照目标导航网站的 URL 特性, 用所获取的检索词 对应的十六进制编码构造动态 URL, 以形成动态页面请求, 并转去执行步骤 1015。
通常, 各网站的 URL 都是以十六进制形式表示的, 故在获取到检索词后, 爬虫种子 获取设备按照目标导航网站的 URL 特性, 用所获取的检索词对应的十六进制编码构造动态 URL, 以形成动态页面请求。首先, 爬虫种子获取设备需要明确本次要进行检索的目标导航 网站, 例如是 Baidu 还是 google, 进而确定目标导航网站的 URL 特性。这里 URL 的特性主要 是指 URL 字符串的基本格式。
其中, 大多数网站所使用的编码格式为 GB2312, 例如 Baidu、 yahoo 等, 而像 google 等一些特殊网站的 URL 使用的是 UTF-8。 为了适应大多数网站的需求, 本实施例的检索词词 典中的检索词采用 GB2312 编码格式进行编码。 而对于像 google 等使用 UTF-8 格式的网站, 爬虫种子获取设备预先将这些网站作为特殊网站存储起来。 基于此, 在上述过程中, 爬虫种 子获取设备需要判断目标导航网站是否为预设的特殊网站。如果判断结果为是, 即目标导 航网站是特殊网站时, 爬虫种子获取设备将取的检索词对应的 GB2312 格式的编码转换为 UTF-8 格式的编码, 将 UTF-8 格式的编码的二进制值转换为十六进制值, 用转换出的十六进 制编码构造符合特殊网站的 URL 特性的动态 URL, 从而形成动态页面请求。 如果判断结果为 否, 即目标导航网站不是特殊网站时, 爬虫种子获取设备将所获取的检索词对应的 GB2312 格式的编码的二进制值转换为十六进制值, 用转换出的十六进制编码构造符合目标导航网 站的 URL 特性的动态 URL, 从而形成动态页面请求。 步骤 1015、 当服务器根据所获取的检索词形成的动态页面请求返回检索结果页面 后, 爬虫种子获取设备将所获取的检索词从内存空间中删除, 并转去执行步骤 1012。
在本实施例中, 主要描述的是如何有序的根据每个检索词构造动态页面请求的过 程, 故在步骤 1014 中构造动态页面请求之后转去执行步骤 1015, 即将处理过的检索词从内 存空间中删除, 一方面释放对内存空间的占用, 另一方面通过该方式来确保每个检索词都 被处理过。在该过程中, 如果在发送动态页面请求后未能接收到服务器返回的检索结果页 面, 可以尝试多次发送, 如果在尝试多次发送之后仍未能接收到服务器返回的检索结果页 面, 就将该检索词记录到一个文本中以待后续进行处理, 同时将该检索词从内存空间中删 除并对下一个检索词进行处理。
而结合整个爬虫种子获取流程, 本步骤 1014 还需要同时转向步骤 102, 即每根据 检索词构造出一个动态页面请求就将其发送给服务器, 以使服务器进行全站深度检索。其 中, 当爬虫种子获取设备按照一定频率主动查询内存空间是否存在检索词并在存在时获取 检索词时, 爬虫种子获取设备使用当前检索词构造动态页面请求的过程, 与服务器根据之 前检索词对应的动态页面请求进行检索并返回检索结果页面的过程是并行执行的。 当爬虫 种子获取设备在接收到上一个检索词对应的检索结果页面后去查询内存空间是否还有检 索词存在并在存在时获取检索词时, 爬虫种子获取设备只有在服务器根据上一个检索词对 应的动态页面请求进行检索并返回检索结果页面之后, 才能使用当前检索词构造动态页面 请求。
另外, 爬虫种子获取设备也可以在根据所有检索词都构造出动态页面请求后, 将 所有动态页面请求一起发送给服务器, 即在步骤 1016 后转去执行步骤 102。
步骤 1016、 爬虫种子获取设备结束构造动态页面请求的操作。
在本实施例中, 爬虫种子获取设备预先将检索词词典中的所有检索词加载到内存 空间中, 分别根据每个检索词构造动态页面请求, 并在接收到服务器返回的检索结果页面
后将相应的检索词删除, 一方面提高了构造动态页面请求的效率, 为节约获取爬虫种子的 时间打下了基础 ; 另一方面还能及时释放对内存空间的占用, 有利于提高内存空间的利用 率, 提高爬虫种子获取设备的处理速度。
在上述实施例的基础上, 本实施例提供一种步骤 103 的实施方式, 包括 :
步骤 1031、 爬虫种子获取设备接收服务器返回的当前检索结果页面, 提取当前检 索结果页面中的 URL 的主域名地址作为目标 URL, 并将获取到的目标 URL 加入唯一化队列 中。
其中, 服务器返回的检索结果页面主要是指文本标记语言 (Hypertext Markup Language ; 简称为 : HTML) 格式的 web 页面。爬虫种子获取设备首先从 web 页面的主体 (body) 部分进行外部链接地址的提取, 即提取符合 URL 特性的 URL ; 然后再提取 URL 的主域 名地址作为目标 URL, 之后将获取到的目标 URL 加入唯一化队列中, 以准备对目标 URL 进行 唯一化处理。其中, 唯一化队列优选为爬虫种子获取设备的内存空间实现的存储队列。
步骤 1032、 爬虫种子获取设备根据预设检索页面阈值判断当前检索结果页面是否 还有下一页 ; 当判断结果为是, 即当前检索结果页面还有下一页, 则执行步骤 1033 ; 当判断 结果为否, 即当前检索结果页面不存在下一页时, 执行步骤 1034。
在本实施例中, 针对不同网站的 URL 特性以及不同检索词, 爬虫种子获取设备预 先设置了检索页面阈值, 从而限定针对每个检索词服务器需要返回的检索结果页面的页 数。例如 : 当检索页面阈值设置为 10 时, 服务器需要返回 10 页检索结果页面。
具体的, 爬虫种子获取设备会记录服务器已返回的检索结果页面的数量, 并会实 时与检索页面阈值进行比较 ; 当达到检索页面阈值时, 就对下一个检索词进行处理。其中, 当爬虫种子获取设备每根据一个检索词生成一个动态页面请求并将动态页面请求发送给 服务器时, 对下一个检索词进行处理是指根据下一个检索词生成下一个动态页面请求并发 送给服务器以使服务器进行全站深度检索以及后续处理。 当爬虫种子获取设备同时将所有 检索词对应的动态页面请求发送给服务器时, 对下一个检索词进行处理是指对下一个检索 词对应的检索结果页面进行提取目标 URL 的处理。
步骤 1033、 爬虫种子获取设备获取下一页页面请求, 并将下一页页面请求发送给 服务器, 并返回执行步骤 1031。
当某个检索词对应的检索结果页面还有下一页时, 爬虫种子获取设备获取下一页 页面请求, 并将下一页页面请求发送给服务器, 以获取下一页的检索结果。 在获取下一页的 检索结果后, 执行步骤 1031 的操作以对下一页的检索结果进行目标 URL 的提取处理, 直到 当前检索结果页面没有下一页为止。
在实际应用过程中, 一些网站的页面上会设置有下一页点击按钮。故对于具有下 一页点击按钮的检索结果页面, 爬虫种子获取设备可以从当前检索结果页面中获取下一页 点击按钮, 点击该下一页点击按钮以向服务器发送下一页页面请求。对于不具有下一页点 击按钮的检索结果页面, 爬虫种子获取设备可以根据动态页面请求对应的检索词和当前检 索结果页面的页面规律 ( 例如 : 包含的检索结果条数、 URL 中起始显示的 ID 号等 ), 构造下 一页检索结果页面对应的动态 URL, 并将下一页检索结果页面对应的动态 URL 发送给服务 器, 以请求下一页的检索结果。
步骤 1034、 爬虫种子获取设备将与检索结果页面对应的检索词从内存空间中删除, 并结束此次对目标 URL 的提取操作。
在本实施例中, 爬虫种子获取设备通过将目标 URL 存储到唯一化队列中为后续对 目标 URL 进行唯一化处理提供了便利条件, 且使用爬虫种子获取设备的内存空间作为唯一 化队列能够极大的提高唯一化处理的速度, 为节约获取爬虫种子的时间成本做出了贡献。
基于上述实施例, 本实施例提供一种步骤 104 的实施方式, 包括 :
步骤 1041、 爬虫种子获取设备判断唯一化队列中是否还存在目标 URL ; 当判断结 果为是, 即唯一化队列中还存在目标 URL 时, 执行步骤 1042 ; 当判断结果为否, 即唯一化队 列中不存在目标 URL 时, 执行步骤 1046。
在本实施例中, 爬虫种子获取设备每对一个目标 URL 进行唯一化处理后, 将其从 唯一化队列中删除, 故爬虫种子获取设备通过判断唯一化队列中是否还存在目标 URL 可以 获知是否对所有目标 URL 进行了唯一化处理。
步骤 1042、 爬虫种子获取设备从唯一化队列中获取一目标 URL, 并执行步骤 1043。
当唯一化队列中存在目标 URL 时, 爬虫种子获取设备从唯一化队列中获取一目标 URL。
步骤 1043、 爬虫种子获取设备判断所获取的目标 URL 是否已经存在于爬虫种子 列表中 ; 当判断结果为是, 即所获取的目标 URL 已经存在于爬虫种子列表中时, 执行步骤 1045 ; 当判断结果为否时, 执行步骤 1044。
在本实施例中, 爬虫种子获取设备通过爬虫种子列表来存储唯一化目标 URL, 其中 爬虫种子列表优选为爬虫种子获取设备的外部存储空间实现。
具体的, 在获取到的目标 URL 后, 爬虫种子获取设备判断所获取的目标 URL 是否已 经存在于爬虫种子列表中, 以判断是否存在与所获取的目标 URL 相同的目标 URL。
步骤 1044、 爬虫种子获取设备将所获取的目标 URL 存储到爬虫种子列表中, 并执 行步骤 1045。
步骤 1045、 将所获取的目标 URL 从唯一化队列中删除, 并转去执行步骤 1041。
当所获取的目标 URL 不存在爬虫种子列表中时, 说明该目标 URL 第一次出现, 故爬 虫种子获取设备将所获取的目标 URL 存储到爬虫种子列表中, 并将所获取的目标 URL 从唯 一化队列中删除, 继续执行步骤 1041 以及后续操作。
当所获取的目标 URL 存在于爬虫种子列表中时, 说明该目标 URL 并不是第一次出 现, 故爬虫种子获取设备不再将所获取的目标 URL 存储到爬虫种子列表中, 而直接将所获 取的目标 URL 从唯一化队列中删除, 并继续执行步骤 1041 以及后续操作。
步骤 1046、 爬虫种子获取设备将爬虫种子列表中存储的目标 URL 作为爬虫种子。
当唯一化队列中不存在目标 URL 时, 说明已经对所有目标 URL 进行了唯一化处理, 此时, 爬虫种子获取设备将爬虫种子列表中存储的目标 URL 作为爬虫种子。
在本实施例中, 爬虫种子获取设备对各目标 URL 进行唯一化处理, 具有简单易于 实施的优势, 而通过将经过唯一化处理的目标 URL 从唯一化队列中删除, 可以及时释放所 占用的内存空间, 提高内存空间的利用率。
图 3 为本发明另一实施例提供的爬虫种子获取方法的流程图。如图 3 所示, 本实 施例的方法包括 :
步骤 301、 爬虫种子获取设备将预设检索词词典加载到内存空间中。步骤 302、 爬虫种子获取设备确定目标导航网站以及目标导航网站的 URL 特性。
在本步骤中, URL 特性主要是指 URL 字符串的格式。
步骤 303、 爬虫种子获取设备判断内存空间中是否存在检索词 ; 如果判断结果为 是, 即内存空间中存在检索词, 执行步骤 304 ; 反之, 执行步骤 315。
步骤 304、 爬虫种子获取设备获取一个检索词, 并执行步骤 305。
步骤 305、 爬虫种子获取设备判断目标导航网站是否为预设的特殊网站 ; 如果判 断结果为是, 执行步骤 306 ; 如果判断结果为否, 执行步骤 307。
其中, 预设的特殊网站主要是指使用 UTF-8 编码格式的网站, 例如 google 网站。
步骤 306、 爬虫种子获取设备将检索词由 GB3212 编码格式转换为 UTF-8 编码格式, 并执行步骤 307。
步骤 307、 爬虫种子获取设备将 UTF-8 编码格式的检索词的二进制值转换为十六 进制值, 并进行显示, 之后执行步骤 308。
步骤 308、 爬虫种子获取设备根据十六进制的检索词编码构造动态 URL, 并发送给 服务器。
步骤 309、 爬虫种子获取设备获取服务器返回的携带有检索结果的 HTML 页面 ( 即 检索结果页面 )。
步骤 310、 爬虫种子获取设备解析 HTML 页面, 获取符合 URL 特性的外部链接地址,即 URL。 步骤 311、 爬虫种子获取设备对获取的 URL 进行格式化, 提取 URL 中的主域名地址, 并将提取的主域名地址作为目标 URL 送入唯一化队列中。
步骤 312、 爬虫种子获取设备根据预设检索页面阈值判断 HTML 页面是否还有下一 页; 如果判断结果为是, 返回执行步骤 308 ; 如果判断结果为否, 执行步骤 313。
步骤 313、 爬虫种子获取设备将唯一化队列中的主域名地址输出到本地爬虫种子 列表中, 并将唯一化队列清空。
步骤 314、 爬虫种子获取设备将当前检索词从内存空间中删除, 并返回执行步骤 303。
步骤 315、 爬虫种子获取设备对爬虫种子列表中的主域名地址进行唯一化处理, 并 结束操作。
在本实施例中, 是将获取到的所有主域名地址送到爬虫种子列表中后, 再对主域 名地址进行唯一化处理, 但并不限于此。 例如 : 爬虫种子获取设备还可以在将主域名地址从 唯一化队列中输出到爬虫种子列表的过程中对主域名地址进行唯一化处理。
本实施例的唯一化处理是指对于多个相同的主域名地址仅保留一个在爬虫种子 列表中, 而将其他的删除。
本实施例的爬虫种子获取方法, 爬虫种子获取设备根据检索词词典和目标导航网 站的 URL 特性, 构造动态页面请求并发送给服务器, 从服务器返回的检索页面中主动提取 符合 URL 特性的 URL 的主域名地址作为目标 URL, 并对目标 URL 进行唯一化处理得到爬虫种 子。 与现有技术中人工指定爬虫种子的方法相比, 本实施例能够获取到大量的、 离散化度大 的爬虫种子, 使爬虫种子的获取实现了体系化, 进而降低了基于爬虫种子获取主流 URL 的 时间成本, 提高了获取的主流 URL 的覆盖性, 同时提高了爬虫基于爬虫种子进行爬取时的
效率, 降低了爬虫爬取的时间成本。
图 4 为本发明一实施例提供的爬虫爬取方法的流程图。如图 4 所示, 本实施例的 方法包括 :
步骤 400、 爬虫爬取设备判断其内存空间中的种子队列中是否存在爬虫种子 ; 如 果判断结果为是, 执行步骤 401 ; 如果判断结果为否, 执行步骤 402。
其中, 本实施例的爬虫种子是由上述各实施例提供的爬虫种子获取方法获取到的 爬虫种子。所述爬虫种子被加载到爬虫爬取设备的内存空间中, 为爬虫提供进行爬取的原 始 URL。
在本实施例中, 爬虫爬取设备将爬虫种子加载到内存空间的种子队列中可以提高 爬取过程中获取爬虫种子的速度, 进而提高爬取效率, 有利于节约时间成本。
步骤 401、 爬虫爬取设备从种子队列中获取一个爬虫种子进行爬取, 并将根据爬虫 种子爬取到的页面中的 URL 添加到内存空间的待爬取队列中, 并将爬取过的爬虫种子从种 子队列中删除。
当内存空间中的种子队列中存在爬虫种子时, 爬虫爬取设备获取一个爬虫种子, 并以爬虫种子为原始 URL 进行此次爬取。当爬取到爬取页面时, 爬虫爬取设备对爬取页面 进行解析, 从中获取外部链接的 URL ; 当获取到外部链接的 URL 时, 将获取到的 URL 添加到 内存空间中的待爬取队列中。 在本实施例中, 为了保证爬虫种子优先被爬取, 故在内存空间 中同时设置种子队列和待爬取队列, 种子队列中存储爬虫种子, 而待爬取队列中存储在爬 取过程中获取的 URL, 只有当种子队列中的爬虫种子都被爬取过后, 才能开始对待爬取队列 中 URL 的爬取。同时, 爬虫爬取设备将被爬取后的爬虫种子从种子队列中删除, 一方面防止 对同一爬虫种子进行重复爬取, 另一方面及时释放内存空间, 提高内存空间的利用率。 另外, 对于爬取到的页面, 爬虫爬取设备还将其发送给后续的信息提取器, 由信息 提取器对爬取页面进行相关信息的提取。
步骤 402、 爬虫爬取设备判断待爬取队列中是否存在待爬取的 URL ; 当判断结果为 是时, 执行步骤 403 ; 当判断结果为否时, 执行步骤 404。
当种子队列中不存在爬虫种子, 爬虫爬取设备判断待爬取队列中是否有待爬取的 URL ; 如果有, 则继续对待爬取队列中的 URL 进行爬取 ; 如果没有, 则结束爬取操作。
步骤 403、 爬虫爬取设备从待爬取队列中获取一个待爬取 URL 进行爬取, 并将根据 所获取的待爬取 URL 爬取到的页面中的 URL 添加到待爬取队列中, 并将已爬取的 URL 从待 爬取队列中删除。
当种子队列中不存在爬虫种子, 而待爬取队列中存在待爬取 URL 时, 爬虫爬取设 备从待爬取队列中获取一个待爬取 URL 进行爬取, 并对爬取到的页面进行分析, 从爬取页 面中获取外部链接的 URL, 并将获取的 URL 添加到待爬取队列中以继续进行爬取。同时, 爬 虫爬取设备将爬取过的 URL 从待爬取队列中删除, 一方面防止对同一 URL 进行重复爬取, 另 一方面及时释放内存空间, 为后续爬取到的新 URL 提供存储空间, 提高内存空间的利用率。
同理, 对于爬取到的页面, 爬虫爬取设备还将其发送给后续的信息提取器, 由信息 提取器对爬取页面进行相关信息的提取。
步骤 404、 结束爬取操作。
当种子队列中不存在爬虫种子, 且待爬取队列中也不存在待爬取 URL 时, 没有 URL
需要爬取, 故爬取过程结束。
本实施例的爬虫爬取方法, 以上述实施例获取的爬虫种子作为原始爬取的 URL, 并 优先爬取爬虫种子, 只有待所有爬虫种子都爬取过后, 再爬取其他 URL, 通过对爬虫种子的 优先爬取, 优化搜索引擎的爬虫的运行效率, 在较短的时间内有目的完成大量数据的爬取, 对诸如垂直搜索引擎的快速部署可以大大的缩短网络爬虫的数据准备时间, 提高系统部署 便捷性和实用性。
在上述实施例中, 在步骤 400 之前, 爬虫爬取设备可以预先将爬虫种子列表中的 爬虫种子全部加载到内存空间中的种子队列中, 为步骤 400 以及后续步骤打下基础。在该 实施方式中, 爬虫种子获取过程在爬虫爬取之前完成。
除上述方式之外, 爬虫种子获取过程还可以与爬虫爬取过程并行执行, 即在爬虫 种子获取过程中, 爬虫爬取设备定时访问爬虫种子列表, 将爬虫种子列表中未被加载的爬 虫种子加载到其内存空间的种子队列中, 并为爬虫种子列表中被加载到种子队列中的爬虫 种子设置访问标识, 从而实现在爬虫种子获取过程中进行爬虫爬取操作, 并且保证了爬虫 种子被优先爬取。另外, 在该实施方式中, 通过为被加载的爬虫种子设置访问标识, 实现了 对爬虫种子的识别, 避免了同一爬虫种子被多次加载, 为提高爬取效率打下了基础。
图 5A 为本发明另一实施例提供的爬虫爬取方法的流程图 ; 图 5B 为本发明另一实 施例提供的爬虫爬取拓扑结构示意图。图 5B 所示的爬取拓扑结构与图 1 所示的拓扑相比, 区别在于在爬虫服务器之前设置有爬虫种子获取设备和一存储爬虫种子的爬虫种子服务 器; 另外, 图 5B 所示爬取拓扑中的爬虫服务器为图 4 所示实施例中的爬虫爬取设备, 具有优 先爬取爬虫种子的功能。如图 5A 所示, 本实施例的方法包括 :
步骤 501、 爬虫种子获取设备获取爬虫种子, 并将爬虫种子存储到爬虫种子数据库 中。
该步骤中的爬虫种子服务器相当于上述实施例中的爬虫种子列表的功能。
该步骤 501 的具体实现过程可参见图 2 或图 3 所示实施例的详细描述。
步骤 502、 爬虫服务器定时从爬虫种子服务器中提取没有访问标识的爬虫种子, 为 提取的爬虫种子设置访问标识, 并将提取的爬虫种子插入其内存空间的种子队列中。
步骤 503、 爬虫服务器优先爬取种子队列中的爬虫种子, 当种子队列中没有爬虫种 子时, 再爬取由爬取到的 HTML 页面中提取出的外部链接 URL。
本实施例的爬虫爬取方法, 爬虫种子获取设备结合目标导航网站构造动态 URL, 达 到挖掘目标导航网站深层次的 URL, 以获取大量离散的、 优化的爬虫种子的目的, 进而使得 爬虫服务器通过对爬虫种子的优先爬取, 优化搜索引擎的爬虫的运行效率, 在较短的时间 内有目的完成大量数据的爬取 ; 尤其对像垂直搜索引擎的快速部署可以大大的缩短网络爬 虫的数据准备时间, 提高系统部署便捷性和实用性。
图 6 为本发明一实施例提供的爬虫种子获取设备的结构示意图。如图 6 所示, 本 实施例的爬虫种子获取设备包括 : 构造模块 61、 发送模块 62、 提取模块 63 和获取模块 64。
其中, 构造模块 61, 用于根据预设检索词词典和目标导航网站的 URL 特性, 构造动 态页面请求。发送模块 62, 与构造模块 61 和服务器连接, 用于将动态页面请求发送给目标 导航网站的服务器。提取模块 63, 与服务器连接, 用于根据预设提取策略, 从服务器根据动 态页面请求返回的检索结果页面中提取目标 URL, 所述目标 URL 为检索结果页面中的 URL 的主域名地址。 获取模块 64, 与提取模块 63 连接, 用于对目标 URL 进行唯一化处理, 获取唯一 化目标 URL, 将唯一化目标 URL 作为爬虫种子。
本实施例爬虫种子获取设备的各功能模块可用执行图 2 所示爬虫种子获取方法 的流程, 其具体工作原理不再赘述, 详见方法实施例的描述。
本实施例的爬虫种子获取设备, 根据检索词词典和目标导航网站的 URL 特性, 构 造动态页面请求并发送给服务器, 从服务器返回的检索页面中主动提取符合 URL 特性的 URL 的主域名地址作为目标 URL, 并对目标 URL 进行唯一化处理得到爬虫种子。与现有技术 中人工指定爬虫种子的方法相比, 本实施例的爬虫种子获取设备能够获取到大量的、 离散 度大的爬虫种子, 使爬虫种子的获取实现了体系化, 这样当基于爬虫种子进行爬取来获取 主流 URL 时, 能够提高获取主流 URL 的效率、 降低获取主流 URL 的时间成本, 并且能够提高 获取的主流 URL 的覆盖性, 同时, 还为提高基于爬虫种子所进行的爬取操作的速度和效率、 节约爬取时间成本打下了基础。
图 7 为本发明另一实施例提供的爬虫种子获取设备的结构示意图。本实施例基于 图 6 所示实施例实现, 如图 7 所示, 本实施例爬虫种子获取设备的构造模块 61 包括 : 加载单 元 611、 检索词获取单元 612 和构造单元 613。
在具体实施过程中, 加载单元 611 将检索词词典中的所有检索词加载到爬虫种子 获取设备的内存空间。检索词获取单元 612 判断内存空间中是否存在检索词, 并在内存空 间中有检索词存在时, 获取一个检索词。构造单元 613 按照目标导航网站的 URL 特性, 用检 索词获取单元 612 所获取的检索词对应的十六进制编码构造动态 URL, 以形成动态页面请 求。
进一步, 本实施例的构造单元 613 具体用于判断目标导航网站是否为预设的特殊 网站 ; 其中特殊网站主要是指使用 UTF-8 编码格式的网站, 例如 google 网站等。当目标导 航网站为特殊网站时, 构造单元 613 将所获取的检索词对应的 GB2312 格式的编码转换为 UTF-8 格式的编码, 将 UTF-8 格式的编码的二进制值转换为十六进制值, 用转换出的十六进 制编码构造符合特殊网站的 URL 特性的动态 URL, 以形成动态页面请求。 当目标导航网站不 是特殊网站时, 构造单元 613 将所获取的检索词对应的 GB2312 格式的编码的二进制值转换 为十六进制值, 用转换出的十六进制编码构造符合目标导航网站的 URL 特性的动态 URL, 以 形成动态页面请求。
上述各功能单元可用于执行上述方法实施例中步骤 101 的具体实施方式的流程, 其具体工作原理不再赘述, 详见方法实施例的描述。
本实施例的发送模块 62 包括以下任一发送单元或其组合。第一发送单元 621, 用 于向服务器发送 HTTP 请求, 该 HTTP 请求包括构造单元 613 形成的动态页面请求。第二发 送单元 622, 用于向服务器发送 URL 访问请求, 该 URL 访问请求包括构造单元 613 形成的动 态页面请求。
上述各功能单元可用于执行上述方法实施例中步骤 102 的具体实施方式的流程, 其具体工作原理不再赘述, 详见方法实施例的描述。
本实施例的提取模块 63 包括 : 接收获取单元 631、 判断触发单元 632 和删除单元 633。
在具体实施过程中, 接收获取单元 631 与服务器连接, 用于接收服务器返回的当前检索结果页面, 提取当前检索结果页面中的 URL 的主域名地址作为目标 URL, 并将获取的 目标 URL 加入唯一化队列中。判断触发单元 632 与接收获取单元 631 和服务器连接, 用于 根据预设检索页面阈值判断当前检索结果页面是否还有下一页, 并在当前检索结果页面还 有下一页时, 获取下一页页面请求, 并将下一页页面请求发送给服务器, 并触发接收获取单 元 631 执行接收服务器返回的当前检索结果页面, 提取当前检索结果页面中的 URL 的主域 名地址作为目标 URL, 并将目标 URL 加入唯一化队列中的操作, 直到当前检索结果页面不存 在下一页为止。删除单元 633, 与判断触发单元 632 连接, 用于在判断触发单元 632 判断出 当前检索结果页面不存在下一页时, 将与检索结果页面对应的检索词从内存空间中删除, 为检索词获取单元 612 获取检索词提供条件。
更为具体的, 判断触发单元 632 可以从当前检索结果页面中获取下一页点击按 钮, 点击下一页点击按钮以向服务器发送下一页页面请求, 然后触发接收获取单元 631 执 行接收服务器返回的当前检索结果页面, 提取当前检索结果页面中的 URL 的主域名地址作 为目标 URL, 并将目标 URL 加入唯一化队列中的操作, 直到当前检索结果页面不存在下一页 为止。
另外, 判断触发单元 632 还可以根据动态页面请求对应的检索词和当前检索结果 页面的页面规律, 构造下一页检索结果页面对应的动态 URL, 并将下一页检索结果页面对应 的动态 URL 发送给服务器, 然后触发接收获取单元 631 执行接收服务器返回的当前检索结 果页面, 提取当前检索结果页面中的 URL 的主域名地址作为目标 URL, 并将目标 URL 加入唯 一化队列中的操作, 直到当前检索结果页面不存在下一页为止。
上述各功能单元可用于执行上述方法实施例中步骤 103 的具体实施方式的流程, 其具体工作原理不再赘述, 详见方法实施例的描述。
本实施例的获取模块 64 包括 : 提取单元 641、 判断单元 642、 存储判断单元 643 和 种子获取单元 644。
其中, 提取单元 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 作为爬虫种子。
上述各功能单元可用于执行上述方法实施例中步骤 104 的具体实施方式的流程, 其具体工作原理不再赘述, 详见方法实施例的描述。
本实施例的爬虫种子获取设备, 根据检索词词典和目标导航网站的 URL 特性, 构 造动态页面请求并发送给服务器, 从服务器返回的检索页面中主动提取符合 URL 特性的 URL 的主域名地址作为目标 URL, 并对目标 URL 进行唯一化处理得到爬虫种子。与现有技术中人工指定爬虫种子的方法相比, 本实施例的爬虫种子获取设备能够获取到大量的、 离散 度大的爬虫种子, 使爬虫种子的获取实现了体系化, 这样当基于爬虫种子进行爬取来获取 主流 URL 时, 能够提高获取主流 URL 的效率、 降低获取主流 URL 的时间成本, 并且能够提高 获取的主流 URL 的覆盖性, 同时, 还为提高基于爬虫种子所进行的爬取操作的速度和效率、 节约爬取时间成本打下了基础。
图 8 为本发明一实施例提供的爬虫爬取设备的结构示意图。如图 8 所示, 本实施 例的爬虫爬取设备包括 : 第一爬取模块 81 和第二爬取模块 82。
其中, 第一爬取模块 81, 与爬虫爬取设备的内存空间连接, 用于在内存空间中的种 子队列中存在爬虫种子时, 从种子队列中获取一个爬虫种子进行爬取, 并将根据爬虫种子 爬取到的页面中的 URL 添加到内存空间的待爬取队列中, 并将爬取过的爬虫种子从种子队 列中删除。第二爬取模块 82, 与爬虫爬取设备的内存空间连接, 用于在种子队列中不存在 爬虫种子, 而待爬取队列中存在待爬取 URL 时, 从待爬取队列中获取一个待爬取 URL 进行爬 取, 并将根据所获取的待爬取 URL 爬取到的页面中的 URL 添加到待爬取队列中, 并将已爬取 的 URL 从待爬取队列中删除。
其中, 本实施例的爬虫种子是由图 6 或图 7 的爬虫种子获取设备获取到的爬虫种 子, 关于爬虫种子的具体获取流程可参见图 2 或图 3 所示爬虫种子获取方法的流程, 在本实 施例中不再做详细描述。
本实施例的爬虫爬取设备的各功能模块可用于执行图 4 所示爬虫爬取方法中的 相应流程, 其具体工作原理不再赘述, 详见方法实施例的描述。
本实施例的爬虫爬取设备, 与本发明实施例提供的爬虫种子获取设备相结合, 使 用爬虫种子获取设备获取的爬虫种子进行爬取操作, 充分利用爬虫种子的数据量大、 离散 化度大等特点, 并通过对爬虫种子的优先爬取, 优化搜索引擎的爬虫的运行效率, 在较短的 时间内有目的完成大量数据的爬取 ; 尤其对像垂直搜索引擎的快速部署可以大大的缩短网 络爬虫的数据准备时间, 提高系统部署便捷性和实用性。
图 9 为本发明另一实施例提供的爬虫爬取设备的结构示意图。本实施例基于图 8 所示实施例实现, 如图 9 所示, 本实施例的爬虫爬取设备还包括包括以下任一加载模块或 其组合 :
第一加载模块 83, 与爬虫爬取设备的内存空间连接, 用于将爬虫种子列表中的爬 虫种子全部加载到内存空间中的种子队列中。第二加载模块 84, 与爬虫爬取设备的内存 空间连接, 用于定时访问爬虫种子列表, 将爬虫种子列表中未被加载的爬虫种子加载到内 存空间的种子队列中, 并为爬虫种子列表中的被加载到种子队列中的爬虫种子设置访问标 识。
上述各功能模块可用于执行图 4 或图 5A 所示爬虫爬取方法中的相应流程, 用于将 爬虫种子获取设备获取的爬虫种子加载到爬虫爬取设备的内存空间中, 为第一爬取模块和 第二爬取模块打下基础, 其具体工作原理不再赘述, 详见方法实施例的描述。
本实施例的爬虫爬取设备, 与本发明实施例提供的爬虫种子获取设备相结合, 使 用爬虫种子获取设备获取的爬虫种子进行爬取操作, 充分利用爬虫种子的数据量大、 离散 化度大等特点, 并通过对爬虫种子的优先爬取, 优化搜索引擎的爬虫的运行效率, 在较短的 时间内有目的完成大量数据的爬取 ; 尤其对像垂直搜索引擎的快速部署可以大大的缩短网络爬虫的数据准备时间, 提高系统部署便捷性和实用性。
本领域普通技术人员可以理解 : 实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读取存储介质中, 该程序 在执行时, 执行包括上述方法实施例的步骤 ; 而前述的存储介质包括 : ROM、 RAM、 磁碟或者 光盘等各种可以存储程序代码的介质。
最后应说明的是 : 以上实施例仅用以说明本发明的技术方案, 而非对其限制 ; 尽 管参照前述实施例对本发明进行了详细的说明, 本领域的普通技术人员应当理解 : 其依然 可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替 换; 而这些修改或者替换, 并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。