技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
服务器技术
操作系统
网站运营

分类目录

热门标签

赞助商

搜索

robots.txt 语法详解:*、$、?等字符的含义及用法

作者:admin    时间:2017-6-17 11:19:19    浏览:

创建 robots.txt 文件很简单,您可以在任何文本编辑器中创建一个 robots.txt 文件,它是ASCII编码的文本文件,而不是HTML文件。本文将详细介绍 robots.txt 的语法及用法,以及各种注意问题。

 robots.txt

robots.txt

robots.txt 语法

  • User-Agent: 以下规则适用的机器人(例如“Googlebot”等)
  • Disallow: 您希望阻止机器人访问的页面(根据需要,禁止多行)
  • Allow: 不需要阻止机器人访问的页面
  • Noindex: 您希望搜索引擎阻止和不要索引的页面(或者如果先前已建立索引,则将其解除索引)。支持Google,不支持雅虎和实时搜索(Live Search),其他搜索未知。
  • 每个 User-Agent / Disallow 组应该用空行分隔; 然而,组内不应存在空行(在User-agent行和最后一个Disallow之间)。
  • 井号(#)可用于 robots.txt 文件中的注释,其中该行上#后的所有内容都将被忽略。可能用于整行或末行。
  • 目录和文件名区分大小写:“my”,“My”和“MY”对于搜索引擎来说都是不同的。

我们来看一个例子的robots.txt文件。下面的例子包括:

  • 对“Googlebot”机器人没有任何不允许
  • 对“msnbot”机器人整站关闭
  • 所有机器人(Googlebot除外)不应访问 /tmp/ 目录或名为 /logs 的目录或文件,如注释所述,例如tmp.htm,/logs或logs.php

User-agent: Googlebot
Disallow:

User-agent: msnbot
Disallow: /

# /tmp/ 目录或名为 /logs 的目录或文件阻止所有机器人
User-agent: *
Disallow: /tmp/
Disallow: /logs # 称为 logs 的目录或文件

应该在User-Agent行上列出什么?User-agent 是特定搜索引擎机器人的名称。您可以设置一个条目以应用于特定的机器人(通过列出名称),或者您可以将其设置为适用于所有机器人(通过列出作为通配符的星号)。适用于所有机器人的条目如下所示:

User-Agent: *

主要机器人包括:Baiduspider(baidu),360spider(360搜索),Sosospider(腾讯搜索),Sogou web spider(搜狗),Googlebot(Google),Slurp(Yahoo!)等,各大搜索引擎机器人可参考《百度蜘蛛最新UA及各大搜索引擎蜘蛛爬虫UA汇总》。

请注意,Googlebot的 User-agent 指定的一组指令将被Googlebot遵守; 但Googlebot不会遵守*(所有机器人)的 User-agent 的指令。

在Disallow行应该列出什么?列出您要阻止的页面。您可以列出特定的URL或模式。该条目应以正斜杠(/)开始。

例子:

  • 阻止整个网站: Disallow: /
  • 阻止一个目录及其中的一切: Disallow: /private_directory/
  • 阻止页面: Disallow: /private_file.html
  • 要阻止一个页面和(或)一个名为private的目录: Disallow: /private

如果您通过http和https提供内容,则需要为每个协议单独使用一个robots.txt文件。例如,为了允许机器人对所有http页面进行索引,但没有https页面,您可以按照http协议使用robots.txt文件:

User-agent: *
Disallow:

而对于https协议:

User-agent: *
Disallow: /

每当他们访问网站时,都会检查robots.txt文件。一旦将robots.txt文件的规则上传到站点的根目录并且机器人进入站点,则robots.txt文件中的规则将会生效。访问的频率根据流行度,权限以及内容更新频率的不同,机器人蜘蛛网的频率有所不同。有些网站每天可能会被抓取多次,而其他网站可能每周只能爬行几次。

一些先进的技术

主要的搜索引擎已经开始合作来推进robots.txt文件的功能。如上所述,主要搜索引擎已经采用了一些功能,而不一定是所有主要的引擎,可以更好地控制爬行。由于这些可能会受到限制,请务必谨慎使用。

抓取延迟:

某些网站可能会遇到大量流量,并希望将搜索引擎蜘蛛减慢,以允许更多的服务器资源来满足常规流量的需求。抓取延迟是Yahoo,Live Search和Ask所认可的特殊指令,指示抓取工具在抓取页面之间等待的秒数:

User-agent: msnbot
Crawl-delay: 5

◆ 模式匹配

模式匹配现在似乎可用于:Google,Yahoo和Live Search。模式匹配的价值相当可观。让我们先看一下最基本的模式匹配,使用星号通配符。阻止访问以“private”开头的所有子目录:

User-agent: Googlebot
Disallow: /private*/

您可以使用美元符号($)匹配字符串的末尾。例如,阻止以.asp结尾的URL:

User-agent: Googlebot
Disallow: /*.asp$

与在Perl和其他地方的正则表达式中发现的更先进的模式匹配不同,问号没有特殊的权力。所以,阻止对包含问号(?)的所有URL的访问,只需使用问号(不需要“转义”或者使用反斜杠):

User-agent: *
Disallow: /*?*

阻止机器人抓取特定文件类型的所有文件(例如.gif):

User-agent: *
Disallow: /*.gif$

这是一个比较复杂的例子。假设您的站点仅使用查询字符串部分的URL(“?”),仅用于会话ID,并且您要排除包含动态参数的所有URL,以确保机器人不会抓取重复的页面。但是您可能希望包含以“?”结尾的任何URL。以下是如何实现的:

User-agent: Slurp
Disallow: /*? # 阻止包含 a 的URL
Allow: /*?$ # 允许所有以 a 结尾的URL

允许指令:

就像听起来一样,它与Disallow指令相反,它提供了专门调用可能被抓取的目录或页面的能力。这在大部分或整个场地被禁止之后可能是有益的。

要允许Googlebot只进入“google”目录:

User-agent: Googlebot
Disallow: /
Allow: /google/

Noindex指令:

该指令提供了从搜索结果中消除无代号无标题列表的优点,但仅限于Google。它的语法恰好反映了Disallow。用Matt Cutts的话说:

Google允许在robots.txt中使用NOINDEX指令,它将完全从Google删除所有匹配的站点URL。(这种行为可能会根据这个政策讨论而改变,当然这也是为什么我们还没有谈论过这个问题。)

网站地图:

XML网站地图文件可以告诉搜索引擎您网站上的所有页面,并且可选地提供有关这些页面的信息,例如哪些是最重要的以及更改频率。它充当一个自动发现机制,让蜘蛛找到XML站点地图文件。您可以通过在robots.txt文件中添加以下行来告诉Google和其他搜索引擎您的Sitemap:

Sitemap: sitemap_location

sitemap_location是Sitemap的完整网址。此指令与 User-agent 行无关,因此放在任何地方并不重要,不过一般是放在最后。所有主要的搜索引擎都支持Auto-Discovery Sitemap协议,包括Google,Yahoo,Live Search和Ask。

虽然 Auto-Discovery 提供了一种通知搜索引擎关于sitemap.xml文件的方法,但也值得通过其每个网站管理员控制台(Google网站管理员中心,雅虎网站浏览器,实时搜索网站管理员中心)直接验证和提交站点地图到搜索引擎 。

Tags: 爬虫  百度蜘蛛