2 网络 蜘蛛的设计
根据抓取过程,蜘蛛主要分为三个功能模块, 一个是网页读取模块主要是用来读取远程 Web 服 务器上的网页 内容 ,另一个是超链 分析 模块,这个 模块主要是分析网页中的超链接,将网页上的所有 超链接提取出来,放入到待抓取 URL 列表中,再一 个模块就是内容分析模块,这个模块主要是对网页 内容进行分析,将网页中所有超标志去掉只留下网 页文字内容。蜘蛛的主要工作流程如图所示。
首先蜘蛛读取抓取站点的 URL 列表,取出一个 站点 URL,将其放入未访问的 URL 列表(UVURL 列表)中,如果 UVURL 不为空刚从中取出一个 URL 判断是否已经访问过,若没有访问过则读取此网页, 并进行超链分析及内容分析,并将些页存入文档数 据库,并将些 URL 放入已访问 URL 列表(VURL 列表),直到 UVRL 为空为止,此时再抓取其他站 点,依次循环直到所有的站点 URL 列表都抓取完为 止。
为了提高网络蜘蛛的抓取效率,需要引入以下 技术。
(1)、 多线程技术:由于抓取的站点 URL 相当多,采用单线程蜘蛛抓取时速度不够,也不能满足实 际的需要。因而需要多线程技术来创建多个蜘蛛线程来同时抓取,以提高速度。
(2)、 网页抓取:网页抓取是基于 HTTP 协议之上的, 网页上的资源有多种,有网页,有 Word 文档也 有其他类型的文件,这样抓取时需要判断 URL 所指向资源的类型。
(3)、 超链分析:超链分析是一个比较重要的环节,需要对 HTML 的各种标志(tag)有一个很全面 的了解。需要反复测试,考虑各种情形的发生。
超链分析时从网页里提取出来的是相对于当前 页的相对 URL,因而需要根据当前页的绝对 URL 将提取的这个 URL 转换成绝对 URL。在 此过程中需要根据 ParentURL(就是当前页的 URL)作出各种判断。
3 改进 方法
商业化的蜘蛛需要抓取上亿的网页,因而抓取 速度是一个关键,另外蜘蛛需要自动运行,尽是减 少人工的参与,因而系统的性能也是一个很重要的 关键,系统能够在发生异常的时候自动进行处理, 防止程序的退出和死机。[3]有一些细节需要注意:
系统应该使用多线程,使用多个蜘蛛同时抓取,在可能的情况下,最好是做成 分布式的蜘蛛程序,蜘蛛应该分布地网 络上多台服务器上协同抓取网页,这样 速度会更快,更符合我们的实际 应用 。
对于同一网站的网页应该采用同一个 HttpConnection 这样有效地节省创建一 个连接的时间,另外对于抓取的 URL 采用域名缓冲机制(可在网关一级上实 现),这样抓取时减少由域名到 IP 地 址的转换时间以及重复的域名转换。若 能做到这一步将会大大减少抓取时间, 因为访问一 URL 时每次都要进行域名 到主机 IP 地址的转换。
最好是能够将读取网页、超链分析及网 页内容分析三部分分开来做,让它们并 行协同工作,这样效率会更高。因为在这三个过程中网页读取比起其他两个 功能来说是一个长任务,最耗时间。当抓取完一网页后,在抓取下一网页的时候让去执行超链分析和内容分析。这样 在下一网页抓取完成之前超链分析和 内容分析任务就能完成,抓取任务不会 延迟,这样节省了一些时间。
4 结束语
随着人们对“个性化”信息服务需要的日益增 长,专业搜索引擎的 发展 将成为搜索引擎发展的主 要趋势之一。[4]网络蜘蛛搜索策略 问题 的 研究 ,对 专业搜索引擎的应用与发展具有重要意义。本文对 现有的网络蜘蛛搜索策略进行了简单的介绍和分 析,提出了一种基于广度优先搜索网络蜘蛛设计方 案。提出了提高网络蜘蛛效率的几种方法。 目前 的 网络蜘蛛通常采用“固定的”搜索策略,缺乏适应性,如何提高网络蜘蛛的自适应性有待进一步研究。 总之,网络蜘蛛搜索策略问题的研究还处于发展阶 段,无论是模型、搜索算法,还是实验方法都还有
许多有待解决的问题。




