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. Linux 系统结构详解【转】

    Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图1-1所 ...

  2. C# delegate 委托

    http://www.runoob.com/csharp/csharp-delegate.html

  3. CSS父元素高度随子元素高度变化而变化

    <html> <body> <head> <style> #menu{width:1000px;overfloat:hidden;} /* width: ...

  4. 在 Windows Server 2008 中部署带 SignalR 的网站出错

    一直是在 Windows Server 2008 R2 或更高版本的 Windows 中进行部署,没有遇到过此现象,不知道是不是因为系统的原因. 现象为从浏览器访问配置 signalr 的地址返回 4 ...

  5. Android基础知识之Manifest文件的组织结构

    原文:http://android.eoe.cn/topic/android_sdk 是AndroidManifest.xml文件中的根标签,她必须包含一个标签和指定的xmlns:android. p ...

  6. 关于Eclipse如何加入Gradle文件与Android Studio两个平台一起开发,工作目录不发生变化

    前言: 本来很久之前想弄这玩意,不过因为各种原因,所以没弄. 今天有位前辈提出需求.说想让Eclipse的Android项目逐步走向Android Studio,但是又担心Android Studio ...

  7. Viewpager 的相关总结

    1.修改切换item的时间 public class FixedSpeedScroller extends Scroller { ; public FixedSpeedScroller(Context ...

  8. windows远程连接mac配置方法

    1.开启mac共享服务,设置通过密码进行连接 [系统偏好设置]中选择[共享]打开[屏幕共享]服务,即可允许其他电脑的用户远程查看并控制此电脑.点击[电脑设置]配置访问密码 2. 下载TightVNC, ...

  9. android工程导入没有错误,运行提示Unable to instantiate activity ComponentInfo

    导入小米clientside_android_sdk的demo OAuth-OpenAuthDemo,点Java Build Path的Libraries内Add External JARs,将oau ...

  10. Docker 镜像操作

    列出镜像列表 我们可以使用 docker images 来列出本地主机上的镜像. runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREA ...