2008年9月25日星期四

网络蜘蛛基本原理

网络蜘蛛基本原理
网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量是100 2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。
在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先。
广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。两种策略的区别,下图的说明会更加明确。
由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于第2层,I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取(下小节会介绍),但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全**的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。
网站与网络蜘蛛
网络蜘蛛需要抓取网页,不同于一般的访问,如果控制不好,则会引起网站服务器负担过重。今年4月,淘宝)2004年5月15日的搜索引擎访问日志:
网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下,。网站管理员可以通过robots.txt来定义哪些目录网络蜘蛛不能访问,或者哪些目录对于某些特定的网络蜘蛛不能访问。例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。Robots.txt语法很简单,例如如果对目录没有任何限制,可以用以下两行来描述:User-agent: *Disallow:当然,Robots.txt只是一个协议,如果网络蜘蛛的设计者不遵循这个协议,网站管理员也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝网络蜘蛛对某些网页的抓取。
网络蜘蛛在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META标识。通过这些标识,可以告诉网络蜘蛛本网页是否需要被抓取,还可以告诉网络蜘蛛本网页中的链接是否需要被继续跟踪。例如:表示本网页不需要被抓取,但是网页内的链接需要被跟踪。
关于Robots.txt的语法和META Tag语法,有兴趣的读者查看文献[4]
现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面被抓取到,网站管理员可以建立一个网站地图,即Site Map。许多网络蜘蛛会把sitemap.htm文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么网络蜘蛛可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。
内容提取
搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓取下来网页包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其它格式等。这些文件抓取下来后,需要把这些文件中的文本信息提取出来。准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一方面对于网络蜘蛛正确跟踪其它链接有一定影响。
对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。网络蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息和文件其它相关的信息。
HTML等文档不一样,HTML有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,如:、、等,提取文本信息时需要把这些标识符都过滤掉。过滤标识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即可。但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加粗显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要程度。同时,对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。例如某个网站有“产品介绍”频道,因为导航条在网站内每个网页都有,若不过滤导航条链接,在搜索“产品介绍”的时候,则网站内每个网页都会搜索到,无疑会带来大量垃圾信息。过滤这些无效链接需要统计大量的网页结构规律,抽取一些共性,统一过滤;对于一些重要而结果特殊的网站,还需要个别处理。这就需要网络蜘蛛的设计有一定的扩展性。
对于多媒体、图片等文件,一般是通过链接的锚文本(即,链接文本)和相关的文件注释来判断这些文件的内容。例如有一个链接文字为“张曼玉照片”,其链接指向一张bmp格式的图片,那么网络蜘蛛就知道这张图片的内容是“张曼玉的照片”。这样,在搜索“张曼玉”和“照片”的时候都能让搜索引擎找到这张图片。另外,许多多媒体文件中有文件属性,考虑这些属性也可以更好的了解文件的内容。
动态网页一直是网络蜘蛛面临的难题。所谓动态网页,是相对于静态网页而言,是由程序自动生成的页面,这样的好处是可以快速统一更改网页风格,也可以减少网页所占服务器的空间,但同样给网络蜘蛛的抓取带来一些麻烦。由于开发语言不断的增多,动态网页的类型也越来越多,如:asp、jsp、php等。这些类型的网页对于网络蜘蛛来说,可能还稍微容易一些。网络蜘蛛比较难于处理的是一些脚本语言(如VBScript和javascript)生成的网页,如果要完善的处理好这些网页,网络蜘蛛需要有自己的脚本解释程序。对于许多数据是放在数据库的网站,需要通过本网站的数据库搜索才能获得信息,这些给网络蜘蛛的抓取带来很大的困难。对于这类网站,如果网站设计者希望这些数据能被搜索引擎搜索,则需要提供一种可以遍历整个数据库内容的方法。
对于网页内容的提取,一直是网络蜘蛛中重要的技术。整个系统一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件处理。这种方式的好处在于扩充性好,以后每发现一种新的类型,就可以把其处理方式做成一个插件补充到插件管理服务程序之中。
更新周期
由于网站的内容经常在变化,因此网络蜘蛛也需不断的更新其抓取网页的内容,这就需要网络蜘蛛按照一定的周期去扫描网站,查看哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
搜索引擎的更新周期对搜索引擎搜索的查全率有很大影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到;周期过短,技术实现会有一定难度,而且会对带宽、服务器的资源都有浪费。搜索引擎的网络蜘蛛并不是所有的网站都采用同一个周期进行更新,对于一些重要的更新量大的网站,更新的周期短,如有些新闻网站,几个小时就更新一次;相反对于一些不重要的网站,更新的周期就长,可能一两个月才更新一次。
一般来说,网络蜘蛛在更新网站内容的时候,不用把网站网页重新抓取一遍,对于大部分的网页,只需要判断网页的属性(主要是日期),把得到的属性和上次抓取的属性相比较,如果一样则不用更新。

牛档的在线搜索引擎

小流星一直想向大家推荐这个名为牛档的在线搜索引擎。对他的评价只能说很好很强悍。相比较Google等学术搜索,牛档搜索的最大优势是适合国人的搜索习惯,Word/Excel/Powerpoint/PDF/RTF等格式的文档均能搜索,并且提供直接下载。

blogger 发布工具

今天 Google Docs 打开又很慢。这迫使我想要找个新的发布 blogger 的工具。Google 了一下,看见” 10款免费Blog客户端发布软件” 里介绍的 Zoundry 。试用了一下,感觉很不错!
Google Docs 和 Blogger.Com 虽然同是 Google 的产品,但是 Google Docs 对 Blogger.Com 的支持却还没有其它软件好。比如 Google Docs 不支持发布文章的标题(荒谬),也不支持对文章的分类。而 Zoundry 就完全支持文章标题、文章分类等基本且常用的功能。
Zoundry 还能同时管理多个不同服务商的博客。当然,它也能同时管理一个 Blogger.Com 帐号下的多个博客。
Zoundry 不仅能发布新的文章,还能修改以前的文章。
在修改文章前,Zoundry 会将服务器上的原有文章下载到本地。这样相当于在本地作了一个数据备份,让博客更安全。
还有更多更好的功能慢慢摸索。
还有,Zoundry 是免费的,且有简体中文版。
Zoundry 下载地址:http://www.zoundry.com/download.html

哈尔滨工业大学 sf

SF超高速FTP搜索引擎是全国新一代超高速FTP全站搜索引擎之一,索引速度远高于同类产品,在两千万候选项中查询两百万结果只在毫秒量级即可完成。并且支持多种排序方式、站点快照等贴近用户使用的功能。
  本搜索引擎由哈尔滨工业大学学生利用业余时间开发,采用GPL开源协议全球公开发行,面向全国提供FTP站点文件检索服务,拥有相当的声誉及客流量,现在定位为成为全亚洲头号FTP搜索引擎,还在不断的发展与完善中。

专业文档搜索引擎

王路文档,一个专业文档搜索引擎。与其说是搜索引擎,不如说是一个下载站,从文件链接就可以看得出来,搜索结果都是在wanglu.net这个网站目录里的。虽然没有找到介绍的页面,不清楚网站制作者的信息,不过站内的信息量还是很大的,值得想要搜索专业技术文档的朋友尝试。该站支持的文档格式有Word、幻灯片、电子表格、PDF文档、RTF、LRC歌词等,专业目录有建筑科学、环境科学、电子技术、化学工业、冶金矿业、水利工程、机械仪表、交通运输、电力技术。 另外,真正的文档搜索引擎,推荐哈尔滨工业大学的SF和北大的天网,过两天再和大家介绍。
本文来源于清溪长河-建筑杂谈 http://www.10kn.com/ , 原文地址:http://www.10kn.com/2008/05/wanglu.htm

王路文档的优化

文档搜索,可以很方便的在互联网上找到自己想要,而进行网页搜索不到的文章、资料、数据等。最常用到的文档就是百度文档 http://file.baidu.com/,google的高级搜索,也就是文件格式命令filetype,例如搜索破碎机的doc的话,就在搜索框中输入“破碎机 filetype:doc”。很长一段时间除了其他提供文档下载的网站以外,像样的文档搜索的网站就没有了。前不久出来了一个牛档,www.niudown.com 使人眼前一亮,这是一个不错的文档搜索,很方便大家使用。但是在使用过程中发现了也多不方便的地方,这样的网站还可以在做的更好些,这便有了王路文档搜索。下面对王路文档搜索进行一个简单的介绍:1.王路文档搜索也是一个专门用于搜索Word文档、幻灯片 、电子表格 、PDF文档 、RTF等文档的搜索引擎,还增加了LRC歌词搜索,使用相当的方便。提供文档的预览,下载功能。2.王路文档搜索对搜索结果进行了加工,提取出了文档中的内容,生成静态的html文档,一则方便不愿意下载的人进行访问,二则作为源文件的一个映像进行保存,三是方便复制粘贴型的人来访问。3.提供相关搜索和最近搜索功能。4.提供了标签项。还有其他的,都是技术方面的东西,比如更新了引擎,修改站内连接修改。这些都不说了,说说这个网站简单的seo操作吧。文档搜索,可以从搜索引擎上抓取海量的文档信息,这些信息是独立为网页格式之外的文字内容,与网页内容的重复性较低,是较新的内容。王路文档搜索就是考虑到这个方面,大胆地将文档全部提取出来,全部生成html静态网页,前几日我进行的一个长文件名收录试验便是为了这个网站的优化工作做的一个小测试,实验结果和实践情况并不相符。当时做的试验的长文件名网页并没有收录,但是google已经开始收录www.wanglu.net 的长文件名网页了。由于是搜素的特性,如果不给搜索引擎一个关键词的话,搜索引擎是不会根据这些关键词爬到具体的页面的, 这就要提供一个关键词目录进行引导。当然,要控制搜索引擎抓取速度的,就要采用逐渐增加目录的方式。结果还是很理想的,现在给他google可以爬5000多个网页。网页采用的类似于扁平的结构,爬虫的路径是首页->关键词目录页->搜素结果列表页->静态网页,这是一个单方向的,这些静态网页将会处在统一个级别的权重上,就要考虑站内的连接,关键词的传递。这就想到的标签的功能,把文档的标题根据分词的原则制作成一个一个的标签,同样的标签将指定同一个静态网页,比如“破碎机”这个词,搜索结果中标题出现“破碎机”的文档内都含有“破碎机”这个标签,这些标签都将指向搜索结果排名第一的这个静态网页,从而增加这个网页在这个词上的权重。从实际结果中看到,采用的分词的词库中缺少行业词,标签准确性不高。再说域名,域名是05年注册的,一直没有放过什么东西,域名较早的被百度google、yahoo进行了收录。一直没有放过什么实质性的内容,百度直到前天才更新了首页内容,google收录比较理想。王路文档搜索现在还处在收录的观察期,还没有进行外部连接的操作。