首页 > 范文大全 > 正文

网络蜘蛛设计研究论文

开篇:润墨网以专业的文秘视角,为您筛选了一篇网络蜘蛛设计研究论文范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】网络蜘蛛搜索策略的研究是近年来专业搜索引擎研究的焦点之一,如何使搜索引擎快速准确地从庞大的网页数据中获取所需资源的需求是目前所面临的重要问题。本文重点阐述了搜索引擎的WebSpider(网络蜘蛛)的搜索策略和搜索优化措施,提出了一种简单的基于广度优先算法的网络蜘蛛设计方案,并分析了设计过程中的优化措施。

【关键词】搜索引擎;网络蜘蛛;搜索策略

0引言

近年来,随着Internet技术的广泛应用,传统的通用搜索引擎,如Google、Fast、AltaVista和GoTo等正面临巨大的挑战。挑战之一是Web信息资源呈指数级增长,搜索引擎无法索引所有页面。据统计,目前Web上静态页面的数量超过40亿个,而且这一数量还在以平均每天730万个页面的速度递增。在过去的几年中,尽管各种通用搜索引擎在索引技术、索引数量上有所提高,但远远无法跟上Web本身的增长速度,即使是目前全球最大的搜索引擎Google,其索引的页面数量仅占Web总量的40%;挑战之二是Web信息资源的动态变化,搜索引擎无法保证对信息的及时更新。近年来的研究表明,Web上的页面平均50天就有约50%的页面发生变化,而目前通用搜索引擎更新的时间至少需要数星期之久;挑战之三是传统的搜索引擎提供的信息检索服务,不能满足人们日益增长的对个性化服务的需要。因此如何设计网络蜘蛛(WebSpider)来更有效率的爬取互联网上的内容成为搜索引擎的一个首要问题。在设计网络蜘蛛时,不仅需要充分考虑到爬取的效率和站点设置的灵活性还要确保系统的稳定性。一个优秀的搜索引擎,需要不断的优化网络蜘蛛的算法,提升其性能。本文在分析网络蜘蛛的工作原理的基础上,提出了一种基于广度优先搜索算法的网络蜘蛛的实现,并对提高网络蜘蛛搜索效率的相关看法。

由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。[2]例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于第2层,I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取(下小节会介绍),但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。

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]网络蜘蛛搜索策略问题的研究,对专业搜索引擎的应用与发展具有重要意义。本文对现有的网络蜘蛛搜索策略进行了简单的介绍和分析,提出了一种基于广度优先搜索网络蜘蛛设计方案。提出了提高网络蜘蛛效率的几种方法。目前的网络蜘蛛通常采用“固定的”搜索策略,缺乏适应性,如何提高网络蜘蛛的自适应性有待进一步研究。总之,网络蜘蛛搜索策略问题的研究还处于发展阶段,无论是模型、搜索算法,还是实验方法都还有

许多有待解决的问题。