18.2 什么是机器人排除标准

《搜索引擎优化宝典(第2版)》第18章机器人、蜘蛛和爬虫,本章主要的内容有:什么是机器人、爬虫和蜘蛛;什么是机器人排除标准; Robots 元标签;用XML 网站地图使网页被收录。本节为大家介绍什么是机器人排除标准虫。

作者:马煜 译来源:清华大学出版社|2010-07-19 21:40

开发者大赛路演 | 12月16日,技术创新,北京不见不散

18.2 什么是机器人排除标准

根据前面的介绍,确实有必要对爬虫的行为做出一定的限制。这种限制称为机器人排除标准(robot exclusion standard)或是机器人排除协议(robot exclusion protocol),或是robot.txt。

这些东西的本质就是robot.txt 文件。这个文本文件应该放在网站的根目录下,其中就说明了网站中的哪些网页是爬虫不能索引的。

需要使用特定的语法才能使爬虫理解文件中的含义。这个文本文件的基本形式如下:

  1. User-agent: *
  2. Disallow: /

这两个部分是必需的。第一个部分,User-agent:,是告诉爬虫所针对的是哪个用户代理(user agent),实际上就是爬虫。星号(*)表示所有的爬虫,也可以指定一个或若干个爬虫。

第二个部分,Disallow:,是告诉爬虫哪些地方是不能访问的。斜杠(/)表示“所有目录”。所以在前面的这个例子中,这个robot.txt 文件的意思就是“任何爬虫都要忽略所有的目录”。

在编写robot.txt 文件时,要记得在User-agent 和Disallow 指令后面加上冒号(:)。冒号后面的信息就是要求爬虫注意的信息。

在实际情况下,很少会要求爬虫忽略所有的目录。可以要求爬虫忽略网站总的临时目录,robot.txt 的内容如下:

  1. User-agent: *
  2. Disallow: /tmp/

也可以进一步要求爬虫忽略若干个目录:

  1. User-agent: *
  2. Disallow: /tmp/
  3. Disallow: /private/
  4. Disallow: /links/listing.html

这段代码就是告诉爬虫忽略临时目录、私人目录以及内容是链接的网页——爬虫也就无法跟踪网页中的链接。

要注意,爬虫对robot.txt 是从上至下读取的,一旦发现合适的规定就会停止读取,并开始根据规则访问网站。所以,如果在robot.txt 文件中对多个爬虫制定访问规则,就一定要小心。

下面的用法就是错误的:

  1. User-agent: *
  2. Disallow: /tmp/
  3. User-agent: CrawlerName
  4. Disallow: /tmp/
  5. Disallow: /links/listing.html

这段代码首先是告诉所有的爬虫要忽略临时目录。因此,所有的爬虫在读取这个文件时都会忽略临时目录。但这段代码接着又不允许某个特定的爬虫(用CrawlerName 表示)访问临时目录和listing 网页中的链接。但问题是,这个特定的爬虫根本就不会接收到这条指令,因为它已经根据第一条命令忽略了临时目录,开始读取网站的其他部分。

如果要对不同的爬虫发出不同的命令,应该先写针对特定爬虫的命令。将针对所有爬虫的命令放在最后面。将前一个例子修改正确后,应该如下所示:

  1. User-agent: CrawlerName
  2. Disallow: /tmp/
  3. Disallow: /links/listing.html
  4. User-agent: *
  5. Disallow: /tmp/

上面这种技巧可以很方便地使爬虫忽略网站中的某个网页或链接,而无需使其忽略整个网站或整个目录,也无需在每个网页中逐个地加入元标签。

不同的搜索引擎爬虫有不同的名字,在Web 服务器的记录中应该能看到这些名字。下面列出了一些常见的搜索引擎爬虫的名称:

Google:Googlebot

MSN:MSNbot

Yahoo! Web Search:Yahoo SLURP 或简称SLURP

Ask:Teoma

AltaVista:Scooter

LookSmart:MantraAgent

WebCrawler:WebCrawler

SearchHippo:Fluffy the Spider

这里只是列出了很少的一部分搜索引擎爬虫。在Web Robots Pages(www.robotstxt.org)

上可以找到完整列表,以及机器人排除标准(Robot Exclusion Standard)文档。应该花点时间阅读该文档。这份文档不长,通读一下有助于理解爬虫与网站之间的交互方式。这方面的深入理解也有助于更好地控制爬虫对网站的访问。

有必要知道爬虫属于哪个搜索引擎,因为还有一些恶意的爬虫(spambot)也会检索网站。如果不知道这些爬虫的名称,就无法阻止这些爬虫对网站的恶意访问,也不能确保用户信息的安全。恶意爬虫非常讨厌,它们会搜索网站中的所有信息,收集其中的电子邮箱地址。这些地址被收集到一起之后就卖给广告商,甚至有可能卖给非法组织。几乎所有的恶意爬虫都不会理睬robots.txt 文件。

在网站的基本地址后面加上robots.txt,就能看到各个网站的robots.txt 文件。例如,访问www.sampleaddress.com/robots.txt 就能看到该网站的robots.txt 文本文件。如果通过这样的链接没能看到网站的robots.txt 文件,那这个网站就没有robots.txt。

可以用任何文本编辑器来创建robots.txt 文件。要记住,并不是每个人都需要robots.txt文件。如果不在意是谁在检索网站,那就没必要使用这个文件。但不管怎么样,都不要使用空白的robots.txt 文件。在爬虫看来,空文件意味着网站不愿意被任何爬虫检索。所以,使用空白文件可以使网站不出现在搜索引擎的搜索结果中。

机器人排除标准 robot.txt robot exclusion standard的更多相关文章

  1. Nutch关于robot.txt的处理

    在nutch中,默认情况下尊重robot.txt的配置,同时不提供配置项以忽略robot.txt. 以下是其中一个解释.即作为apache的一个开源项目,必须遵循某些规定,同时由于开放了源代码,可以简 ...

  2. Nutch关于robot.txt的处理 分类: H3_NUTCH 2015-01-28 11:20 472人阅读 评论(0) 收藏

    在nutch中,默认情况下尊重robot.txt的配置,同时不提供配置项以忽略robot.txt. 以下是其中一个解释.即作为apache的一个开源项目,必须遵循某些规定,同时由于开放了源代码,可以简 ...

  3. robot.txt 文件 作用和语法

    seo工作者应该不陌生,robots.txt文件是每一个搜索引擎蜘蛛到你的网站之后要寻找和访问的第一个文件,robots.txt是你对搜索引擎制定的一个如何索引你的网站的规则.通过该文件,搜索引擎就可 ...

  4. 「黑科技」智能消毒防疫机器人 技术方案介绍-disinfection robot

    消毒机器人 小新防疫消杀机器人 - 自主导航全方位360°臭氧杀菌消毒机器人,采用臭氧无阻碍.无死角.遍布整个空间除菌:强力涡轮风机,30㎡室内空气循环6次/h,10分钟速效杀菌.除异味.自动转化为氧 ...

  5. JSTL 标准标签库 (JavaServer Pages Standard Tag library, JSTL)

    JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制标签库的集合,用来解决 像遍历Map或集合.条件测试.XML处理,甚至数据 库访问和数 ...

  6. Robot - 1. robot framework环境搭建

    Fom:https://www.cnblogs.com/puresoul/p/3854963.html 一. robot framework环境搭建: 官网:http://robotframework ...

  7. [Robot Framework] Robot Framework怎么调试?

    Robot Framework怎么debug? 在eclipse里面安装一个插件,就可以debug robot framework的project. 插件下载地址: https://github.co ...

  8. 使用robot合并Robot Framework测试报告

    p.p1 { margin: 0; font: 17px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Helvetica ...

  9. [Robot Framework] Robot Framework用Execute Javascript对XPath表示的元素执行scrollIntoView操作

    有些元素需要通过滚动条滚动才能变得可见. 如果这些元素在DOM结构里面存在,可以通过scrollIntoView让其可见,但如果在DOM结构里面不存在那就要通过拖动滚动条让其变的可见. Execute ...

随机推荐

  1. 如何使用Git 下载GitHub的东西

    1. 先安装git 2. 注册一个github账号 3. 新建一个项目 3. 打开git 运行以下命令: cd /d/workspace (切换目录到 d盘的workspace) git init ( ...

  2. C# Split() 去除 \r\n 分组

    str为读入的文本string[] ReadText = str.Replace("\r\n", "@").Split('@'); 转自 http://zhid ...

  3. ios block一定会犯的几个错误

    贴几段斯坦福大学关于gcd的代码,这段代码逐步演示了如何修正错误,其中用到的既是串行队列   1.这个是原始代码 - (void)viewWillAppear:(BOOL)animated { NSD ...

  4. python 文件目录遍历

    递归遍历目录和文件 import os path = r'F:\PycharmProjects\basic gram\作业和习题\test' def getAllFileAndDir(path): # ...

  5. JavaWEB springmvc 使用定时任务

    1.配置web.xml 在web.xml配置使用springmvc框架,其他配置略. <display-name>xxx.com</display-name> <!-- ...

  6. 菜鸟学Java(二十)——你知道long和Long有什么区别吗?

    Java中数据类型分两种: 1.基本类型:long,int,byte,float,double 2.对象类型:Long,Integer,Byte,Float,Double其它一切java提供的,或者你 ...

  7. 提取字符串中的数字(C语言)

    题目要求 问题描述:给定一个任意字符串,提取出其中所包含的整数. 样例输入:A12 32bc de51f6576g 样例输出:共计 4 个整数:12 32 51 6576 解决方案-指针版本 核心思想 ...

  8. 每日英语:Nelson Mandela Dies at 95

    Nelson Mandela, who rose from militant antiapartheid activist to become the unifying president of a ...

  9. linux命令(37):paste,合并两个文件,对应行为一行

    paste的格式为: paste -d -s -file1 file2 选项的含义如下: -d 指定不同于空格或t a b键的域分隔符.例如用@分隔域,使用- d @.如果不指定,默认用空格分割 -s ...

  10. 【数据库】悲观锁与乐观锁与MySQL的MVCC实现简述

    悲观锁 悲观锁,就是一种悲观心态的锁,每次访问数据时都会锁定数据: 乐观锁 乐观锁,就是一种乐观心态的锁,每次访问数据时并不锁定数据,期待数据并没作修改,如果数据没被修改则作具体的业务 应用程序上使用 ...