机器人排除标准 robot.txt robot exclusion standard

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 文件。在爬虫看来,空文件意味着网站不愿意被任何爬虫检索。所以,使用空白文件可以使网站不出现在搜索引擎的搜索结果中。

时间: 2024-10-07 05:31:57

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

robot.txt

在国内,网站管理者似乎对robots.txt并没有引起多大重视,可是一些功能离开它又不能是,因此今天石家庄SEO想通过这篇文章来简单谈一下robots.txt的写作.?的部分,或者指定搜索引擎只收录指定的内容. 当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时, robots.txt基本介绍 robots.txt是一个纯文本文件,在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的内容. 当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该

Nutch关于robot.txt的处理

在nutch中,默认情况下尊重robot.txt的配置,同时不提供配置项以忽略robot.txt. 以下是其中一个解释.即作为apache的一个开源项目,必须遵循某些规定,同时由于开放了源代码,可以简单的通过修改源代码来忽略robot.txt的限制. From the point of view of research and crawling certain pieces of the web, and i strongly agree with you that it should be c

Lync Server 2013 实战系列之四:标准版-准备第一个Standard Edition Server

在之前的文章中,我们已经完成了Lync Server 2013 部署之前的一系列工作,也是部署Lync之前的必备条件,希望大家能慢慢体会到怎么做和为什么要这么去做.今天就可以跟大家一起分享如何去准备第一个标准版. 1. 手动将Lync的管理员账户加入到Csadministrator组 在准备完Active Directory 后需要把Lync的管理员账户添加到Lync的管理员组中,否则在后面的拓扑发布等操作会发生各种错误.在DC上打开"Active Directory用户和计算机"--

使用robot合并Robot Framework测试报告

rebot -R(--merge) 第一个output.xml文件路径  第二个output.xml文件路径 rebot  第一个output.xml文件路径  第二个output.xml文件路径 以上两个命令个人推荐用第二个,因为第一个会因为存在不同suite而报错. 命令行: rebot -N [报告名] -d [合并报告的输出路径]-o [合并的output.xml输出路径] [第一个output.xml文件路径]  [第二个output.xml文件路径] -N:   指定报告名 -d:输

标准标签库JSTL(JSP Standard Tag Library)

1, 核心标签(最常用, 最重要的) 表达式控制标签 out 输出常量 value---直接赋值 输出变量 default---默认值 escapeXml---控制转义字符(默认为true, 如果需要转义, 设置为false) set 三个属性: var value scope---将一个值存到*scope中(默认是pageContext) 赋值的时候可以将值放在value后面, 也可以放在两个标签中间 <c:set var="t" value="山东淄博"

[译]作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的"每个程序员必知之WEB开发". 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before 问:对于一个web开发人员来说,在发布一个站点之前,他需

一个web开发人员在发布站点前你需要考虑哪些技术细节

转自http://www.xker.com/page/e2014/0520/132486.html 一个web开发人员在发布站点前你需要考虑哪些技术细节 文章转自Hedgehog博客 前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的”每个程序员必知之WEB开发”. 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-sho

作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的

前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的"每个程序员必知之WEB开发". 原文: http://programmers.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before 问:对于一个web开发人员来说,在发布一个站点之前,他需

Web开发需要关注的技术细节

摘要:在网站发布前,开发者需要关注有许多的技术细节,比如接口设计.用户体验.安全性.Web标准.性能.SEO等,倘若一个疏忽就会影响到整体的体验效果.作为一名Web开发者,哪些技术细节需要考虑呢? [编者按]在网站发布前,开发者需要关注有许多的技术细节,比如接口设计.用户体验.安全性.Web标准.性能.SEO等,倘若一个疏忽就会影响到整体的体验效果.在Stackexchange上有人提出:作为一名Web开发者,哪些技术细节是需要考虑的?作者Hedgehog对该文进行了编译,这些资源有助于你了解一