allwiki首页  
天下维客 你可以修改的网络知识库
首页最近更改优秀条目专题展示电脑科技词典软件学习网络知识电脑安全明星时尚天下百科
 

怎么写robots.txt

天下维客,你可以修改的网络知识库

Jump to: navigation, search
robots.txt综述 怎么写robots.txt robots.txt语法规范 文件实例 常见错误 扩展功能
robots.txt疑难解答 检测工具 禁止收录特定页面 清除已收录的页面 META标签:robots
nofollow noindex .htaccess 网络爬虫的名称 常见爬虫的特性 robots.txt相关链接

robots.txtThe Robots Exclusion Protocol(机器人排除协议),用于告诉搜索引擎的漫游器(又称网络蜘蛛)哪些网站内容不能被抓取。

robots.txt的作用和局限请参见robots.txt一文,而本文将介绍robots.txt的具体写法。

目录

常用的robots.txt实例

允许任何爬虫访问整个网站

User-agent:*
Disallow:

本例允许所有的爬虫访问网站的任何目录、任何文件。这个效果与网站不存在/robots.txt文件时相同,但为了网站的正规起见,建议您建立如上的robots.txt。

注:如果robots.txt中含有其他限制条件,不要与本例组合使用

禁止所有蜘蛛爬行任何文件

User-agent: *
Disallow: /

本例阻止所有爬虫对任何内容的爬行。如果你的网站还未正式开放,可以使用这个例子。

禁止特定爬虫访问

限制特定的爬虫程序时,需要给出爬虫的名字。(爬虫的名称请参见常见网络爬虫的名称

禁止特定爬虫访问全站任何内容

例如禁止google爬虫的访问,则在User-agent里面指明其爬虫名称Googlebot

User-agent: Googlebot
Disallow: /

禁止特定蜘蛛访问特定目录或具体文件

在Disallow命令中给出限定目录或文件名即可,每行Disallow中只能写一个目录名或文件名,可以多行联用

User-agent: Googlebot
Disallow: /private/
Disallow: /allwiki/xxx.htm

限制多个特定蜘蛛访问的例子

例如禁止google和yahoo爬虫的访问,可以用两组命令来控制。

User-agent: googlebot
Disallow: /cgi-bin/
 
User-agent:yahoo slurp
Disallow: /allwiki/
Disallow: /tmp/

一个比较复杂的例子

由于例子较长,单独写在robots.txt文件实例中。

robots.txt的语法

基本语法

robots.txt的主体部分由一组或多组如下代码组成:

# 注释行,robots.txt DEMO,  by www.allwiki.com
 
User-agent: 爬虫名称
Disallow: 网址限制条件
  • 大小写敏感性:robots.txt是大小写敏感的,尤其应该注意网址的大小写拼写。(虽然有很多搜索引擎允许网址之外的内容为大小写无关,而由于缺乏强制标准、且实际上存在大小写敏感现象,所以建议统一认为大小写敏感)。
  • User-agent命令:指定爬虫名称(注:"*"通配符扩展另见下一段落的专门说明)。
    • 每组限制条件中应仅有一个User-agent指定
    • 爬虫名称可从其所有者网站查到。也可以参见常见网络爬虫的名称一文。
  • Disallow命令:指定网址限制条件
    • 每组限制条件中,可以有多行Disallow命令(这些Disallow命令之间不要空行)
    • 网址限定条件是指目录或文件的起始字串(注:"*"通配符扩展另见下一段落的专门说明),举例如下:
Disallow: /tmp
以上的例子可以匹配/tmp/abc.php、/tmpfile.html等。如果是“Disallow: /tmp/”则不会匹配/tmpfile.html。
    • 注意:不支持中文或%编码、特殊字符!中文存在多种编码,%可能导致字符转义,因此不要在网址限制条件中出现。例如“/tmp%2f”就存在二义性(可能被有些蜘蛛理解为/tmp/)。因此尽可能使用“通用化”的方式来给目录、文件命名,最安全的字符包括英文大小写、数字、下划线、减号等。
  • 空格:在":"之后允许空格,命令与":"中间则不要空格。
  • 注释行、空行:robots.txt文件中,注释行、空行不影响执行。"#"到行尾的内容被认为是注释。为了普适性起见,推荐行首书写"#"的完整注释行,不推荐在某个命令行的尾部添加部分注释——说不准哪个爬虫可能不适应命令/注释混在一起的情形。
  • 换行符:支持多种换行格式,如CR、LF、CR+LF。换句话说,您可以随便使用常见的文本编辑器来编写robots.txt。

User-agent: *的特别说明

“User-agent: *”命令指定之后的Disallow限制适用于所有爬虫。但还有一种说法是:这种用法的Disallow限制适用于robots.txt中没有明确提到名称的爬虫。这带来了实际理解的混乱,例如对于:

User-agent: Baiduspider
Disallow: /tmp
 
User-agent: *
Disallow: /cgi-bin

一种理解是Baiduspider不能访问/tmp、/cgi-bin两个目录,其他爬虫不能访问/cgi-bin目录;另一种理解则是/tmp目录仅限制Baiduspider的访问,而/cgi-bin目录限制其他爬虫的访问。

鉴于这种理解混乱,建议将需要封闭的通用内容对每个爬虫限定都重写一遍,例如上面的例子改写为:

User-agent: Baiduspider
Disallow: /tmp
Disallow: /cgi-bin
 
User-agent: *
Disallow: /cgi-bin

关于理解混乱的内容仅根据多份资料进行推理,有待于其他实践资料或权威说明佐证(欢迎补充资料)

增强性功能

参见robots.txt的增强功能一文,包括对网址中"?*$"字符的使用、Allow命令、抓取频度、sitemap指定等。

其他提醒

  • robots.txt文件必须放在网站根目录下。
位于子目录中的robots.txt将不起作用——形如"http://www.abc.com/xxx/robots.txt"等子目录中的robots.txt将无法被爬虫程序所采用。
  • robots.txt的文件名必须全部小写
  • robots.txt总是可被访问的,不受其内容“Disallow:/”的限制
  • robots.txt是个“君子协定”,它不能防止不守规矩的爬虫抓取你的隐秘内容!
  • robots.txt不能阻止搜索引擎收录受限的页面。禁止收录页面的方法请参考禁止搜索引擎收录一文。
Personal tools
工具
金银币拍卖 金币拍卖预展  金银币网店 熊猫金银币 生肖金银币