首先感谢崔庆才博主的文章,以下信息都是在其文章与《python3网络爬虫开发实战》书中摘抄出的https://cuiqingcai.com
"""
Version: 0.1
Author: freshbin
Date: 2019年8月23日
"""
print("=================================分析Robots协议 start================================================")
'''
爬虫访问一个站点时,首先会检查是否存在robots.txt文件,
如果存在,则根据其中定义的爬取范围来爬取
如果不存在,则访问所有可直接访问的页面
robots.txt样例如下
User-agent: *
Disallow: /
Allow: /public/
表示只允许爬取public目录的功能
User-agent描述了搜索爬虫的名称,设置为*表示该协议对任何爬取爬虫有效
比如设置User-agent:Baiduspider
表示设置的规则对百度爬虫是有效的。
Disallow指定了不允许抓取的目录,比如设置为/表示不允许抓取所有页面
Allow一般和Disallow一起使用,一般不会单独使用,用来排除某些限制,
设置为/public/,表示所有页面不允许抓取,但可以抓取public目录
禁止所有爬虫访问网站某些目录的代码如下:
User-agent: *
Disallow: /private/
Disallow: /tmp/
只允许某一个爬虫访问的代码如下:
User-agent: WebCrawler
Disallow:
User-agent: *
Disallow: /
'''
from urllib.robotparser import RobotFileParser
from urllib.request import urlopen
# rp = RobotFileParser('http://www.jianshu.com/robots.txt')
# rp.set_url('http://www.jianshu.com/robots.txt')
# rp.read()
rp = RobotFileParser()
rp.parse(urlopen('https://www.baidu.com/robots.txt').read().decode('utf-8').split('\n'))
print(rp.can_fetch('*', 'https://www.baidu.com'))
print(rp.can_fetch('*', 'https://www.baidu.com/search?q=python'))
print("=================================分析Robots协议 end================================================")