没有合适的资源?快使用搜索试试~ 我知道了~
首页搜索引擎蜘蛛算法与蜘蛛程序构架.doc搜索引擎蜘蛛算法与蜘蛛程序构架.doc
搜索引擎蜘蛛算法与蜘蛛程序构架.doc搜索引擎蜘蛛算法与蜘蛛程序构架.doc

搜索引擎蜘蛛算法与蜘蛛程序构架.doc搜索引擎蜘蛛算法与蜘蛛程序构架.doc搜索引擎蜘蛛算法与蜘蛛程序构架.doc搜索引擎蜘蛛算法与蜘蛛程序构架.doc
资源详情
资源评论
资源推荐

搜索引擎蜘蛛算法与蜘蛛程序构架
一、网络蜘蛛基本原理
网络蜘蛛即 Web Spider,是一个很形象的名字。把互联网比喻成一个蜘
蛛网,那么 Spider 就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地
址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找
到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一
直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当
成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下
来。
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前
公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之
四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有
许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的
问题,如果按照每个页面的平均大小为 20K 计算(包含图片),100 亿网页的
容量是 100×2000G 字节,即使能够存储,下载也存在问题(按照一台机器每
秒下载 20K 计算,需要 340 台机器不停的下载一年时间,才能把所有网页下
载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因
此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价
重要性主要的依据是某个网页的链接深度。
在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先(如
下图所示)。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然
后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最
常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度
优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条
线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛
在设计的时候比较容易。两种策略的区别,下图的说明会更加明确。

由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置
了访问的层数。例如,在上图中,A 为起始网页,属于 0 层,B、C、D、E、F
属于第 1 层,G、H 属于第 2 层,I 属于第 3 层。如果网络蜘蛛设置的访问层数
为 2 的话,网页 I 是不会被访问到的。这也让有些网站上一部分网页能够在搜
索引擎上搜索到,另外一部分不能被搜索到。对于网站设计者来说,扁平化的
网站结构设计有助于搜索引擎抓取其更多的网页。
网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,
有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络
蜘蛛不去抓取,但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们
的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应
的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从
而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的
权限验证。
二、网站与网络蜘蛛
网络蜘蛛需要抓取网页,不同于一般的访问,如果控制不好,则会引起网
站服务器负担过重。每个网络蜘蛛都有自己的名字,在抓取网页的时候,都会
向网站标明自己的身份。网络蜘蛛在抓取网页的时候会发送一个请求,这个请
求中就有一个字段为 User-agent,用于标识此网络蜘蛛的身份。例如
Google 网络蜘蛛的标识为 GoogleBot,Baidu 网络蜘蛛的标识为
BaiDuSpider,Yahoo 网络蜘蛛的标识为 Inktomi Slurp。如果在网站上有访
问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时
候过来的,以及读了多少数据等等。如果网站管理员发现某个蜘蛛有问题,就
通过其标识来和其所有者联系。

网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件 Robots.txt,
这个文件一般放在网站服务器的根目录下,网站管理员可以通过 robots.txt 来
定义哪些目录网络蜘蛛不能访问,或者哪些目录对于某些特定的网络蜘蛛不能
访问。例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索
到,那么网站管理员就可以把这些目录定义为拒绝访问目录。Robots.txt 语法
很简单,例如如果对目录没有任何限制,可以用以下两行来描述:
User-agent: *
Disallow:
当然,Robots.txt 只是一个协议,如果网络蜘蛛的设计者不遵循这个协
议,网站管理员也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛
都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝网络蜘蛛对某
些网页的抓取。
网络蜘蛛在下载网页的时候,会去识别网页的 HTML 代码,在其代码的
部分,会有 META 标识。通过这些标识,可以告诉网络蜘蛛本网页是否需要被
抓取,还可以告诉网络蜘蛛本网页中的链接是否需要被继续跟踪。例如: 表示
本网页不需要被抓取,但是网页内的链接需要被跟踪。
关于 Robots.txt 的语法和 META Tag 语法,前面的一篇“禁止搜索引擎
收录的方法”一文中做了详细的介绍。
现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为
这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更
全面被抓取到,网站管理员可以建立一个网站地图,即 Site Map。许多网络蜘
蛛会把 sitemap.htm 文件作为一个网站网页爬取的入口,网站管理员可以把
网站内部所有网页的链接放在这个文件里面,那么网络蜘蛛可以很方便的把整
个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。
(Google 专门为网站管理员提供了 XML 的 Sitemap)
三、网络蜘蛛对内容提取
搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓
取下来网页包括各种格式,包括 html、图片、doc、pdf、多媒体、动态网页
及其它格式等。这些文件抓取下来后,需要把这些文件中的文本信息提取出来。
准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一
方面对于网络蜘蛛正确跟踪其它链接有一定影响。
对于 doc、pdf 等文档,这种由专业厂商提供的软件生成的文档,厂商都
会提供相应的文本提取接口。网络蜘蛛只需要调用这些插件的接口,就可以轻
松的提取文档中的文本信息和文件其它相关的信息。
HTML 等文档不一样,HTML 有一套自己的语法,通过不同的命令标识符
来表示不同的字体、颜色、位置等版式,如:、、等,提取文本信息时需要把
这些标识符都过滤掉。过滤标识符并非难事,因为这些标识符都有一定的规则,
剩余10页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1