学科分类
目录
网络爬虫

robots.txt文件

网站通过一个符合Robots协议的robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。Robots协议(也叫爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol)。Robots协议是国际互联网界通行的道德规范,基于以下原则建立:

(1) 搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权;

(2) 网站有义务保护其使用者的个人信息和隐私不被侵犯。

robots.txt文件是搜索引擎访问网站时要查看的第一个文件,它会限定网络爬虫的访问范围。当一个网络爬虫访问一个站点时,它会先检查该站点根目录下是否存在robots.txt文件。如果该文件存在,那么网络爬虫就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么所有的网络爬虫就能够访问网站上所有没有被口令保护的页面。

robots.txt文件有着一套通用的语法规则,它使用#号进行注释,既可以包含一条记录,又可以包含多条记录,并且使用空行分开。一般情况下,该文件以一行或多行User-agent记录开始,后面再跟上若干行Disallow记录。下面是关于记录的详细介绍:

  • User-agent:该项的值用于描述搜索引擎robot的名字。在robots.txt文件中,至少要有一条User-agent记录。如果有多条User-agent记录,则说明有多个robot会受到该协议的限制。若该项的值设为“*”,则该协议对任何搜索引擎均有效,且这样的记录只能有一条。

  • Disallow:该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的。任何一条Disallow记录为空,都说明该网站的所有部分都允许被访问。在robots.txt文件中,至少要有一条Disallow记录。

  • Allow:该项的值用于描述希望被访问的一组URL,与Disallow项相似,这个值可以是一条完整的路径,也可以是路径的前缀。一个网站的所有URL默认是Allow的,所以Allow通常与Disallow搭配使用,实现允许访问一部分网页的同时禁止访问其它所有URL的功能。

大多数网站都会定义robots.txt文件,可以让爬虫了解爬取该网站存在着哪些限制。例如,访问https://www.jd.com/robots.txt获取京东网站定义的robots.txt文件:

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: /

通过观察可以看到,robots.txt文件禁止所有搜索引擎收录京东网站的某些目录,比如/pinpai/.html?。另外,该文件还禁止User-agent(用户代理)为EtaoSpider、HuihuiSpider、GwdangSpider和WochachaSpider的爬虫爬取该网站的任何资源。

其他定义了robots.txt文件的网站案例,还可以参看:

  • 淘宝网:https://www.taobao.com/robots.txt

  • 腾讯网:http://www.qq.com/robots.txt

注意:

(1)robots.txt文件必须放置在一个站点的根目录下,而且文件名必须全部小写。

(2)Robots协议只是一种建议,它没有实际的约束力,网络爬虫可以选择不遵守这个协议,但可能会存在一定的法律风险。

点击此处
隐藏目录