我们可以在网站根目录下放一个robots.txt文件,里面是robots协议规则,可以指定搜索引擎能抓取哪些网页,也可以禁止抓取哪些网页。当您的网站有不希望被搜索引擎收录的内容时,才需要使用robots.txt文件,如果您希望搜索引擎收录网站上所有内容,就可以不用建立robots.txt文件!
什么是Robots协议
robots协议全称是“网络爬虫排除标准”,也叫爬虫协议、机器人协议,我们可以控制robots协议阻止或放行搜索引擎抓取网页的行为,通过robots协议向搜索引擎声明,我们的站点网页哪些是自己允许搜索引擎抓取的,哪些网页又禁止搜索引擎抓取!
搜索引擎在对网站进行抓取收录网页之前,首先获取到这个robots.txt文本文件,然后解析到其中的规则,然后根据规则来抓取网站的页面。
但是,robots协议并没有形成法律层面的规范,只是一种约定俗成的道德约束而已。
如何查看网站robots.txt文件
前提是网站根目录下存在robots.txt文件,如果存在,我们就可以通过访问:域名/robots.txt,就可以在浏览器中查看!比如:
百度:www.baidu.com/robots.txt
淘宝网:www.taobao.com/robots.txt
刘代码博客:www.liudaima.com/robots.txt
robots协议的作用
可以告知搜索引擎哪些页面能被抓取,哪些页面不能被抓取;
可以屏蔽一些网站中比较大的文件,节省服务器带宽。如:图片,音乐,视频等;
可以设置网站地图连接,方便引导蜘蛛爬取页面;
可以屏蔽站点的一些死链接;
robots协议规则
每行记录的第一个英文字母要大写,紧跟其后的是英文状态下的冒号,冒号后面还有一个空格
MarkupUser-agent: 表明搜索引擎爬虫名字Disallow: 表示禁止抓取的页面Allow: 表示允许抓取的页面Sitemap: 表示网站地图*: 表示匹配0或任意长度的任意字符$: 表示匹配行结束/: 表示该目录下的所有目录文件和页面
下面我们具体介绍一下上面的规则:
1、User-agent:指定搜索引擎
User-agent是用来指定各个搜索引擎的,在robots.txt文件中,至少要有一条User-agent记录!
如果你只想指定百度搜索引擎,就可以这样写:
MarkupUser-agent: Baiduspider
如果你想指定所有搜索引擎,就可以这样写:
User-agent: *
星号*是一个通配符,表示全部,所以,User-agent: * 表示指定所有搜索引擎
2、Disallow:禁止抓取
Disallow指定要禁止抓取的页面、目录或文件等。
如果你想蔽整个网站的所有目录文件或页面,就用正斜杠(/)来表示
MarkupDisallow: / 表示禁止抓取网站根目录下所有目录
如果你想禁止抓取admin和require两个目录下面的所有目录,就可以这样写
MarkupDisallow: /admin/ Disallow: /require/
如果你想禁止抓取abc目录下的所有以“.html”为后缀的网页,可以这样写:
MarkupDisallow: /abc/*.html
如果想禁止抓取目录下的某个具体文件,比如abc目录下的“50.html”,就可这样写
MarkupDisallow: /abc/50.html
如果想禁止抓取网站中所有的.jpg、png,GIF等格式的图片,添加美元符号$表示结尾,就可以写成这样:
MarkupDisallow: /.jpg$ Disallow: /.png$ Disallow: /.GIF$
如果想禁止抓取网站中所有包含问号(?)的网址,就这样写
MarkupDisallow: /*?*
3、Allow:允许抓取
Allow的用法和Disallow差不多,只不过,Disallow是禁止抓取,而Allow是指定搜索引擎抓取的目录。
Allow: / 表示允许抓取网站所有目录
Allow: /admin/ 允许爬寻admin目录下的所有目录
Allow: /require/ 允许爬寻reqire目录下的所有目录
Allow: .htm$ 仅允许访问以".htm"为后缀的URL。
Allow: .gif$ 允许抓取网页和gif格式图片
4、Sitemap:指定网站地图
Sitepmap地图就是XML文件,在这个文件里统一列出了网站中的网址以及关于每个网址的其他数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度等等),利用这些信息搜索引擎可以更加智能地抓取网站内容。
所以,我们可以在网站中生成sitemap网站地图文件,并在robots.txt协议文件里,用sitemap规则来告诉搜索引擎网站地图,使搜索引擎更加快速方便的抓取!
比如:在robots协议中告诉搜索引擎刘代码博客的sitemap网站地图,写法如下:
MarkupSitemap: https://www.liudaima.com/sitemap.html
带斜杠/和不带的区别
在屏蔽目录的时候,注意,这里如果是阻止抓取某目录的话目录名字一定要注意“/”,不带“/”表示的是阻止访问目录所有内容和包含目录名的文件,而带上“/”则表示阻止访问目录下的所有内容,这两点要分清楚!
其他robots协议规则
1、Robot-version: 用来指定robot协议的版本号
MarkupRobot-version: Version 2.0
2、Crawl-delay:设置抓取延迟
就是指抓取一个页面之后,间隔多久再次抓取下一个页面的时长,以秒为最低延迟单位!比如:
MarkupCrawl-delay: 5
表示本次抓取后,到下一次抓取前需要等待5秒。
4、Visit-time: 设置抓取时间段
如果你只希望搜索引擎在凌晨1:00到中午12:00才可以抓取网页,就可以这样写:
MarkupVisit-time: 0100-1200
5、Request-rate: 设置在某个时间段内抓取网页的频率
如果希望搜索引擎在2:30到08:29之间,以每分钟35次的频率进行抓取,就可以这样写:
MarkupRequest-rate: 35/1m 0100 - 0759
如果希望搜索引擎在7:00到12:00之间,以每分钟15次的频率进行抓取,就可以这样写:
MarkupRequest-rate: 15/1m 0700 - 1200
robots.txt完整协议用法示例
例1:禁止所有搜索引擎抓取网站的任何部分
MarkupUser-agent: * Disallow: /
例2:允许所有搜索引擎抓取网站的任何部分
MarkupUser-agent: *Allow: /
例3、禁止所有搜索引擎访问网站中的几个部分,在这里我用a、b、c目录来代替
MarkupUser-agent: *Disallow: /a/Disallow: /b/Disallow: /c/
如果是允许,则是
MarkupUser-agent: *Allow: /a/Allow: /b/Allow: /c/
例4、禁止某个搜索引擎的访问,比如:同时禁止百度和神马抓取:
MarkupUser-agent: baiduspiderUser-agent: YisouspiderDisallow: /
例5、只允许某个搜索引擎的访问,比如百度
MarkupUser-agent: baiduspiderDisallow:
在Disallow:后面不加任何东西,意思是仅允许e访问该网站。
例6、使用”$”限制访问url
MarkupUser-agent: *Allow: .htm$Disallow: /
意思是仅允许访问以”.htm”为后缀的URL
例7、禁止访问网站中所有的动态页面
MarkupUser-agent: *Disallow: /*?*
例8、禁止所有搜索引擎抓取网站上所有图片
MarkupUser-agent: *Disallow: .jpg$Disallow: .jpeg$Disallow: .gif$Disallow: .png$Disallow: .bmp$
意思是只允许引擎抓取网页,禁止抓取任何图片(严格来说,是禁止抓取jpg、jpeg、gif、png、bmp格式的图片。)
例9、只允许所有搜索引擎抓取网页和.gif格式图片
MarkupUser-agent: *Allow: .gif$Disallow: .jpg$Disallow: .jpeg$Disallow: .png$Disallow: .bmp$
意思是只允许抓取网页和gif格式图片,不允许抓取其他格式图片
robots的meta标签
前面介绍了robots.txt文件协议的写法,下面还有一个robots的meta标签,主要是针对一个具体的页面;robots的meta标签是放在网页中的head头部标签中的,专门用于告诉搜索引擎如何抓取该网页的内容!
比如说,我们要防止网页被所有搜索引擎抓取,我们可以这样写:
Markup<meta name="robots" content="noindex">
但要是希望所有搜索引擎来抓取页面,就这样写:
Markup
<meta name="robots" content="index">
因robots的meta标签的讲解不是本文的重点
转载请注明来源网址: