简介:
Robots.txt 是一个爬虫规范协议,看名称就知道它是一个 txt 的文本。放在网站的根目录下。robots.txt 文件由一条或多条规则组成。每条规则可禁止(或允许)特定抓取工具抓取相应网站中的指定文件路径。它主要的作用就是来告诉爬虫,我这个网站,你哪些你能看,哪些你不能看的一个协议。
协议规则[语法]
1. robots.txt 必须是 ASCII 或 UTF-8 文本文件。不允许包含其他字符
2. robots.txt 文件由一条或多条规则组成
每条规则由多条指令(说明)组成,每条指令各占一行
3. 每条规则包含这些信息:此规则的适用对象(即用户代理);代理可以访问的目录或文件,和/或;代理无法访问的目录或文件
4. 系统会按照从上到下的顺序处理这些规则,而且一个用户代理只能匹配 1 个规则集(即与相应用户代理匹配的首条最具体的规则)
5. 系统的默认假设是:用户代理可以抓取所有未被 Disallow: 规则禁止访问的网页或目录
6. 规则区分大小写
7. 一个网站只能有 1 个 robots.txt 文件
8. Robots.txt 中主要有 4 个关键词。放在行首,用英文“:”分割内容部分或指令体。
User-agent 网页抓取工具的名称
Disallow 不应抓取的目录或网页
Allow 应抓取的目录或网页
Sitemap 网站的站点地图的位置
实例:
User-agent: AhrefsBot
Disallow: /
User-agent: dotbot
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: DeuSu
Disallow: /
User-agent: grapeshot
Disallow: /
上面的配置将分别禁止各种爬虫对网站内容的爬取。一般的,各种爬虫都有一个总名称,还还有很多分类爬虫,就如百度来说,有一个Baiduspider,还有很多个如Baiduspider-image产品名不同的user-agent
你可以根据各产品不同的user-agent设置不同的抓取规则,以下robots实现禁止所有来自百度的抓取但允许图片搜索抓取/image/目录:
User-agent: Baiduspider
Disallow: /
User-agent: Baiduspider-image
Allow: /image/
本站 Robots.txt 配置示例
User-agent: *应用到所有爬虫
Disallow: /admin禁止收录后台地址
Disallow: /user-*禁止收录以user-开头的地址
Crawl-delay: 1收录更新时间为一天 Sitemap: http://bbs.twsh8.com/sitemap.xml设置sitemap地址
如果要禁止全部的爬虫,则配置下面的内容即可:
User-agent: *
Disallow: /
Robots.txt 也支持其他模糊匹配,比如下面的配置。禁止爬取以 .xls 文件结尾的内容:
Disallow: /*.xls$
注意,如果不配置,或者配置的内容,如下所说,则代表全部允许:
User-agent: *
Disallow:
在网站首页代码<head>与</head>之间,加入<meta name=”robots” content=”noarchive”>代码,此标记禁止搜索引擎抓取网站并显示网页快照。其中name=""中的内容,可以是不同的user-agent名称,对应响应的效果。
常用的代码:
<meta name=”robots” content=”index,follow”>:可以抓取本页,而且可以顺着本页继续索引别的链接<meta name=”robots” content=”noindex,follow”>:不许抓取本页,但是可以顺着本页抓取索引别的链接<meta name=”robots” content=”index,nofollow”>:可以抓取本页,但是不许顺着本页抓取索引别的链接<meta name=”robots” content=”noindex,nofollow”>:不许抓取本页,也不许顺着本页抓取索引别的链接
异常情况解决办法:
1. 网站已经加了robots.txt,还能在百度搜索出来?
因为搜索引擎索引数据库的更新需要时间。虽然Baiduspider已经停止访问您网站上的网页,但百度搜索引擎数据库中已经建立的网页索引信息,可能需要数月时间才会清除。另外也请检查您的robots配置是否正确。如果您的拒绝被收录需求非常急迫,也可以通过投诉平台反馈请求处理。
2. 希望网站内容被百度索引但不被保存快照,我该怎么做?
Baiduspider遵守互联网meta robots协议。您可以利用网页meta的设置,使百度显示只对该网页建索引,但并不在搜索结果中显示该网页的快照。和robots的更新一样,因为搜索引擎索引数据库的更新需要时间,所以虽然您已经在网页中通过meta禁止了百度在搜索结果中显示该网页的快照,但百度搜索引擎数据库中如果已经建立了网页索引信息,可能需要二至四周才会在线上生效。
最后,除了 Robots.txt 之外,我们也可以通过 Nginx 的其他技术手段来禁止爬出的抓取。但是相对来说,配置 Robots.txt 的效率最高!