robots
协议的全称是Robots Exclusion Protocol
(网络爬虫排除标准)。
网站通过robots
协议告诉搜索引擎、爬虫或者机器人哪些页面可以抓取,哪些页面不能抓取。
robots
协议只是一个道德规范,是一个行业自行约定,并不是法律,所以, 有些企业或者个人为了利益不遵守这个协议,随便抓取别的网站内容进行数据分析之类的活动!
robots
协议虽然不是法律,但是在国外已经有根据此协议进行判案的例子出现,在大数据时代, 国家势必会规范互联网行为准则,让互联网生态健康发展。
robots
协议规定:在网站的根目录下提供一个名称为robots.txt
的文本文件, 这个文本文件的内容有一些规则,规定了这个网站的哪些内容可以被抓取,哪些内容不能被抓取!
当一个爬虫或者机器人访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt
, 如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围; 如果不存在,爬虫或者机器人将能够访问网站上没有被口令保护的页面。
爬虫或者机器人都是人写的,如果这个机器人无视robots.txt
的存在也是有可能的,就好比, 你家被陌生人不敲门就闯入了一样!敲门被主人允许进入才能进入别人家,这就是人类的道德规范,但不是法律!
robots.txt
文件内容的规则其实非常简单,下面看一下几个著名网站的这个文件的示例:
百度的robots.txt
文件内容:
淘宝的robots.txt
文件内容:
如果你的网站使用的是WordPress搭建的,你自己也没有创建robots.txt
这个文件, 那么WordPress在第一次访问的时候自动创建这个文件,内容如下:
User-Agent: *
Disallow: /wp-admin/
/wp-admin/
是后台管理的页面,所以不希望被抓取!
总结起来就是下面2条规则:
1、User-Agent
与Disallow
或者Allow
组合出现, 一个User-Agent
可以对应多个Disallow
或者Allow
,User-Agent
是HTTP请求头,包含了爬虫或者机器人信息,透过它,可以知道是哪个机器人访问的网站!
2、Disallow
和Allow
的值是一个该网站的资源路径,以/
开始, 如果URL
上需要请求参数,后面加上?
,如果某个路径下的所有页面都不想让访问,后面加上/
。
wget有抓取网站的功能, 我们可以使用它来对我们的robots.txt
文件进行验证,看是否起作用了。