桥梁

比较详细的robots.txt协议文件写法

2020-05-18 15:34:17

一、网站设置robots.txt的原因。

1:设置访问权限保护网站安全。

2:禁止搜索引擎爬取无效页面,集中权值到主要页面。

二、怎么用标准写法书写协议?

有几个概念需掌握。

User-agent表示定义哪个搜索引擎,如User-agent:Baiduspider,定义百度蜘蛛。

Disallow表示禁止访问。

Allow表示运行访问。

通过以上三个命令,可以组合多种写法,允许哪个搜索引擎访问或禁止哪个页面。

三、robots.txt文件放在那里?

此文件需放置在网站的根目录,且对字母大小有限制,文件名必须为小写字母。所有的命令第一个字母需大写,其余的小写。且命令之后要有一个英文字符空格。

四、哪些时候需要使用该协议。

1:无用页面,很多网站都有联系我们,用户协议等页面,这些页面相对于搜索引擎优化来讲,作用不大,此时需要使用Disallow命令禁止这些页面被搜索引擎抓取。

2:动态页面,企业类型站点屏蔽动态页面,有利于网站安全。且多个网址访问同一页面,会造成权重分散。因此,一般情况下,屏蔽动态页面,保留静态或伪静态页面。

3:网站后台页面,网站后台也可以归类于无用页面,禁止收录有百益而无一害。

seo

五、Robots协议的原则

Robots协议是国际互联网界通行的道德规范,基于以下原则建立:

1、搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权;

2、网站有义务保护其使用者的个人信息和隐私不被侵犯。

六、Robots协议的写法

robots.txt放到一个站点的根目录下即可,一个robots.txt只能控制相同协议,相同端口,相同站点的网页抓取策略。

1、robots.txt的常规写法

简单的robots.txt只有两条规则:

User-agent:指定对哪些爬虫生效

Disallow:指定要屏蔽的网址

整个文件分为x节,一节由y个User-agent行和z个Disallow行组成。一节就表示对User-agent行指定的y个爬虫屏蔽z个网址。这里x>=0,y>0,z>0。x=0时即表示空文件,空文件等同于没有robots.txt。

下面详细介绍这两条规则:

(1)、User-agent

爬虫抓取时会声明自己的身份,这就是User-agent,没错,就是http协议里的User-agent,robots.txt利用User-agent来区分各个引擎的爬虫。

举例说明:google网页搜索爬虫的User-agent为Googlebot,下面这行就指定google的爬虫。

User-agent:Googlebot

如果想指定所有的爬虫怎么办?不可能穷举啊,可以用下面这一行:

User-agent: *

可能有的同学要问了,我怎么知道爬虫的User-agent是什么?这里提供了一个简单的列表:爬虫列表

当然,你还可以查相关搜索引擎的资料得到官方的数据,比如说google爬虫列表,百度爬虫列表

(2)、Disallow

Disallow行列出的是要拦截的网页,以正斜线 (/) 开头,可以列出特定的网址或模式。

要屏蔽整个网站,使用正斜线即可,如下所示:

Disallow: /

要屏蔽某一目录以及其中的所有内容,在目录名后添加正斜线,如下所示:

Disallow: /无用目录名/

要屏蔽某个具体的网页,就指出这个网页,如下所示:

Disallow: /网页.html

举例:

User-agent: baiduspider

Disallow: /

User-agent: Googlebot

Disallow: /

嵊灿科技解释:意思也就是禁止百度蜘蛛和Google蜘蛛抓取所有文章

2、robots.txt的高级写法

首先声明:高级玩法不是所有引擎的爬虫都支持,一般来说,作为搜索引擎技术领导者的谷歌支持的好。

(1)、allow

如果需要屏蔽seo1-seo100,但是不屏蔽seo50,那我们该怎么办呢?

方案1:

Disallow:/seo1/

Disallow:/seo2/

...

Disallow:/seo49/

Disallow:/seo51/

...

Disallow:/seo100/

方案2:

Disallow:/seo

Allow:/seo50/

对比以上2个方案,大家应该知道allow的用法了吧,如果你网站目前也有这个需求的话,马海祥建议你可以使用方案2来解决。

但如果想屏蔽seo50下面的文件seo.htm,又该怎么办呢?

Disallow:/seo

Allow:/seo50/

Disallow:/seo50/seo.html

聪明的你一定能发现其中的规律,对吧?谁管的越细就听谁的。

(2)、sitemap

前面说过爬虫会通过网页内部的链接发现新的网页,但是如果没有连接指向的网页怎么办?或者用户输入条件生成的动态网页怎么办?能否让网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页?这就是sitemap。

简单的Sitepmap形式就是XML文件,在其中列出网站中的网址以及关于每个网址的其他数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度等等),利用这些信息搜索引擎可以更加智能地抓取网站内容。

新的问题来了,爬虫怎么知道这个网站有没有提供sitemap文件,或者说网站管理员生成了sitemap(可能是多个文件),爬虫怎么知道放在哪里呢?

由于robots.txt的位置是固定的,于是大家就想到了把sitemap的位置信息放在robots.txt里,这就成为robots.txt里的新成员了,比如:

Sitemap: http://www.mahaixiang.cn/sitemap.html

考虑到一个网站的网页众多,sitemap人工维护不太靠谱,对此,马海祥建议你可以使用google提供了工具可以自动生成sitemap。

(3)、meta tag

其实严格来说这部分内容不属于robots.txt,不过也算非常相关,我也不知道放哪里合适,暂且放到这里吧。

robots.txt的初衷是为了让网站管理员管理可以出现在搜索引擎里的网站内容。但是,即使使用robots.txt文件让爬虫无法抓取这些内容,搜索引擎也可以通过其他方式找到这些网页并将它添加到索引中。

例如,其他网站仍可能链接到该网站,因此,网页网址及其他公开的信息(如指向相关网站的链接中的定位文字或开放式目录管理系统中的标题)有可能会出现在引擎的搜索结果中,如果想彻底对搜索引擎隐身那咋整呢?马海祥给你的答案是:元标记,即meta tag。

比如要完全阻止一个网页的内容列在搜索引擎索引中(即使有其他网站链接到此网页),可使用noindex元标记。只要搜索引擎查看该网页,便会看到noindex元标记并阻止该网页显示在索引中,这里注意noindex元标记提供的是一种逐页控制对网站的访问的方式。

比如:要防止所有搜索引擎将网站中的网页编入索引,那你就可以在网页的头部代码部分添加:

<meta name="robots" content="noindex">

这里的name取值可以设置为某个搜索引擎的User-agent从而指定屏蔽某一个搜索引擎。

除了noindex外,还有其他元标记,比如说nofollow,禁止爬虫从此页面中跟踪链接。这里马海祥再提一句:noindex和nofollow在 HTML 4.01规范里有描述,但是其他tag的在不同引擎支持到什么程度各不相同,还请读者自行查阅各个引擎的说明文档。

(4)、Crawl-delay

除了控制哪些可以抓哪些不能抓之外,robots.txt还可以用来控制爬虫抓取的速率。如何做到的呢?通过设置爬虫在两次抓取之间等待的秒数。

Crawl-delay:5

表示本次抓取后下一次抓取前需要等待5秒。

嵊灿科技提醒大家一点:google已经不支持这种方式了,不过在webmaster tools里提供了一个功能可以更直观的控制抓取速率。

这里插一句题外话,几年前马海祥记得曾经有一段时间robots.txt还支持复杂的参数:Visit-time,只有在visit-time指定的时间 段里,爬虫才可以访问;Request-rate: 用来限制URL的读取频率,用于控制不同的时间段采用不同的抓取速率。

后来估计支持的人太少,就渐渐的废掉了,有兴趣的博友可以自行研究一下,马海祥了解到的是目前google和baidu都已经不支持这个规则了,其他小的引擎公司貌似从来都没有支持过。

七、Robots协议中的语法属性解释

Robots协议用来告知搜索引擎哪些页面能被抓取,哪些页面不能被抓取;可以屏蔽一些网站中比较大的文件,如图片,音乐,视频等,节省服务器带宽;也可以屏蔽站点的一些死链接,方便搜索引擎抓取网站内容;再或者是设置网站地图连接,方便引导蜘蛛爬取页面。

User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符。

Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录。

Disallow: /mahaixiang/*.htm 禁止访问/mahaixiang/目录下的所有以".htm"为后缀的URL(包含子目录)。

Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址。

Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片。

Disallow:/mahaixiang/abc.html 禁止爬取ab文件夹下面的adc.html文件。

Allow: /mahaixiang/ 这里定义是允许爬寻mahaixiang目录下面的目录。

Allow: /mahaixiang 这里定义是允许爬寻mahaixiang的整个目录。

Allow: .htm$ 仅允许访问以".htm"为后缀的URL。

Allow: .gif$ 允许抓取网页和gif格式图片。

Sitemap: /sitemap.html 告诉爬虫这个页面是网站地图。

举例:

User-agent: *

Disallow: /?*

Disallow: /seo/*.htm

User-agent: EtaoSpider

Disallow: /

嵊灿科技解释:意思就是有禁止所有搜索引擎来抓网站中所有包含问号 (?) 的网址和seo目录下的.htm文章。同时,对etao完全屏蔽。

八、Robots协议中的其它语法属性

1、Robot-version: 用来指定robot协议的版本号

例子: Robot-version: Version 2.0

2、Crawl-delay:雅虎YST一个特定的扩展名,可以通过它对我们的抓取程序设定一个较低的抓取请求频率。

您可以加入Crawl-delay:xx指示,其中,“XX”是指在crawler程序两次进入站点时,以秒为单位的低延时。

3、Crawl-delay:定义抓取延迟

例子: Crawl-delay:/mahaixiang/

4、Visit-time: 只有在visit-time指定的时间段里,robot才可以访问指定的URL,否则不可访问。

例子: Visit-time: 0100-1300 #允许在凌晨1:00到13:00访问

5、Request-rate: 用来限制URL的读取频率

例子: Request-rate: 40/1m 0100 - 0759 在1:00到07:59之间,以每分钟40次的频率进行访问。

Request-rate: 12/1m 0800 - 1300 在8:00到13:00之间,以每分钟12次的频率进行访问。

联系我们contact us

联系人:王经理 手机:18563790735

电话:400-094-0531  0531-67883910

邮箱:kefu@tgeye.cn

地址:济南市历下区泉城路268号永安大厦708室

Copyright © 山东嵊灿网络科技有限公司 All rights reserved 备案号:鲁ICP备13029154号 主要从事于济南网站建设,seo,外贸推广, 欢迎来电咨询! 服务支持:嵊灿科技