爬虫:Robots协议
Robots 协议也称作爬虫协议、机器人协议,它的全名叫作网络爬虫排除标准( Robots Exclusion Protocol ),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取 它通常是一个叫作 robots.txt 的文本文件,一般放在网站的根目录下
当搜索爬虫访问一个站点时,它首先会检查这个站点根目录下是否存在 robots.txt 文件,如果存在, 搜索爬虫会根据其中定义的爬取范围来爬取, 如果没有找到这个文件,搜索爬虫便会访问所有可直接访问的页面:
看个robots.txt的样例:
User-agent: *
Disallow: /
Allow: /public/
这个定义就实现了对所有搜索爬虫只允许爬取putblic目录的功能,将上述内容保存成robots.txt文件,放在网站的根目录下,和网站的入口文件(比如:index.php,index.html,index.jsp)
Allow一般和Disallow一起使用,一般不会单独使用,用来排除某些操作限制。
爬虫名称
常见搜索爬虫的名称及其对应的网站
robotparse:解析robots文
robotparse模块可以实现帮助我们解析robots.txt文件,来判断我们是否有权限来爬取这个网页
urllib.robotparser.RobotFileParser(url="")
set_url():用来设置robots.txt文件的链接。如果在创建RobotFileParser对象时传入链接,那么就不需要再使用这个方法设置了
read() :读取 robots.txt 文件并进行分析,注意,这个方法执行一个读取和分析操作,如果不调用这个方法,接下来的判断都会为 False ,所以一定记得调用这个方法 这个方法不会返 回任何内容,但是执行了读取操作
parse():用来解析 robots.txt 文件,传入的参数是robots.txt 某些行的内容 ,它会按照 robots.txt 的语法规则来分析这些内容
can_fetch() :该方法传人两个参数 第一个是 User-agent ,第二个是要抓取的 URL 返回的内容是该搜索引擎是否可以抓取这个 URL ,返回结果是 True或 False
mitme() :返回的是上次抓取和分析 robots.txt 的时间,这对于长时间分析和抓取的搜索爬虫 很有必要的,你可能需要定期检查来抓取最新的 robots.txt
modified()::它同样对长时间分析和抓取的搜索爬虫很有帮助,将当前时间设置为上次抓取和分析 robots.txt 的时间
from urllib.robotparser import RobotFileParserrq = RobotFileParser()
rq.set_url("https://blog.csdn.net/Smart_look?spm=1000.2115.3001.5343")
rq.read()
print(rq.can_fetch("*","https://blog.csdn.net/Smart_look?spm=1000.2115.3001.5343"))结果:
True
也可以使用parse() 方法来执行读取
from urllib.robotparser import RobotFileParser
from urllib.request import urlopenrq = RobotFileParser()
rq.parse(urlopen("https://blog.csdn.net/Smart_look?spm=1000.2115.3001.5343").read().decode("utf-8").split("\n"))
print(rq.can_fetch("*","https://blog.csdn.net/Smart_look?spm=1000.2115.3001.5343"))结果:
True
爬虫:Robots协议相关推荐
- 爬虫Robots协议
Robots协议是互联网爬虫的一项公认的道德规范,它的全称是"网络爬虫排除标准"(Robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的, ...
- 丑憨批的爬虫笔记2(爬虫引发的问题+robots协议)
去搜 user-agent!!!! referer!!!!! 网页中怎么查看请求头header信息 点一下Name里的东西就会出来 规模大小分类 robots协议 User-agent: * /// ...
- python遵循什么协议_《Python网络爬虫》2.3 Robots协议的遵守方式
在实际操作中我们这样的爬虫该如何遵守robots协议呢? Robots协议的使用 对于任何网络爬虫来讲,它应该能够自动或人工的识别robots.txt文件,根据文件的内容再进行爬取. 即使不写这样的代 ...
- 网络爬虫排除协议robots.txt介绍及写法详解.
以上内容转载自:http://www.xgezhang.com/serach_engine_robots.html Robots协议的全称是"网络爬虫排除标准"(Robots Ex ...
- 【K哥爬虫普法】百度、360八年乱战,robots 协议之战终落幕
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知 ...
- Python爬虫——爬虫是什么都可以爬的吗?Robots协议!
Python爬虫--爬虫是什么都可以爬的吗? 初识"爬虫"这个词时,想必大家都会和我一样,认为"爬虫"就是爬取网站上的各种内容,可以抓取网站的信息为我们所用. ...
- 爬虫君子协议-robots.txt协议
文章目录 一.定义 二.用法 一.定义 robots协议是一种约定俗称的爬虫协议,由网站主人规定了该网站的哪些内容可以爬取,哪些内容不可以爬取,擅自爬取可能承担相关法律责任.之所以称之为君子协议,是因 ...
- 【网络爬虫与信息提取】Robots协议
一.网络爬虫引发的问题 网络爬虫根据尺寸可以分为三类:小规模.中规模和大规模. 其中小规模的爬虫一般是用于爬取网页,数据量不大而且对速度不敏感,一般使用requests库就足够了,占据了所有网络爬虫的 ...
- 网络爬虫的Robots协议
目前对网络爬虫的限制主要有两种方式: 1.来源审查:判断User-Agent(在请求头中的一个键值对)进行限制,通过该键值对可以判断发起网络请求的浏览器类型,网站维护人员可以根据这个进行请求限制. 2 ...
最新文章
- HTTP请求报文和HTTP响应报文(转)
- hive根据职位给员工涨工资_华为28岁员工工资表曝光:厉害的HR,都有这些特质!...
- Java NIO系列教程(三) Buffer
- Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较
- RAC OEM 打开无法显示CPU情况 的解决过程
- ElasticSearch Java SpringBoot根据时间范围分组求和
- Python 杠上 Java、C/C++,赢面有几成?
- Linux 命令(119)—— diff 命令
- qtextedit非编辑时去边框_10分钟看懂Photoshop图像的基本编辑方法-数字化图像、图像基础理论知识(置入文件)...
- Android集成三方浏览器之X5内核,从入门到精通
- JDK8的下载和安装,以及配置环境变量
- Hyperscan 5.1.0 安装
- matlab 偏最小二乘回归,偏最小二乘法回归和判别分析的Matlab开源免费库
- JS获取下个月的第一天和最后一天
- 求次方的c语言程序,C语言编程求13的13次方的最后三位数
- 大部分人都容易焦虑,那么应该如何对待焦虑呢?
- 大学物理实验长度的测量实验报告_大学物理实验长度测量
- 分享:从华为转正到离职
- 利用南十字星座测量经纬度的方法
- 模拟电子技术基础 第一章 绪论