基于“网络蜘蛛原理”的搜索引擎技术剖析
2007-11-19金益
金 益
摘要:主要介绍网络蜘蛛的基本原理及相关技术。
关键词:网络蜘蛛搜索引擎
链接深度动态网页
中图分类号TP393.09
文献标识码A文章编号:1002-2422(2007)05-0006-02
中文搜索引擎的查全率需保证不遗漏某些重要的结果,而且能找到最新的网页,这需要搜索引擎有一个强大的网页收集器(称为“网络蜘蛛”),一个优秀的搜索引擎,需要不断的优化网络蜘蛛的算法,提升其性能。主要介绍网络蜘蛛的基本原理及相关技术。
1网络蜘蛛基本原理
网络蜘蛛即Web Spider,是通过网页的链接地址来寻找网页,从网站的某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样循环下去,直到把这个网站所有的网页都抓取完为止。
在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。深度优先是指网络蜘蛛会从起始页开始,按照每个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。两种策略的区别见图1。
网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。网站的所有者可以通过协议让网络蜘蛛不去抓取。一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索,而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。
2内容提取
搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓取的网页格式包括html、图片、doc、pdf、多媒体、动态网页及其它格式等。这些文件抓取下来后,需要把这些文件中的文本信息提取出来。准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用;另一方面对于网络蜘蛛正确跟踪其它链接有一定影响。
(1)doe、pdf等由专业厂商提供的软件生成的文档,会提供相应的文本提取接口。网络蜘蛛只需调用这些插件的接口,就可提取文档中的文本信息和文件其它相关的信息。
(2)HTML等文档不一样,HTML有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,在提取文本信息时需要把这些标识符都过滤掉。在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加租显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要程度。同时,对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤掉这些无用的链接。过滤这些无效链接需要统计大量的网页结构规律。抽取一些共性,统一过滤,对于一些重要而结果特殊的网站,还需要个别处理。这就需要网络蜘蛛的设计有一定的扩展性。
(3)对于多媒体、图片等文件,一般是通过链接的锚文本和相关的文件注释来判断这些文件的内容,例如有一个链接文字为“北京大学的照片”,其链接指向一张bmp格式的图片,那么网络蜘蛛就知道这张图片的内容是“北京大学的照片”,这样,在搜索“北京大学”和“照片”的时候都能让搜索引擎找到这张图片。另外,许多多媒体文件中有文件属性,考虑这些属性也可以更好的了解文件的内容。
(4)动态网页一直是网络蜘蛛面临的难题。开发语言的不断增多,动态网页的类型也越来越多,网络蜘蛛比较难于处理的是一些脚本语言(如VBScdpt和JavaScript)生成的网页,如果要完善的处理好这些网页,网络蜘蛛需要有自己的脚本解释程序。对于许多数据是放在数据库的网站,需要通过本网站的数据库搜索才能获得信息,这给网络蜘蛛的抓取带来很大的困难,如果网站设计者希望这些数据能被搜索引擎搜索,则需要提供一种可以遍历整个数据库内容的方法。
网页内容的提取,一直是网络蜘蛛中重要的技术。整个系统一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件处理。这种方式的好处在于扩充性好,每发现一种新的类型,就可以把处理方式做成一个插件补充到插件管理服务程序之中。
3更新周期
由于网站的内容经常在变化,网络蜘蛛也需不断的更新其抓取网页的内容,因此需要网络蜘蛛按照一定的周期去扫描网站,查看哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
搜索引擎的更新周期对搜索的查全率有很大影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到;周期过短,技术实现会有一定难度,而且会对带宽、服务器的资源都有浪费。搜索引擎的网络蜘蛛不是所有的网站都采用同一个周期进行更新,一些重要的更新量大的网站,更新的周期短,如有些新闻网站,几个小时就更新一次,相反一些不重要的网站,更新的周期就长,可能一两个月才更新一次。
一般来说,网络蜘蛛在更新网站内容的时候,不用把网站网页重新抓取一遍,对于大部分的网页,只需要判断网页的属性(主要是日期),把得到的属性和上次抓取的属性相比较,如果一样就不用更新。
4结束语
网络蜘蛛可以算得上是为Internet而开发的最有用处的工具之一。要从各不相同的站点中获取信息,网络蜘蛛技术是一个很好的技术手段。目前如何发现更多的网页,如何正确提取网页内容,如何下载动态网页,如何提供抓取速度,如何识别网站内容相同的网页等都是网络蜘蛛需要进一步改进的问题。