展会信息港展会大全

搜索引擎算法与网络蜘蛛原理大揭密
来源:互联网   发布日期:2011-09-27 12:11:16   浏览:4690次  

导读:网络蜘蛛(Web Spider),是通过网页的链接地址来寻找网页,从网站的某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这...

网络蜘蛛(Web Spider),是通过网页的链接地址来寻找网页,从网站的某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。

  对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题。因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性的主要依据之一是某个网页的链接深度。

  在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接的跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这种方法的优点是网络蜘蛛设计起来比较容易。

  由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。如果网络蜘蛛设置的访问层数为2的话,那么第3层的网页是不会被访问到的。这也是有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到的原因。对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取到我们更多的网页。

  网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问的。这样就需要给网络蜘蛛提供相应的用户名和密码,网络蜘蛛可以通过所给的权限对这些网页进行抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要提供相应的权限验证。

  每个网络蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。网络蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为User-Agent,用于标识此网络蜘蛛的身份。例如Google网络蜘蛛的标识为GoogleBot,Baidu网络蜘蛛的标识为BaiduSpider,Yahoo网络蜘蛛的标识为InktomiSlurp。如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛来过,什么时候来的,以及读了多少数据等。

  网络蜘蛛在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META标识。我们可以通过这些标识告诉网络蜘蛛本网页是否需要被抓取,本网页中的链接是否需要被继续跟踪等。

  一般网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更多的访问者通过搜索引擎找到此网站。为了让本网站的网页能更全面的被抓取到,可以建立一个网站地图(Site Map)。许多网络蜘蛛会把sitemap.htm文件作为一个网站网页爬取的入口,我们可以把网站内所有网页的链接放在这个文件里,那么网络蜘蛛就可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。

  搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓取下来的网页包括各种格式,如html、图片、doc、pdf、多媒体、动态网页及其它格式等。这些文件被抓取下来后,需要把其中的文本信息提取出来。准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一方面对于网络蜘蛛正确跟踪其它链接也有一定影响。

  对于doc、pdf等由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。网络蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息和文件其它相关的信息。

  html文档不一样,它有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,提取文本信息时需要把这些标识符都过滤掉。过滤标识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即可。但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加粗显示、是否是页面关键词等,这些信息有助于计算词在网页中的重要程度。同时,对于html网页来说,除了标题和正文以外,会有许多广告链接及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。例如某个网站有“产品介绍”频道,因为导航条在网站内每个网页都有,若不过滤导航条链接,在搜索“产品介绍”的时候,则网站内每个网页都会被搜索到,这无疑会带来大量垃圾信息。过滤这些无效链接需要统计大量的网页结构规律,抽取一些共性,统一过滤;对于一些重要而结果特殊的网站,还需要个别处理。这就需要网络蜘蛛的设计要有一定的扩展性。

  对于多媒体、图片等文件,一般是通过链接的锚文本和相关的文件注释来判断这些文件的内容。例如有一个链接文字为“张曼玉照片”,其链接指向一张jpg格式的图片,那么网络蜘蛛就知道这张图片的内容是“张曼玉的照片”。这样,在搜索“张曼玉”和“照片”的时候都能让搜索引擎找到这张图片。另外,许多多媒体文件中有文件属性,通过这些属性也可以更好的了解文件的内容。

  动态网页一直是网络蜘蛛面临的难题。所谓动态网页,是相对于静态网页而言的,是由程序自动生成的页面,这样的好处是可以快速统一更改网页风格,也可以减少网页所占服务器的空间,但同时却给网络蜘蛛的抓取带来一些麻烦。由于开发语言的不断增多,动态网页的类型也越来越多,如asp、jsp、php等。这些类型的网页对于网络蜘蛛来说,可能还稍微容易一些。网络蜘蛛比较难于处理的是一些脚本语言(如vbscript和javascript)生成的网页,如果要完善的处理好这些网页,网络蜘蛛需要有自己的脚本解释程序。对于许多数据是放在数据库的网站,需要通过本网站的数据库搜索才能获得信息,这些给网络蜘蛛的抓取带来很大的困难。对于这类网站,如果我们希望这些数据能被搜索引擎搜索到,则需要提供一种可以遍历整个数据库内容的方法。

  对于网页内容的提取,一直是网络蜘蛛的工项重要技术。整个系统一般采用插件的形式,通过一个插件管理程序,遇到不同格式的网页采用不同的插件处理。这种方式的好处在于扩充性好,以后每发现一种新的类型,就可以把其处理方式做成一个插件补充到插件管理程序中。

  由于网站的内容经常变化,因此网络蜘蛛也需要不断的更新其抓取网页的内容,这就需要网络蜘蛛按照一定的周期去扫描网站,查看哪些页面是需要更新的,哪些页面是新增页面,哪些页面是已经过期的死链接。

  搜索引擎的更新周期对搜索的查全率有很大影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到;周期太短,技术实现上会有一定难度,而且会对带宽、服务器的资源都有很大消耗。搜索引擎的网络蜘蛛并不是对所有的网站都采用同一个周期进行更新,对于一些重要的更新量大的网站,更新的周期短,如有些新闻网站,几分钟就更新一次;相反对于一些不重要的网站,更新的周期就长,可能几个月才更新一次。

  一般来说,网络蜘蛛在更新网站内容的时候,不用把网站网页重新抓取一遍,对于大部分的网页,只需要判断网页的属性(主要是日期),把得到的属性和上次抓取的属性相比较,如果一样则不用更新。

  网络蜘蛛在搜索引擎中占有重要位置,对搜索引擎的查全、查准都有影响,决定了搜索引擎数据容量的大小,而且网络蜘蛛的好坏直接影响搜索结果页中的死链接(即链接所指向的网页已经不存在)的个数。目前如何发现更多的网页、如何正确提取网页内容、如果下载动态网页、如何提供抓取速度、如何识别网站里内容相同的网页等都是网络蜘蛛需要进一步改进的问题。

  随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度及日流量来选择是否要投放广告等;作为网民,会根据搜索引擎的性能和技术来选择自己喜欢的查找资料;作为学者,会把有代表性的搜索引擎作为研究对象。

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港