网站中的 robots.txt 在爬虫中的指导作用

     很多网站中都会设置robots.txt文件,用来规范、约束或者是禁止爬虫对于网站中数据的采集等操作。robots.txt文件用于禁止网络爬虫访问网站指定目录。robots.txt的格式采用面向行的语法:空行、注释行(以#打头)、规则行。规则行的格式为:Field: value。常见的规则行:User-Agent、Disallow、Allow行。

    我们以豆瓣网为例,来看一下它的robots.txt文件的内容:
    访问链接为:https://www.douban.com/robots.txt

     内容如下:

User-agent: *
Disallow: /subject_search
Disallow: /amazon_search
Disallow: /search
Disallow: /group/search
Disallow: /event/search
Disallow: /celebrities/search
Disallow: /location/drama/search
Disallow: /forum/
Disallow: /new_subject
Disallow: /service/iframe
Disallow: /j/
Disallow: /link2/
Disallow: /recommend/
Disallow: /doubanapp/card
Sitemap: https://www.douban.com/sitemap_index.xml
Sitemap: https://www.douban.com/sitemap_updated_index.xml
# Crawl-delay: 5

User-agent: Wandoujia Spider
Disallow: /

        其中,User-Agent表示的是允许什么爬虫对网站的数据进行采集

                   Disallow表示的是哪些网站目录中的资源文件是不被允许访问的,如果违反该约束就会被网站封IP

                   Allow表示的是哪些目录中的资源文件是允许访问的

                   Crawl-delay表示的是相邻两次数据爬取操作之间最小的时间间隔

                    Sitemap这里可以看做是网站中的导航信息,如对于上文中的信息:
 

Sitemap: https://www.douban.com/sitemap_updated_index.xml

           表示的是网站中新增的链接资源。

        对于网站拥有者本身来说编写合适的robots.txt也是很有必要的,对于robots.txt文件的编写来说可以参照几点:

本质核心:
robots.txt只要标明“谁不能访问哪些链接”即可
注意点:
robots.txt文件需要遵从UTF-8编码


在文件的第一行写:
User-Agent: Baiduspider
Disallow: /myself
Disallow: /month
Disallow: /disallow
Crawl-delay: 5

        上述就是一个简单的robots.txt文件,文件中约束了:只有百度爬虫可以爬取该网站中的数据,以myself、month和disallow为前缀的页面都不允许被访问,爬虫相邻两次爬取间隔最小时间为5s。

      下面以实例来看一些百度中的robots.txt的一些内容,这里主要是借助于robotparser模块来做一些简单的分析,关于该模块可以参考这里

#!usr/bin/env python
#encoding:utf-8


'''
__Author__:沂水寒城
功能:  爬虫中 robots.txt 文件实践
'''




import urllib
import robotparser
print urllib.urlopen('https://www.baidu.com/robots.txt').read()
print '=*'*50
url = 'https://www.baidu.com/'
#是否允许指定的用户代理访问网页
rp = robotparser.RobotFileParser()
rp.set_url('https://www.baidu.com/robots.txt')
print '=*'*50
print rp.read()
print rp.can_fetch('BadCrawler',url)
print rp.can_fetch('GoodCrawler',url)
print rp.can_fetch('Baiduspider',url)
print rp.can_fetch('EasouSpider',url)
print rp.can_fetch('yisouspider',url)
print rp.can_fetch('Sosospider',url)
print rp.can_fetch('ChinasoSpider',url)
print rp.can_fetch('Sogou Orion spider',url)
print rp.can_fetch('Sogou News Spider',url)
print rp.can_fetch('Sogou blog',url)
print rp.can_fetch('Sogou spider2',url)
print rp.can_fetch('Sogou inst spider',url)
print rp.can_fetch('Sogou web spider',url)
print rp.can_fetch('YoudaoBot',url)
print rp.can_fetch('Baiduspider-image',url)
print rp.can_fetch('MSNBot',url)
print rp.can_fetch('Googlebot',url)

         结果如下: 

User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: MSNBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Baiduspider-image
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: YoudaoBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou web spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou inst spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou spider2
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou blog
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou News Spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou Orion spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: ChinasoSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sosospider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/


User-agent: yisouspider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: EasouSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: *
Disallow: /

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
None
False
False
True
True
True
True
True
True
True
True
True
True
True
True
True
True
True

       结合Baidu的robots.txt中User-Agent中允许访问的爬虫名称,我们得到上述的结果,自己定义的代理名称的爬虫得到的访问权限为False,其他的都是百度自身允许被访问的User-Agent的名称,所以权限均为True,还是很有意思的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值