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
    4
    Disallow: /cgi-bin/
    Disallow: /images/
    Disallow: /tmp/
    Disallow: /private/

Allow

  • 使用Allow配置允许机器人爬取的页面,相应的,没有规定的页面则不允许爬取,可以结合Disallow使用。

    1
    2
    Disallow: /blog
    Allow: /blog/allowed-post

    在这个例子中,搜索引擎可以访问: /blog/allowed-post,但是它不能访问:

    /blog/another-post

    /blog/yet-another-post

    /blog/download-me.pdf

  • 规则冲突

    • 如果同时在AllowDisallow中声明了同一个路径,则遵循指令字符较长的那个

      1
      2
      Disallow: /blog/
      Allow: /blog

      在这一举例中,Disallow长度为6字符,而Allow则为5字符,那么机器人会遵循Disallow

    • 如果DisallowAllow长度相同,那么会使用限制范围较小的指令。

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(抓取预算);
  • 防止部分图片、视频及其它资源展示在搜索引擎结果中。