Robots.txt - 多个用户代理的抓取延迟的正确格式是什么?

Sam*_*mmy 18 format robots.txt web-crawler agents

下面是一个示例robots.txt文件,允许多个用户代理为每个用户代理提供多个爬网延迟.抓取延迟值仅用于说明目的,并且在真实的robots.txt文件中会有所不同.

我已经在网上搜索了正确的答案,但找不到一个.有太多混合的建议,我不知道哪个是正确/正确的方法.

问题:

(1)每个用户代理都可以拥有自己的抓取延迟吗?(我假设是的)

(2)在Allow/Dissallow行之前或之后,您在哪里为每个用户代理放置了爬行延迟行?

(3)每个用户代理组之间是否必须有空白.

参考文献:

http://www.seopt.com/2013/01/robots-text-file/

http://help.yandex.com/webmaster/?id=1113851#1113858

基本上,我希望找出最终robots.txt文件应该如何使用下面示例中的值.

提前致谢.

# Allow only major search spiders    
User-agent: Mediapartners-Google
Disallow:
Crawl-delay: 11

User-agent: Googlebot
Disallow:
Crawl-delay: 12

User-agent: Adsbot-Google
Disallow:
Crawl-delay: 13

User-agent: Googlebot-Image
Disallow:
Crawl-delay: 14

User-agent: Googlebot-Mobile
Disallow:
Crawl-delay: 15

User-agent: MSNBot
Disallow:
Crawl-delay: 16

User-agent: bingbot
Disallow:
Crawl-delay: 17

User-agent: Slurp
Disallow:
Crawl-delay: 18

User-agent: Yahoo! Slurp
Disallow:
Crawl-delay: 19

# Block all other spiders
User-agent: *
Disallow: /

# Block Directories for all spiders
User-agent: *
Disallow: /ads/
Disallow: /cgi-bin/
Disallow: /scripts/
Run Code Online (Sandbox Code Playgroud)

(4)如果我想将所有用户代理设置为10秒的爬行延迟,那么以下是否正确?

# Allow only major search spiders
User-agent: *
Crawl-delay: 10

User-agent: Mediapartners-Google
Disallow:

User-agent: Googlebot
Disallow:

User-agent: Adsbot-Google
Disallow:

User-agent: Googlebot-Image
Disallow:

User-agent: Googlebot-Mobile
Disallow:

User-agent: MSNBot
Disallow:

User-agent: bingbot
Disallow:

User-agent: Slurp
Disallow:

User-agent: Yahoo! Slurp
Disallow:

# Block all other spiders
User-agent: *
Disallow: /

# Block Directories for all spiders
User-agent: *
Disallow: /ads/
Disallow: /cgi-bin/
Disallow: /scripts/
Run Code Online (Sandbox Code Playgroud)

uno*_*nor 22

(1)每个用户代理都可以拥有自己的抓取延迟吗?

是.每条记录由一行或多User-agent行开始,可以有Crawl-delay一行.请注意,这Crawl-delay不是原始robots.txt规范的一部分.但是将它们包含在那些理解它的解析器中是没有问题的,因为规范定义了:

无法识别的标头会被忽略.

因此,较旧的robots.txt解析器将忽略您的Crawl-delay行.


(2)在Allow/Dissallow行之前或之后,您在哪里为每个用户代理放置了爬行延迟行?

无所谓.


(3)每个用户代理组之间是否必须有空白.

是.记录必须由一个或多个新行分隔.查看原始规格:

该文件由一个或多个由一个或多个空行分隔的记录组成(以CR,CR/NL或NL终止).


(4)如果我想将所有用户代理设置为10秒的爬行延迟,那么以下是否正确?

不,Bots会查找与其用户代理匹配的记录.只有当他们没有找到记录时,他们才会使用该User-agent: *记录.所以,在你的榜样所有列出的机器人(如Googlebot,MSNBot,Yahoo! Slurp等)将有没有 Crawl-delay.


另请注意,您不能拥有以下几条记录User-agent: *:

如果值为"*",则记录将描述任何未与任何其他记录匹配的机械手的默认访问策略.不允许在"/robots.txt"文件中包含多个此类记录.

因此解析器可能会查找(如果没有其他记录匹配)第一个记录,User-agent: *并忽略以下记录.为了您的第一个例子这将意味着开始与网址/ads/,/cgi-bin/并且/scripts/没有阻止.

即使你只有一个记录User-agent: *,这些Disallow行只适用于没有其他记录匹配的机器人!正如您的评论# Block Directories for all spiders建议的那样,您希望为所有蜘蛛阻止这些URL路径,因此您必须Disallow每条记录重复这些行.