搜索引擎中的网络蜘蛛技术探析
时间:2015-12-20 22:47:40 所属分类:计算机网络 浏览量:
摘要:搜索引擎技术可以从海量的 三 网络蜘蛛对于文件的处理 (一)二进制文件处理 网络上除了有大量的HTML文件和XML文件外,也有大量的二进制文件。为了使网页的内容更加丰富,图片和多媒体文件被网页大量的引用。它们在网页上也是以超链接的形式出现的,因而
摘要:搜索引擎技术可以从海量的
三 网络蜘蛛对于文件的处理
(一)二进制文件处理
网络上除了有大量的HTML文件和XML文件外,也有大量的二进制文件。为了使网页的内容更加丰富,图片和多媒体文件被网页大量的引用。它们在网页上也是以超链接的形式出现的,因而在链接提取的阶段它们也是会被放在待访问队列中。对于二进制文件通过文件的内容来完成文件的索引是不现实的,现在的技术还没有达到可以通过二进制文件来理解文件内容的地步。因而对于这些文件的处理一般是采用单独处理的方式,其内容的理解完全需要依靠二进制文件的锚点描述来完成。锚点描述通常代表了文件的标题或是基本内容。锚点信息一般是由引用网页来提供,而不是放在二进制文件本身。二进制文件由于种类的差别问题,也需要分别来进行处理。
(二)脚本文件的处理
这里说的脚本文件一般指的是包含在网页中的客户端脚本,它会在网页下载到客户端的时候才会运行,通常会在客户端上完成一些简单的交互工作。脚本文件一般会在网页中负责网页的显示工作,但由于ajax技术的广泛使用,它也会负责与服务器端的交互工作。由于脚本语言的多样性和复杂性,对它的分析处理无异于制作一个简单的网页解析程序。正是因为处理脚本文件相当困难,许多小规模的搜索引擎往往会直接省略对它的处理。但是由于现在网站设计者对于无刷新页面要求的提高和对ajax技术的大量使用,如果忽略了对它的处理将会是一项巨大的损失。
(三)不同文件类型处理
对于网页内容的提取分析一直是网络蜘蛛的重要技术环节。对于网上不同文件类型文件的处理,网络蜘蛛通常是采用插件的方式来处理。它会有一个比较智能化的插件管理程序负责管理不同的插件,对于需要处理的不同类型的文件,它会调用不同的插件来处理。之所以是采用插件的形式,主要是出于扩展性方面的考虑。互联网上有许多不同类型的文件,不同的文件需要完全不同的处理方式,而且这个网络是不断变化的,随时会有新文件类型出现的可能。而要完成对新类型的处理,最简单的方法就是给新类型编写新的插件,然后将插件直接交由管理程序来管理。同时这个插件的编写最好是由新文件格式的制造者自行完成,通常只有制造者才最了解新格式定义的意义。
四 网络蜘蛛的策略分析
(一)搜索策略
网络蜘蛛的搜索策略指的是如何根据抓取下来的URL地址来选择访问地址先后的一种标准或规则。它将指导蜘蛛程序下一步的执行方向。搜索策略一般有深度优先的搜索策略和广度优先的搜索策略两种。
广度优先的搜索是最简便的图搜索算法,在数据结构上通常会以先进先出的队列结构为主,管理和实现起来都相当的简单,一般被认为是盲目的搜索。它是一种以搜索更多的网页为优先的一种贪婪的搜索策略。它会先读取一个文档,保存下文档上的所有链接,然后读取所有这些链接文档,并依次进行下去。这样做的好处是避免了在极短的时间内连续访问这台服务器上的文档的可能性,因为一个文档上的链接通常会有几个跳到别的服务器上,这样做十分有利于避免影响别的服务器工作。这种方法也通常被应用于聚焦爬虫中。其基本思想是认为与初始uRL在一定链接距离内的网页具有主题相关性的概率很大。同时它还可以使尽可能多的服务器有文档被索引服务器收集。它的缺点是很难深入到文档里面,而且随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率变得十分的低下。
深度优先的搜索策略是以先进后出的栈方式来处理URL地址的。网络蜘蛛程序分析一个文档,并取出它的第一个链接所指的文档继续分析,然后如此继续下去。它的优点就是能够较好的深入和发掘站点的结构,而且这种算法十分稳定,效率方面也是有所保障的。它对于搜索部分小的网站是有好处的。它的缺点是十分明显的,不断的短时间的访问同一台服务器的问题将非常的严重,而且它还容易陷入无限循环的文档树,这种算法处理这个问题的能力相当的有限。
将两种算法结合起来也是一种不错的办法,这两种算法互有长短,有些地方也可以形成互补。以一种算法为主,一种算法相辅的办法可以达到取长补短的效果。除了以上的算法之外,最好优先算法也经常被采用,它通过对采集的链接通过一些关于网页质量和效率的算法来排序,优秀者将优先被抓取。但是这个关于质量和效率的算法则又有许多不同的版本,在这里就不作详细的展开了。除去这些常用的算法,还有一些不常被人采用的优秀算法,如Hash算法,遗传算法等。
(二)更新策略
索引中大量的网页是很少变化的,对所有的网页按照同一频率统一更新是完全没有必要的。因而以网页变化的周期为依据,只对那些经常变化的网页做更新操作也是一些小型的搜索引擎常采用的方法。但是只对部分网页做更新可能会漏掉一些重要网页的更新工作,所以网络爬虫也经常采用个体更新的策略。它是以个别网页的变化频率来决定对网页的更新频率,这样一来基本上每个网页都会有一个独立的更新频率。虽然这样做对于网页更新基本做到了变化与更新同步,在逻辑上也最合乎实际情况,但是为每个网页都维护不同的频率,在不同的周期上对少数页面做更新,更新的频率加快了,每次更新的数量却减少了,这对于系统来说是极人的浪费。为了解决这种情况,可以将这些频率按照几个等级分类,把更新快的和更新慢的分成几个集合,然后给每个集合定一个甲均的更新的频率,用这个频率分别对不同的集合统一进行更新可以平衡以上的矛盾获得更好的效果。
转载请注明来自:http://www.zazhifabiao.com/lunwen/dzxx/jsjwl/29223.html