robots.txt介绍
robots.txt概述
-
robots.txt
是一个存放在网站根目录下的ASCII编码文件,用于告诉搜索引擎爬虫这个站点中有哪些内容是不应该被抓取的,哪些又是可以获取的。在爬取页面之前,爬虫会查看网站的robots.txt
文件以确认不应该爬取的页面。robots.txt
并非规范,而是约定俗成,有些爬虫机器人会遵守这一规范,有些则并不会。以下是Cloudflare对robots.txt
的介绍:Robots.txt 文件是针对机器人的一组指令。该文件包含在大多数网站的源文件中。Robots.txt 文件主要用于管理 Web 爬网程序类的良性机器人活动。
-
每个站点的robots.txt仅适用于所在协议、主机和端口号都相同的页面,Google对其解释如下:
robots.txt 文件仅适用于所在的协议、主机和端口内的路径。也就是说,
https://example.com/robots.txt
中的规则仅适用于https://example.com/
中的文件,而不适用于子网域(如https://m.example.com/
)或备用协议(如http://example.com/
)。
robots.txt文件的编写
文件组成
-
robots.txt
文件由一个或多个组组成,每个组都以User-agent
开头,内容则由多条规则(指令)组成,每条规则占一行。 -
爬虫会从上到下处理组,一个用户代理(User-agent)仅能匹配一个组,如果同一用户代理有多个组,则会在处理之前讲这些内容合并到一个分组中。
-
规则的内容区分大小写
- 规则区分大小写。例如,
disallow: /file.asp
适用于https://www.example.com/file.asp
,但不适用于https://www.example.com/FILE.asp
。
- 规则区分大小写。例如,
-
以
#
开头的行即为注释行,处理过程中会忽略这些内容。
User-agent
-
User-agent(用户代理)既可以是普通用户的浏览器,或是机器人的名称。
-
常见搜索引擎机器人用户代理名称如下:
Google:
- Googlebot
- Googlebot-Image(用于图像)
- Googlebot-News(用于新闻)
- Googlebot-Video(用于视频)
Bing
- Bingbot
- MSNBot-Media(用于图像和视频)
Baidu
- Baiduspider
Yahoo
- Slurp
-
使用
*
作为通配符,可以匹配所有User-agent
。
Disallow
-
配置在
Disallow
中的内容为不允许机器人爬取的页面,每一行仅可以配置一个目录或页面,多个禁止项可以使用多个Disallow
。1
2
3
4Disallow: /cgi-bin/
Disallow: /images/
Disallow: /tmp/
Disallow: /private/
Allow
-
使用
Allow
配置允许机器人爬取的页面,相应的,没有规定的页面则不允许爬取,可以结合Disallow
使用。1
2Disallow: /blog
Allow: /blog/allowed-post在这个例子中,搜索引擎可以访问:
/blog/allowed-post
,但是它不能访问:/blog/another-post
/blog/yet-another-post
/blog/download-me.pdf
-
规则冲突
-
如果同时在
Allow
和Disallow
中声明了同一个路径,则遵循指令字符较长的那个1
2Disallow: /blog/
Allow: /blog在这一举例中,
Disallow
长度为6字符,而Allow
则为5字符,那么机器人会遵循Disallow
-
如果
Disallow
和Allow
长度相同,那么会使用限制范围较小的指令。
-
Sitemap
-
使用
Sitemap
可以标记网站地图的所在位置,这个xml文件中通常包含需要被搜索引擎抓取、索引的所有页面。1
Sitemap: https://www.domain.com/sitemap.xml
-
如果没有向搜索引擎主动提交网站地图,那么机器人可以
Sitemap
标识的网站地图快速获知需要被爬取的页面。 -
Sitemap
一般写在robots.txt
文件的开头或结尾,可以使用多条Sitemap
标识多个sitemap.xml
文件的路径。
Crawl-delay(Google不再支持)
-
使用
Crawl-delay
可以指定抓取的间隔时间,即每次抓取后停止的时间,单位是秒。1
Crawl-delay: 5
Noindex(Google不支持)
-
指定搜索引擎不索引的路径
1
Noindex: /blog/
Nofollow(Google不支持)
-
指定搜索引擎不跟随某个地址
1
Nofollow: /blog/
robots.txt文件的作用
robots.txt
文件的使用有如下好处:
- 防止抓取重复页面;
- 让网站在某个阶段不公开 (比如:在搭建网站雏形时);
- 防止抓取内部搜索页面;
- 防止服务器过载;
- 防止谷歌浪费crawl budget(抓取预算);
- 防止部分图片、视频及其它资源展示在搜索引擎结果中。