《Python网络爬虫》2.2 Robots协议
2017-04-06 本文已影响79人
一页编程
By 一页编程
什么是Robots协议
Robots是机器人的意思,那Robots协议是什么呢?
Robots协议的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),读起来很绕口,所以我们简称Robots协议。Robots协议的一个很重要作用就是网站告知爬虫哪些页面可以抓取,哪些不行。
我们之前讲过说一个网站想限制爬虫,有两个办法,一个办法是审查来源,一个办法是通过Robots协议来做到告知。Robots协议就是这样的一个功能,它的具体使用是在网站的根目录下放置一个文件——robots.txt文件,在这个文件中写明了在一个网站里哪些目录是允许爬虫去爬取的,哪些目录是不允许的。
通过这样的形式,你如果写了一个爬虫,你就要去尊重网站维护人员对网站资源的一个管理。
京东的Robots协议
我们看一下京东的Robots协议,浏览器打开网址:https://www.jd.com/robots.txt
,就看到Robots协议的文本。
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
-
User-agent: *
:指的是对于任何的网络爬虫来源(定义为user-agent),也就是说无论你是什么样的网络爬虫都应该遵守如下的协议。 -
Disallow: /?*
:不允许所有爬虫访问以问号开头的路径。 -
Disallow: /pop/*.html
:不允许所有爬虫访问pop目录下的所有HTML页面。 -
Disallow: /pinpai/*.html?*
:符合这个通配符的内容也是不允许任何网络爬虫访问的
此外,京东的robots协议又提供了User-agent: EtaoSpider
这样的一个内容,其实不只是EtaoSpider,后面还有四个网络爬虫,后面都跟了一句Disallow: /
指的是这四个网络爬虫,是不允许爬去京东的任何资源,
Robots基本语法
Robots协议他通过了一个基本语法来告知所有的爬虫,它内部资源能够被访问的权限,这个语法就是User-agent
和Disallow
。
-
User-agent
表明的是哪些爬虫,如果我们想代表所有爬虫就用User-agent: *
。 -
Disallow
代表的是不允许这个爬虫访问的资源的目录。
有了这样的一个基本协议,就可以对整个网站的内容做一个相关的规范,使得所有的爬虫知道他可以访问哪里,不可以访问哪里。