【网络爬虫笔记】爬虫Robots协议语法详解
Robots协议是指一个被称为Robots Exclusion Protocol的协议。该协议的主要功能是向网络蜘蛛、机器人等搜索引擎爬虫提供一个标准的访问控制机制,告诉它们哪些页面可以被抓取,哪些页面不可以被抓取。本文将进行爬虫Robots协议语法详解,同时提供相关代码和案例。
1. Robots协议的基本语法
Robots协议的基本语法如下:
User-agent: [user-agent name]
Disallow: [URL string not to be crawled]
其中,User-agent用来指定搜索引擎爬虫的名称,Disallow用来指定不允许被搜索引擎爬虫抓取的页面URL。
例如,以下是一段Robots协议文件的示例:
```
User-agent: Googlebot
Disallow: /private/
Disallow: /admin/
Disallow: /login/
```
在上述示例中,我们指定了Googlebot这个搜索引擎的名称,并对/private/、/admin/、/login/三个页面进行了禁止抓取的设置。
2. Robots协议的常用参数
Robots协议还有一些常用的参数,包括:
- Allow:允许搜索引擎爬虫访问的页面URL;
- Sitemap:指定网站地图的URL,在搜索引擎爬虫抓取站点时会提供该URL,方便搜索引擎获取整个站点的结构信息;
- Crawl-delay:指定搜索引擎爬虫的抓取时间间隔,单位为秒。
例如,以下是一段Robots协议文件的示例:
```
User-agent: Googlebot
Disallow: /private/
Disallow: /admin/
Disallow: /login/
Allow: /public/
Sitemap: http://www.example.com/sitemap.xml
Crawl-delay: 10
```
在上述示例中,我们增加了Allow参数,允许搜索引擎爬虫访问/public/路径下的页面。同时指定了站点地图的URL为http://www.example.com/sitemap.xml,以及搜索引擎爬虫的抓取时间间隔为10秒。
3. Robots协议案例
接下来通过一个实际的案例来说明如何使用Robots协议限制搜索引擎爬虫的访问。
假设我们要制作一个电商网站,并且不希望搜索引擎爬虫抓取我们的购物车页面。
首先,我们需要在网站的根目录下创建一个名为robots.txt的文件,并在其中指定不希望搜索引擎爬虫抓取的页面URL,示例代码如下:
```
User-agent: *
Disallow: /cart/
```
在上述代码中,我们使用了`*`通配符,表示适用于所有搜索引擎爬虫,同时指定不允许访问/cart/路径下的页面。
这样搜索引擎爬虫就会在访问我们网站时先读取该Robots协议文件,并根据协议文件的内容决定是否抓取我们的购物车页面。
4. Python实现Robots协议
Python中可以使用urllib库中的robotparser模块来实现Robots协议的解析和使用,示例代码如下:
```python
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url("http://www.example.com/robots.txt")
rp.read()
if rp.can_fetch("Googlebot", "http://www.example.com/cart/"):
print("Googlebot is allowed to fetch the content!")
else:
print("Googlebot is not allowed to fetch the content!")
```
在上述代码中,我们首先创建一个RobotFileParser对象,指定Robots协议文件的URL,并读取协议文件的内容。然后使用can_fetch()方法判断指定的搜索引擎爬虫是否被允许抓取指定的URL。
总结:
Robots协议是一个网站管理标准,通过在网站的根目录下创建robots.txt文件,可以规定搜索引擎爬虫对网站内容进行抓取的规则。Robots协议具有简洁易懂、执行效果稳定等特点,是网站管理员进行搜索引擎优化的重要工具。
【网络爬虫笔记】爬虫Robots协议语法详解的更多相关文章
- 爬虫的盗亦有道Robots协议
爬虫的规定 Robots协议 网站开发者对于网络爬虫的规范的公告,你可以不遵守可能存在法律风险,但尽量去遵守 Robots协议:在网页的根目录+robots.txt Robots协议的基本语法: #注 ...
- Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解
文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...
- Hive笔记--sql语法详解及JavaAPI
Hive SQL 语法详解:http://blog.csdn.net/hguisu/article/details/7256833Hive SQL 学习笔记(常用):http://blog.sina. ...
- [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解
技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解 http://www.52im.net/thread-1309-1-1.html 本文来自腾讯资深研发工程师罗成的技术分享, ...
- 转 Scrapy笔记(5)- Item详解
Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便. Item提供了类字典的API,并且可以很方便的声明字段,很多Scra ...
- 网络编程之TCP/IP各层详解
网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只 ...
- Xpath语法详解
1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...
- IP地址和子网划分学习笔记之《IP地址详解》
2018-05-03 18:47:37 在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...
- 零拷贝详解 Java NIO学习笔记四(零拷贝详解)
转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...
- 协议分析 - DHCP协议解码详解
协议分析 - DHCP协议解码详解 [DHCP协议简介] DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 ...
随机推荐
- Firefox Quantum 向左,Google Chrome 向右
今天,又重新安装了一下 Firefox Quantum-68.0 (64 位),不同的是这一次安装的是国际中文版,而不是北京谋智火狐的版本. 北京谋智火狐 国际中文版 总的来说,有几点体验: 在 ht ...
- 混合编程python与C++
上个版本: 只是用到ctypes进行传输, 这次将python服务端更改为C++服务端,方便后续维护. 本文实现功能: python传输图片给C++, C++接受图片后对图片进行处理,并将结果返回给p ...
- 如何让别人访问你本地允许的Vue本地项目
步骤一: 将config/index.js 中的host: localhost 改为 host:'0.0.0.0'步骤二:在package.json 将scripts 下面的dev 后 ...
- Rust中的变量的声明和定义
变量的声明和定义 Rust中合法的标识符(包括变量名.函数名.triat名等)必须由数字.字母.下划线组成,而且不能以数字开头.这个和很多语言都是一样的.Rust将来也会允许其他Unicode字符作为 ...
- Linux系统基础知识与自学方法
Linux系统基础知识与自学方法 大部分非计算机相关的朋友也经常使用电脑,所以我们频繁接触的是Windows系统.关于这个系统的评价不一,一部分人觉得简洁快捷,一部分人觉得问题(病毒.弹窗)多多,总之 ...
- 前端学习 C 语言 —— GDB调试器
GDB调试器 我们在讲指针时用 GDB 调试段错误. 本篇将详细介绍 gdb 的最常用命令.日志记录.检测点,最后介绍如何用 gdb 调试进程以及用gdb 调试一个开源项目的调试版本 -- glmar ...
- CPython, Pypy, MicroPython...还在傻傻分不清楚?
哈喽大家好,我是咸鱼 当我们说 Python 时,通常指的是官方实现的 CPython 但还有很多比如 Pypy.Jython.MicroPython.Brython.RustPython 等 &qu ...
- [Java基础]String,StringBuffer,StringBuilder的区别
String 和 StringBuffer/StringBuilder应该分开来看 java.lang.String源码中的注释说明 java.lang.StringBuffer源码中的注释说明 ja ...
- CentOS 7相关操作
防火墙操作 开启防火墙 sudo systemctl start firewalld.service 查看防火墙状态 sudo systemctl status firewalld.service 关 ...
- 万字长文 | Hadoop 上云: 存算分离架构设计与迁移实践
一面数据原有的技术架构是在线下机房中使用 CDH 构建的大数据集群.自公司成立以来,每年都保持着高速增长,业务的增长带来了数据量的剧增. 在过去几年中,我们按照每 1 到 2 年的规划扩容硬件,但往往 ...