网络蜘蛛即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月,淘宝http://www.taobao.com) 就因为雅虎搜索引擎的网络蜘蛛抓取其数据引起淘宝网服务器的不稳定。网站是否就无法和网络蜘蛛交流呢?其实不然,有多种方法可以让网站和网络蜘蛛进行交 流。一方面让网站管理员了解网络蜘蛛都来自哪儿,做了些什么,另一方面也告诉网络蜘蛛哪些网页不应该抓取,哪些网页应该更新。

  每个网 络蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。网络蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为 User-agent,用于标识此网络蜘蛛的身份。例如Google网络蜘蛛的标识为GoogleBot,Baidu网络蜘蛛的标识为 BaiDuSpider,Yahoo网络蜘蛛的标识为Inktomi Slurp。如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时候过来的,以及读了多少数据等等。如果网站管理员发 现某个蜘蛛有问题,就通过其标识来和其所有者联系。下面是博客中http://www.blogchina.com)2004年5月15日的搜索引擎访问日志:

  网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下,http://www.blogchina.com/robots.txt。 网站管理员可以通过robots.txt来定义哪些目录网络蜘蛛不能访问,或者哪些目录对于某些特定的网络蜘蛛不能访问。例如有些网站的可执行文件目录和 临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。Robots.txt语法很简单,例如如果对目录没有任何限 制,可以用以下两行来描述:
  User-agent: *
  Disallow:

  当然,Robots.txt只是一个协议,如果网络蜘蛛的设计者不遵循这个协议,网站管理员也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝网络蜘蛛对某些网页的抓取。

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

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

  内容提取

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

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

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

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

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

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

  更新周期

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

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

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

转载于:https://www.cnblogs.com/wycg1984/archive/2009/09/15/1567250.html

网络蜘蛛Spider简介相关推荐

  1. 网络蜘蛛Spider 工作原理

    网络蜘蛛 Web spider (或称 Crawler)是一种能够跟踪网络上超链接结构,并不断进行网络资源发现与采集的程序.作为搜索引擎的资源采集部分,Web  Spider的性能将直接影响到整个搜索 ...

  2. 开源网络蜘蛛(Spider)一览

    spider是搜索引擎的必须模块.spider数据的结果直接影响到搜索引擎的评价指标. 第一个spider程序由MIT的Matthew K Gray操刀该程序的目的是为了统计互联网中主机的数目 Spi ...

  3. 搜索引擎(网络蜘蛛及搜索引擎基本原理)

    2006-05-25 网络蜘蛛及搜索引擎基本原理 TAG:搜索相关 搜索引擎的工作原理大致可以分为: 搜集信息:搜索引擎的信息搜集基本都是自动的.搜索引擎利用称为网络蜘蛛(spider)的自动搜索机器 ...

  4. NetSpider 网络蜘蛛1.0 的简介

    NetSpider 网络蜘蛛1.0 的简介 支持多线程下载和 自动断点续传.特别适合对网站上的图象文件进行自动下载,是图片 搜集者的利器.详细的使用说明见: 网络蜘蛛是一个自动搜索HTML页面并下载指 ...

  5. Blue Spider网络蜘蛛软件

    1.Blue Spider网络蜘蛛软件 2.软件简称: 3.版本号:v1.0 4.分类号:67500-9100 5.首次发表地点:西安 6.硬件环境:PC机(内存1G以上) 7.软件环境:Window ...

  6. 搜索引擎/网络蜘蛛程序源代码

    国外开发的相关程序 1.Nutch 官方网站 http://www.nutch.org/ 中文站点 http://www.nutchchina.com/ 最新版本:Nutch 0.7.2 Releas ...

  7. 【转】搜索引擎/网络蜘蛛程序源代码

    国外开发的相关程序 1.Nutch 官方网站 http://www.nutch.org/ 中文站点 http://www.nutchchina.com/ 最新版本:Nutch 0.7.2 Releas ...

  8. 关于网络蜘蛛以及搜索蜘蛛爬行

    当"蜘蛛"程序出现时,现代意义上的搜索引擎才初露端倪.它实际上是一种电脑"机器人"(Computer Robot),电脑"机器人"是指某个能 ...

  9. 重庆SEO优化:网站通过SEO优化会有哪些好处以及【SEO优化】 深度了解蜘蛛spider抓取原理-专业SEO技术教程

    网站通过SEO优化会有哪些好处       SEO优化自产生以来,受到了众多网络推广人员的的欢迎.其实通过SEO进行优化是有很大的好处的.虽然不是很全面但是还是可以提供一定的帮助.接下来就为大家网络就 ...

  10. 网络爬虫(网络蜘蛛,网络机器人)与Web安全

    网络爬虫概述 网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则自动抓取万维网资源的程序或者脚本,已被广泛应用于互联网领域 ...

最新文章

  1. ue4商城素材 Cyberpunk City / Recife Environment 赛博朋克城市场景
  2. C语言中不同类型的循环(Different types of loops in C)
  3. linux系统结构,文件寻址,文件管理编辑,正则表达式
  4. IDEA 快捷键 Android Studio快捷键
  5. Qt的MDI中多个子窗口响应一个菜单事件的优雅实现(动态slot)
  6. Hive Cilent数据操作
  7. jquery easyui 多选下拉框的实现
  8. ADO方法访问数据库的封装接口
  9. selenium 自动化工具
  10. 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第三章 2020-12-25
  11. 10个不错的编程等宽字体
  12. arduino等开源平台
  13. 如何批量修改照片后缀名
  14. 新瑞鹏“狂飙”,宠物医疗是门好生意吗?
  15. 无胁科技-TVD每日漏洞情报-2022-6-29
  16. 一道很水的题(南工校赛决赛第一题)
  17. 月费99,融资过亿,这个老阿里人做出了便利店式健身房
  18. 哔哩哔哩视频3倍速播放的方法
  19. 使用canvas完成帧动画(方向键控制行走的小人)
  20. 一种伪DNA密码学方法

热门文章

  1. 悬镜安全宣布完成数千万元Pre-A轮融资
  2. 安徽省计算机水平模拟考试系统,中学信息技术考试练习系统——安徽省版
  3. shell中的基础命令
  4. eclipse的全局替换快捷键
  5. 【数学建模】2018 A题 高温作业专用服装设计(8.22-8.24训练)
  6. 关于Lazarus下PowerPDF控件的使用
  7. C语言实例第8期:模拟银行账户登陆
  8. 网络安全实验室(基础关)
  9. xml与实体互相转换
  10. 接口测试用例和功能测试用例一样吗?怎么写?