转:中文搜索引擎技术揭密:网络蜘蛛之一

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

而作为一个网站的经营者,其更关心的或许是如何通过网络载体让更多的网民知道自己的网站,进而获得更高的流量和知名度。这其中,搜索引擎已经成了一个重要的且是免费的宣传途径。一方面,搜索引擎会主动出击,寻找网络上的各种网页数据,并在后台按相关条件进行索引;另一方面,各大网站为了能让自己的内容更多的通过搜索引擎向网民展示,都开始对网站结构进行重大调整,其中包括扁平化结构设计、动态(网页)转静态(网页)、Sitemap等。



这些看来不经意的举动都让我们切身感受到搜索引擎对我们网络使用方式的改变起到了重要作用。并且,正因为搜索引擎的兴起以及社会各界对其重视程度日渐高涨,还由此创造了一个全新的职位——SEO。实际上,搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。



搜索引擎一直专注于提升用户的体验度,其用户体验度则反映在三个方面: 准、全、快 。用专业术语讲是:查准率、查全率和搜索速度(即搜索耗时)。其中最易达到的是搜索速度,因为对于搜索耗时在1秒以下的系统来说,访问者很难辨别其快慢了,更何况还有网络速度的影响。因此,对搜索引擎的评价就集中在了前两者:准、全。中文搜索引擎的“准”,需要保证搜索的前几十条结果都和搜索词十分相关,这需由“ 分词技术 ”和“ 排序技术 ”来决定;中文搜索引擎的“全”则需保证不遗漏某些重要的结果,而且能找到最新的网页,这需要搜索引擎有一个强大的网页收集器,一般称为“网络蜘蛛”,也有叫“网页机器人”。




研究搜索引擎技术的文章不少,但大部分讨论的是如何评价网页的重要性,对于网络蜘蛛研究的文章不多。网络蜘蛛技术并不是一项十分高深的技术,但要做一个强大的网络蜘蛛,却非易事。在目前磁盘容量已经不是瓶颈的时候,搜索引擎一直在扩大自己的网页数量。最大的搜索引擎Google( http://www.google.com )从2002年的10亿网页增加到现在近40亿网页;最近雅虎搜索引擎( http://search.yahoo.com/ )号称收录了45亿个网页;国内的中文搜索引擎百度( http://www.baidu.com )的中文页面从两年前的七千万页增加到了现在的两亿多。据估计,整个互联网的网页数达到100多亿,而且每年还在快速增长。因此一个优秀的搜索引擎,需要不断的优化网络蜘蛛的算法,提升其性能。



或许有些人有疑问,为何搜索引擎需要用网络蜘蛛抓取网站所有的网页,为什么不在搜索者输入关键词后只把那些需要的结果抓取过来?这实际上是效率问题,搜索引擎不可能在搜索时实时去检查每个网页,而是需要把网页先抓取下来,按照关键词建立好索引,每次搜索的结果都会直接从搜索引擎建立好索引的数据库中查找,然后把结果返回给访问者。 关于搜索引擎系统架构方面的知识, 本文主要介绍网络蜘蛛的相关技术。



网络蜘蛛基本原理


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



对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量是100×2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。



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







由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于第2层,I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。 对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。



网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取(下小节会介绍),但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。

...全文
2695 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanxv 2006-12-31
  • 打赏
  • 举报
回复
毕业设计,学习中
chanfengsr 2006-12-14
  • 打赏
  • 举报
回复
好贴,学到不少
wndrfll 2006-12-02
  • 打赏
  • 举报
回复
是啊,都是些业余的东西!
HappyQQ 2006-11-25
  • 打赏
  • 举报
回复
学习
goodzzp 2006-11-08
  • 打赏
  • 举报
回复
业余的东西了。

现在出现的问题已经复杂多了。

md, 国内怎么就没有人写一点真实的技术出来呢???

郁闷。。
weiweizeng 2006-10-30
  • 打赏
  • 举报
回复
学习。。
iwaiwai 2006-10-26
  • 打赏
  • 举报
回复
http://www.kreny.com/pagerank_cn.htm
Google 的秘密- PageRank 彻底解说 中文版
suguoyuan 2006-09-09
  • 打赏
  • 举报
回复
不错
hanye_911 2006-08-30
  • 打赏
  • 举报
回复
受用谢了
daisylh 2006-08-26
  • 打赏
  • 举报
回复
學習~~
阿牛138588 2006-08-16
  • 打赏
  • 举报
回复
mark
huaqglxy2004 2006-08-15
  • 打赏
  • 举报
回复
顶,学习
zoezinsser 2006-08-12
  • 打赏
  • 举报
回复
mark
CCTV_1 2006-08-11
  • 打赏
  • 举报
回复
感觉搜索引擎最重要的好像是怎样提取有用的信息,而不是怎样抓去网页啊
楼主牛人啊
xiaoyaowp 2006-08-08
  • 打赏
  • 举报
回复
学习 顶
Aallonlin 2006-08-07
  • 打赏
  • 举报
回复
学习
hfgang 2006-07-26
  • 打赏
  • 举报
回复
如果达到这个级别,就必须要考虑分布式的应用方式了,基于域名去设计这个分布式的应用模式,并且,下载的连接也最好不要放在数据库里进行管理,虽然用数据库管理会比较方便,但是在效率会受到很大的制约,建议自己写btree进行管理。

_________________________________________________
ok, 现在数据库里收集了4000000000个链接, 每次一个蜘蛛搜索一个链接前都要去数据库中搜一下,且不说蜘蛛数量众多,就是只有一个蜘蛛在操作,可能也会给数据库服务器造成严重的负担吧, 蜘蛛的工作效率不会因此受到影响么...
Mark2Win 2006-07-25
  • 打赏
  • 举报
回复
都是效率问题

如果蜘蛛每次搜之前要查询数据库则影响DBServer,造成蜘蛛等待
如果蜘蛛每次搜的时候不查询数据库, 入库时再判断重复与否也要影响DBServer, 但是蜘蛛不用等待

也许数据库集群大, 查询效率就不是瓶颈了吧..

这下问题还是转移到钱上面来了....
积木 2006-07-25
  • 打赏
  • 举报
回复
:Mark2Win(马客)

OK ,这方面又是另一个问题,那就是索引和hash的问题啊。
yuntianhe 2006-07-25
  • 打赏
  • 举报
回复
呵呵,说得好
加载更多回复(12)

2,760

社区成员

发帖
与我相关
我的任务
社区描述
搜索引擎的服务器通过网络搜索软件或网络登录等方式,将Internet上大量网站的页面信息收集到本地,经过加工处理建立信息数据库和索引数据库。
社区管理员
  • 搜索引擎技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧