网络爬虫网络爬虫,意指何物
[摘要]伴随“爬虫”软件的问世,现代搜索引擎的概念逐渐成形。这实质上是一种电脑“机器人”(Computer Robot),电脑“机器人”是指某个能以人类难以企及的速度持续执行某项任务的软件程序。鉴于专门用于搜索信息的“机器人”程序如同蜘蛛在网络间穿梭往来,循环往复,不知疲惫。因此,搜索引擎的“机器人”程序被称作“爬虫”程序。
关键词:网络爬虫历史原理优化
目录
何为网络爬虫
网络爬虫的历史
网络爬虫的工作原理
正文
1、何为网络爬虫
----何为网络爬虫呢?网络爬虫即Web Spider,其名称颇具寓意。将互联网比作蜘蛛网,那么Spider便是在网上穿梭的蜘蛛。网络爬虫通过网页的链接地址来搜索网页,从网站某个页面(通常是首页)开始,读取网页内容,找到网页中的其他链接地址,然后通过这些链接地址寻找下一个网页,如此循环往复,直至将这个网站的所有网页都抓取完毕。若将整个互联网视作一个网站,那么网络爬虫便可运用此原理将互联网上所有的网页都抓取下来。
----由此可见,网络爬虫是一个爬行程序,一个抓取网页的程序。
2、网络爬虫的历史
----谈及网络爬虫的起源,我们必须追溯到搜索引擎,何为搜索引擎?搜索引擎的起源与网络爬虫的起源紧密相连。
----搜索引擎是指自动从互联网搜集信息,经过一定整理后,供用户查询的系统。互联网上的信息浩如烟海,且杂乱无章,所有的信息犹如汪洋中的一个个小岛,网页链接是这些小岛之间纵横交错的桥梁,而搜索引擎,则为你绘制一幅清晰的信息地图,供你随时查阅。
----搜索引擎自1990年原型问世以来,至今已成为人们生活中不可或缺的一部分,它经历了无数技术和观念的变革。
----十四年前,1994年1月,第一个既可搜索又可浏览的分类目录EINetGalaxy上线。在其之后,雅虎、Google、百度等搜索引擎相继诞生。但他们并非第一个涉足搜索引擎领域的人。从搜索FTP文件开始,搜索引擎的原型便出现了,当时还未有万维网,人们先用手工方式,后用爬虫程序搜索网页,但随着互联网的不断发展,如何搜集更多网页、更短时间成为当时的难点和重点,成为人们研究的焦点。
----搜索引擎原型问世
----追溯起来,搜索引擎的历史比WorldWideWeb还要悠久。早在Web出现之前,互联网上就已存在许多旨在让人们共享的信息资源。这些资源主要存在于各种允许匿名访问的FTP站点。为了便于人们在分散的FTP资源中找到所需的东西,1990年,加拿大麦吉尔大学(McGillUniversity)的几位大学生开发了一个软件Archie。它是一个可搜索的FTP文件名列表,用户必须输入精确的文件名进行搜索,然后Archie会告诉用户哪一个FTP地址可以下载这个文件。Archie实际上是一个大型的数据库,再加上与这个大型数据库相关联的一套检索方法。虽然Archie还不是搜索引擎,但从其工作原理来看,它是所有搜索引擎的鼻祖。
----当万维网(WorldWideWeb)出现后,人们可以通过html传播网页信息,网络上的信息开始呈指数增长。人们纷纷使用各种方法将网络上的信息搜集起来,进行分类、整理,以便查找。如今人们熟悉的网站雅虎(Yahoo)便是在这种环境下诞生的。当时在斯坦福大学读书的美籍华人杨致远和他的同学痴迷于互联网。他们将互联网上有趣的网页搜集起来,与同学分享。后来,1994年4月,他们共同创办了雅虎。随着访问量和收录链接数的增长,雅虎目录开始支持简单的数据库搜索。但由于雅虎的数据是手工输入的,所以不能真正被归为搜索引擎,实际上只是一个可搜索的目录。
----当“爬虫”程序出现时,现代意义上的搜索引擎才初露端倪。这实际上是一种电脑“机器人”(Computer Robot),电脑“机器人”是指某个能以人类难以企及的速度持续执行某项任务的软件程序。鉴于专门用于搜索信息的“机器人”程序如同蜘蛛在网络间穿梭往来,循环往复,不知疲惫。因此,搜索引擎的“机器人”程序被称作“爬虫”程序。
----这种程序实际上利用html文档之间的链接关系,在Web上逐页爬取(crawl),将这些网页抓取到系统中进行分析,并放入数据库中。第一个开发出“爬虫”程序的是Matthew Gray,他于1993年开发了World Wide Web Wanderer,最初建立时是为了统计互联网上的服务器数量,后来发展到能够捕获网址。现代搜索引擎的思路就来源于Wanderer,后来很多人在此基础上对爬虫程序进行了改进。
----1994年7月20日发布的Lycos网站第一个将“爬虫”程序接入其索引程序中。引入爬虫后,其最大的优势在于其数据量远超其他搜索引擎。自此之后,几乎所有占据主导地位的搜索引擎都依靠爬虫来搜集网页信息。Infoseek是另一个重要的搜索引擎,于1994年年底与公众见面。起初,Infoseek只是一个不起眼的搜索引擎,它沿袭Yahoo!和Lycos的概念,并没有什么独特的创新。但是它友好的用户界面、大量附加服务使其在用户中赢得了口碑。1995年12月,它与Netscape达成战略性协议,使其成为一个强势搜索引擎:当用户点击Netscape浏览器上的搜索按钮时,弹出Infoseek的搜索服务,而此前由Yahoo!提供该服务。1995年12月15日,Alta Vista正式上线。它是第一个支持高级搜索语法的搜索引擎,成功整合了此前人类所有的信息检索技术,解决了包括字根处理、关键词检索、布尔逻辑,以及通过向量空间模型的查询排名等关键问题。正式公开之前,Alta Vista就已经拥有20万访问用户,短短三个星期之内,访问人数由每天30万次增加到200万次。它的成功在于满足了用户三个方面的需求:网上索引范围超过了此前任何一家搜索引擎;短短几秒钟内便可从庞大的数据库中为用户返回搜索结果;Alta Vista小组从一开始就采用了一种模块设计技术,能够跟踪网站的流行趋势,同时不断扩大处理能力。在当时许多搜索引擎中,Alta Vista脱颖而出,成为网络搜索的代名词。Google就是站在这样的巨人的肩膀上颠覆并创造着。“上网即搜索”改变了人们上网方式,就是如今声名显赫的Google。Google并非搜索引擎的发明者,甚至略显滞后,但它却让人们爱上了搜索。
----1994年7月20日发布的Lycos网站首次将“网络爬虫”程序融入其索引程序中。应用“网络爬虫”后,其带来的最大优点就是其数据量远超其他搜索引擎。自此以后,几乎所有占据主导地位的搜索引擎都依赖“网络爬虫”来搜集网页信息。Infoseek是另一个重要的搜索引擎,于1994年年底才与公众见面。起初,Infoseek只是一个默默无闻的搜索引擎,它沿袭Yahoo!和Lycos的理念,并没有什么创新之处。但是它友好的用户界面、丰富的附加服务使它在用户中赢得了好口碑。1995年12月,它与Netscape达成战略性协议,使它成为一个强大的搜索引擎:当用户点击Netscape浏览器上的搜索按钮时,会弹出Infoseek的搜索服务,而此前由Yahoo!提供该服务。1995年12月15日,Alta Vista正式上线。它是第一个支持高级搜索语法的搜索引擎,成功地整合了此前人类所有的信息检索技术,解决了包括字根处理、关键词检索、布尔逻辑,以及通过向量空间模型的查询排名等关键问题。正式公开之前,Alta Vista就已经拥有20万访问用户,在短短三个星期之内,到访人数由每天30万次增加到200万次。它的成功在于满足了用户三个方面的需求:网上索引范围超过了此前任何一家搜索引擎;短短几秒钟内便可从庞大的数据库中为用户返回搜索结果;Alta Vista小组从一开始就采用了一种模块设计技术,能够跟踪网站的流行趋势,同时不断扩大处理能力。在当时许多搜索引擎之中,Alta Vista脱颖而出,成为网络搜索的代名词。Google就是站在这样的巨人的肩膀上颠覆并创造着。“上网即搜索”改变了人们上网方式的,就是现在赫赫有名的Google。Google并不是搜索引擎的发明者,甚至有点滞后,但是它却让人们爱上了搜索。
----1998年9月,在佩奇和布林创建Google之时,业界对互联网搜索功能的理解是:某个关键词在一个文档中出现的频率越高,该文档在搜索结果中的排列位置就要越显著。这就引出了这样一个问题,如果一个页面充斥着某一个关键字的话,那么它将排在很显著的位置,但这样一个页面对于用户来说,却没有任何意义。佩奇和布林发明了“网页级别”(PageRank)技术,来排列搜索结果。即考察该页面在网上被链接的频率和重要性来排列,互联网上指向这一页面的重要网站越多,该页面的位次也就越高。当从网页A链接到网页B时,Google就认为“网页A投了网页B一票”。Google根据网页的得票数评定其重要性。然而,除了考虑网页得票数的纯数量之外,Google还要分析投票的网页,“重要”的网页所投出的票就会有更高的权重,并且有助于提高其他网页的“重要性”。 Google以其复杂而全自动的搜索方法排除了任何人为因素对搜索结果的影响。没人能花钱买到更高的网页级别,从而保证了网页排名的客观公正。除此之外,动态摘要、网页快照、多文档格式支持、地图股票词典寻人等集成搜索也都深得网民的喜爱。其他众多搜索引擎也都紧跟Google,推出这些服务。Fast(Alltheweb)公司发布的搜索引擎AllTheWeb,总部位于挪威,其在海外的风头直逼Google。AllTheWeb的网页搜索支持Flash和pdf搜索,支持多语言搜索,还提供新闻搜索、图像搜索、视频、MP3、和FTP搜索,拥有极其强大的高级搜索功能。而中国的百度更是凭借“更懂中文”而吸引着中国的网络受众,它拥有超过10亿的中文网页数据库,并且,这些网页的数量每天正以千万级的速度在增长。
----搜索引擎越来越成为人们生活中重要的一部分,找资料、查地图、听音乐,只有想不到的,没有搜索不到的。
----搜索引擎的三个基本原理
----1.利用网络爬虫系统程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集回来。
----2.由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息,根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后用这些相关信息建立网页索引数据库。
----3.当用户输入关键词搜索后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。相关度数值排序,相关度越高,排名越靠前。最后,由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。
----说到这里,你可能对搜索引擎和网络爬虫有了一个初步的了解了吧!
3、网络爬虫的工作原理
----对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为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,该文件通常位于网站服务器的根目录下,如:[url][/url]。网站管理员可以通过robots.txt来指定哪些目录网络爬虫不能访问,或者哪些目录对某些特定的网络爬虫不能访问。例如,有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以将这些目录定义为拒绝访问目录。Robots.txt语法简单,例如,如果对目录没有任何限制,可以用以下两行来描述:User-agent:* Disallow:
当然,Robots.txt只是一个协议,如果网络爬虫的设计者不遵守这个协议,网站管理员也无法阻止网络爬虫对某些页面的访问,但一般的网络爬虫都会遵守这些协议,而且网站管理员还可以通过其他方式来拒绝网络爬虫对某些网页的抓取。
网络爬虫在下载网页时,会识别网页的HTML代码,在其代码中,会有META标识。通过这些标识,可以告知网络爬虫本网页是否需要被抓取,还可以告知网络爬虫本网页中的链接是否需要被继续跟踪。例如:表示本网页不需要被抓取,但网页内的链接需要被跟踪。
搜索引擎建立网页索引,处理的对象是文本文件。对于网络爬虫来说,搜集下来的网页包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其他格式等。这些文件搜集下来后,需要将这些文件中的文本信息提取出来。准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一方面对网络爬虫正确跟踪其他链接有一定影响。对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。网络爬虫只需要调用这些插件的接口,就可以轻松提取文档中的文本信息和文件其他相关的信息。但HTML等文档不同,HTML有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,如:、等,提取文本信息时需要把这些标识符都过滤掉。过滤标识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即可。但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加粗显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要程度。同时,对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。例如某个网站有“产品介绍”频道,因为导航条在网站内每个网页都有,若不过滤导航条链接,在搜索“产品介绍”的时候,则网站内每个网页都会搜索到,无疑会带来大量垃圾信息。过滤这些无效链接需要统计大量的网页结构规律,抽取一些共性,统一过滤;对于一些重要而结果特殊的网站,还需要个别处理。这就需要网络爬虫的设计有一定的扩展性。
对于多媒体、图片等文件,一般是通过链接的锚文本(即,链接文本)和相关的文件注释来判断这些文件的内容。例如有一个链接文字为“张曼玉照片”,其链接指向一张bmp格式的图片,那么网络爬虫就知道这张图片的内容是“张曼玉的照片”。这样,在搜索“张曼玉”和“照片”的时候都能让搜索引擎找到这张图片。另外,许多多媒体文件中有文件属性,考虑这些属性也可以更好地了解文件的内容。
----针对多媒体、图像等资料,通常依赖链接的文本描述(即,链接文字)以及相关的文件注释来推断其内容。例如,若一个链接文字标注为“张曼玉图像”,其链接指向一幅bmp格式的图像,那么网络爬虫便能识别该图像的主题为“张曼玉的图像”。如此一来,在搜索“张曼玉”或“图像”时,搜索引擎便能捕捉到该图像。此外,众多多媒体资料具备文件属性,参考这些属性也能更深入地理解文件内涵。
----动态网页构成了网络爬虫所遭遇的一大挑战。动态网页,与静态网页相对,系由程序自动构建的页面,其优势在于能迅速统一调整网页风格,并降低网页在服务器上的存储空间占用,然而,这也给网络爬虫的抓取带来了一定的困扰。随着开发语言的日益增多,动态网页的种类亦日渐丰富,例如asp、jsp、php等。这些类型的网页对于网络爬虫而言,处理起来相对简单。而那些由脚本语言(如VBScript和JavaScript)生成的网页,对网络爬虫来说则较为棘手。若要完美处理这些网页,网络爬虫需配备相应的脚本解释器。对于许多数据存储在数据库的网站,必须通过本网站的数据库查询来获取信息,这给网络爬虫的抓取带来了极大的挑战。对于此类网站,若设计者希望数据能被搜索引擎收录,则需提供一种遍历整个数据库内容的方法。
----网页内容的提取始终是网络爬虫技术中的一个关键环节。整个系统通常以插件的形式运作,通过一个插件管理服务程序,针对不同格式的网页使用相应的插件进行处理。这种方法的优点在于其扩展性良好,每当发现一种新的网页类型,即可将其处理方式制作成插件,并添加至插件管理服务程序中。
----鉴于网站内容频繁变动,网络爬虫亦需定期更新其抓取的网页内容,这要求网络爬虫按既定周期扫描网站,识别哪些页面需要更新,哪些为新页面,哪些为失效的死链接。
----搜索引擎的更新频率对搜索结果的全面性有着显著影响。若更新周期过长,部分新网页将无法被搜索到;若周期过短,技术实现上存在难度,且可能造成带宽、服务器资源的浪费。搜索引擎的网络爬虫并非对所有网站都采用相同的更新周期。对于重要且更新频繁的网站,如某些新闻网站,更新周期较短,可能几小时就更新一次;而对于不那么重要的网站,更新周期则较长,可能一两个月才更新一次。
----通常情况下,网络爬虫在更新网站内容时,无需重新抓取整个网站网页,对于大多数网页,只需判断其属性(尤其是日期),将新获取的属性与上次抓取的属性进行对比,若相同则无需更新。
----现在大家对网络爬虫的工作原理已有初步认识了吧。了解之后,在今后的网站制作中,应考虑蜘蛛的爬行规律,例如制作网站地图就显得尤为重要。若您有更深入的见解,欢迎在此发表,火鸟非常期待与您交流,共同探讨网站制作技巧,力求使网站更符合标准,更贴合用户习惯!