Python requests模块 快速入门 这篇就够了
目录
一、Requests概述
二、安装Requests
三、Get请求
3.1 Get请求示例
3.2 Get请求爬取二进制数据
四、Post请求
4.1 Post请求示例
4.2 发送JSON数据
五、验证Cookies
六、会话请求
一、Requests概述
Requests是一个流行的Python第三方库,它专为HTTP通信而设计,旨在使网络请求更加简单和人性化。以下是关于Requests的概述:
- 简单易用:Requests提供了简洁明了的API,使得发送HTTP请求变得非常直观。与Python标准库中的urllib相比,Requests的语法更加简洁,易于学习和使用。
- 功能全面:Requests支持HTTP的所有主要方法,如GET、POST、PUT、DELETE等。它还支持设置请求头、请求体、超时时间、代理等。此外,Requests还支持会话保持、文件上传、自动内容解码和JSON解析等功能。
- 自动化处理:Requests库内部处理了许多底层的细节,如连接池管理、Keep-alive连接、URL编码等,使得开发者可以专注于业务逻辑而无需关心底层的HTTP通信细节。
- 良好的文档和社区支持:Requests拥有详尽的官方文档和活跃的社区,这意味着开发者可以轻松地找到问题的答案或获得帮助。
- 兼容性:Requests库在Python 2和Python 3中都可以使用,并且与许多其他Python库和框架兼容。
- 安全:Requests在处理HTTPS请求时提供了SSL验证和证书管理功能,确保通信的安全性。
二、安装Requests
确保你已经安装了Requests库。如果还没有安装,可以使用pip进行安装
pip install requests
三、Get请求
3.1 Get请求示例
这个示例中,我们定义了请求的URL、查询参数和请求头。然后,我们使用requests.get()
方法发送GET请求,并获取响应对象。接着,我们检查响应的状态码以确保请求成功,并输出请求的URL、状态码和响应内容。如果服务器返回的是JS ON数据,我们还尝试解析它并打印出来。
请注意,你需要将url
、params
和headers
替换为你实际要发送请求的目标URL、查询参数和请求头信息。此外,处理响应时,你可能需要根据实际情况调整代码,以正确处理服务器返回的数据。
示例:
import requests# 定义请求的URL
url = 'https://www.baidu.com'# 定义查询参数
params = {'key1': 'shenghao','key2': 'haozi'
}# 定义请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}# 发送GET请求
response = requests.get(url, params=params, headers=headers)# 检查请求是否成功
if response.status_code == 200:# 输出请求URLprint('请求URL:', response.url)# 输出响应状态码print('状态码:', response.status_code)# 输出响应内容(文本格式)print('文本响应内容:', response.text)# 如果你知道服务器返回的是JSON数据,可以解析它try:data = response.json()print('JSON响应内容:', data)except ValueError:print('响应内容不是有效的JSON格式')else:# 如果请求失败,打印错误信息print('请求失败,状态码:', response.status_code)print('错误信息:', response.reason)# 你还可以获取其他响应信息,如编码方式和内容长度
print('响应编码:', response.encoding)
print('内容长度:', len(response.content))
3.2 Get请求爬取二进制数据
使用 Requests 库从 URL 下载二进制数据(例如,一个图片文件)
示例:
import requests# 图片文件的URL
url = 'https://www.baidu.com/img/bd_logo1.png'# 发送GET请求,获取二进制响应内容
response = requests.get(url, stream=True)# 检查请求是否成功
if response.status_code == 200:# 以二进制格式打开本地文件用于写入with open('image.jpg', 'wb') as file:# 使用iter_content方法按块读取响应内容,减少内存使用for chunk in response.iter_content(chunk_size=8192):if chunk: # 过滤掉空块file.write(chunk)print('图片下载成功!')
else:print('请求失败,状态码:', response.status_code)
四、Post请求
4.1 Post请求示例
示例:
import requests# 定义请求的URL
url = 'https://httpbin.org/post'# 定义要提交的表单数据
form_data = {'username': 'shenghao','password': 'haozi'
}# 设置请求头,通常不需要特别设置,但有时候可能需要
headers = {'Content-Type': 'application/x-www-form-urlencoded'
}# 发送POST请求
response = requests.post(url, data=form_data, headers=headers)# 检查请求是否成功
if response.status_code == 200:# 输出响应内容print('请求成功!')print('响应内容:', response.text)
else:# 如果请求失败,打印错误信息print('请求失败,状态码:', response.status_code)print('错误信息:', response.reason)# 还可以打印出服务器返回的错误信息,如果有的话if response.text:print('服务器返回的错误信息:', response.text)
4.2 发送JSON数据
通过POST请求发送JSON数据,你需要设置Content-Type
头为application/json
,并将数据编码为JSON格式
示例:
import requests
import json# 定义请求的URL
url = 'https://httpbin.org/post'# 定义要提交的JSON数据
json_data = {'username': 'shenghao','password': 'haozi'
}# 将Python字典转换为JSON字符串
json_string = json.dumps(json_data)# 设置请求头
headers = {'Content-Type': 'application/json'
}# 发送POST请求
response = requests.post(url, data=json_string, headers=headers)# 检查请求是否成功
if response.status_code == 200:# 输出响应内容print('请求成功!')print('响应内容:', response.json()) # 假设服务器返回的是JSON格式的数据
else:# 如果请求失败,打印错误信息print('请求失败,状态码:', response.status_code)print('错误信息:', response.reason)# 还可以打印出服务器返回的错误信息,如果有的话if response.text:print('服务器返回的错误信息:', response.text)
五、验证Cookies
使用cookies进行登录验证通常涉及以下步骤:
- 通过用户名和密码发送登录请求到服务器。
- 服务器验证用户名和密码,如果验证成功,会设置一个或多个cookies,并将其发送给客户端。
- 客户端在接下来的请求中携带这些cookies,以证明用户的登录状态。
示例:
import requests# 登录URL
login_url = 'https://httpbin.org/post'
# 目标URL(需要登录后才能访问)
target_url = 'https://example.com/protected-resource'# 登录时所需的数据
login_data = {'username': 'shenghao','password': 'haozi'
}# 第一步:发送登录请求
login_response = requests.post(login_url, data=login_data)# 假设登录成功,服务器会设置cookies
# 我们从登录响应中获取这些cookies
if login_response.status_code == 200:# 获取cookiescookies = login_response.cookies.get_dict()# 第二步:使用获取到的cookies发送请求到目标URLtarget_response = requests.get(target_url, cookies=cookies)# 打印目标URL的响应内容print(target_response.text)
else:print("登录失败,状态码:", login_response.status_code)
六、会话请求
Session
对象提供了一种方式来跨多个请求保持某些参数和cookies。当你需要向同一网站发送多个请求,并且这些请求之间需要共享某些状态(比如cookies或认证信息)时,使用Session
是非常有用的。
示例:
import requests# 创建一个Session对象
s = requests.Session()# 使用Session对象发送第一个请求(例如登录)
login_url = 'https://httpbin.org/post'
login_data = {'username': 'shenghao', 'password': 'haozi'}
login_response = s.post(login_url, data=login_data)# 检查登录是否成功
if login_response.status_code == 200:print('登录成功!')
else:print('登录失败,状态码:', login_response.status_code)# 发送第二个请求(需要身份验证的资源)
protected_url = 'https://httpbin.org/get'
protected_response = s.get(protected_url)# 由于Session对象自动处理cookies,所以不需要手动设置cookies
# 检查受保护资源的请求是否成功
if protected_response.status_code == 200:print('访问受保护资源成功!')print('响应内容:', protected_response.text)
else:print('访问受保护资源失败,状态码:', protected_response.status_code)# 关闭Session(可选,因为Session对象会在Python对象被垃圾回收时自动关闭)
s.close()
相关文章:

Python requests模块 快速入门 这篇就够了
目录 一、Requests概述 二、安装Requests 三、Get请求 3.1 Get请求示例 3.2 Get请求爬取二进制数据 四、Post请求 4.1 Post请求示例 4.2 发送JSON数据 五、验证Cookies 六、会话请求 一、Requests概述 Requests是一个流行的Python第三方库,它专为HTTP通信…...

【VTKExamples::PolyData】第二十三期 InterpolateMeshOnGrid
很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例InterpolateMeshOnGrid,并解析接口vtkProbeFilter 、vtkWarpScalar & vtkDealuany2D等多个接口,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!…...

大数据术语系列(1)——COW和MOR,我如何使用chatgpt通俗易懂地理解了hudi这两种表类型
从传统数据库到大数据的转变,首当其冲的是各种术语的理解。 所以我与chatgpt发生了一系列对话,以便于我能快速理解这些术语。 我先把汇总的结果放在前边,后边会一步步地来说明我是如何获取这些信息的。前边我也发过一些关于chatgpt提示词相…...

蓝桥杯基础知识7 vector
蓝桥杯基础知识7 vector vector 的定义和特性:在C中,vector是一个动态数组容器,可以存储一系列相同类型的元素。 vector 是一个模板类,使用之前包含头文件<vector>,声明一个vector对象vec,T是存储在v…...

【Java万花筒】加速Java应用程序:探索性能优化的利器
Java性能优化:提升应用程序效率与可靠性的关键 前言 在当今软件开发领域中,性能是一个至关重要的方面。对于Java应用程序而言,优化其性能可以带来更高的效率和更好的用户体验。本文将介绍一些常用的Java性能优化库和工具,帮助开…...

c++ STL系列——(四)queue
在C中,标准模板库(STL)提供了许多容器和算法,其中之一便是queue。queue是一个先进先出(FIFO)的数据结构,它允许在队列的末尾添加元素,并从队列的开头移除元素。本文将深入探讨C STL中…...

2.10日学习打卡----初学RocketMQ(一)
2.10日学习打卡 对于MQ(Message queue)消息队列的一些解释可以看我原来写的文章 初学RabbitMQ 各大MQ产品比较 一.RocketMQ概述 发展历程 RocketMQ概念术语 生产者和消费者 生产者负责生产消息,一般由业务系统负责生产消息,消费者即后台系统&…...

Window中出现 结束服务又自动重启的解决方法
目录 前言1. 问题所示2. 原理分析3. 解决方法前言 长期使用Linux操作系统,对于Window进程如何关闭开启,推荐阅读:Window命令行 如何查看以及关闭进程 而现在遇到进程无法强制kill,过一会自动启动! 对这种方式如何强制关闭,可看下文 1. 问题所示 起初在驱动某个服务的…...

Bee V2.2 分库分表 Sharding+MongoDB ORM 稳定版发布 (更新 Maven)
Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee 小巧玲珑!仅 860K, 还不到 1M, 但却是功能强大! V2.2 (2024.1.1・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtendtrue) 2. 增强批…...

机器学习系列——(十五)随机森林回归
引言 在机器学习的众多算法中,随机森林以其出色的准确率、对高维数据的处理能力以及对训练数据集的异常值的鲁棒性而广受欢迎。它是一种集成学习方法,通过构建多个决策树来进行预测和分类。本文将重点介绍随机森林在回归问题中的应用,即随机…...

【概念板块统计】股票板块一览表 股票概念一览表
一、什么叫股票概念板块 股票概念板块是指具有某种特别产品类型(例如5G概念,光刻机概念)、服务类型(如乡村振兴概念、养老概念)或事件类型(如重组概念、港股通概念、扭亏概念)的股票组成的群体。这些类型通…...

c#通过反射完成对象自动映射
在 C# 中,可以使用 AutoMapper 库来完成对象之间的映射,而不必手动编写显式的映射代码。但是,如果你希望通过反射来动态完成对象的映射,你可以编写自己的映射逻辑并使用反射来完成这个过程。 下面是一个简单的示例,演…...

ef core原始sql查询
ef core用原始sql查询,不能自动映射到类型中。 处理主要是将sql查询结果转换为json,然后再将json转换为类型对象 public async Task<List<Warning_log>> GetStatData(){string sql "SELECT CONVERT(date, [trigger_time]) as tr…...

2024 CKS 题库 | 4、RBAC - RoleBinding
CKS 题库 4、RBAC - RoleBinding Context 绑定到 Pod 的 ServiceAccount 的 Role 授予过度宽松的权限。完成以下项目以减少权限集。 Task 一个名为 web-pod 的现有 Pod 已在 namespace db 中运行。 编辑绑定到 Pod 的 ServiceAccount service-account-web 的现有 Role&#…...

Docker Compose实例
目录 一、前提说明 二、简单的Docker容器部署案例 1. Dockerfile 配置 2. docker-compose.yml 配置 3. application-prod.properties 配置 4. pom.xml 配置 5. 上传文件 6. 创建基础Docker镜像 7. docker-compose.yml编排 8. 停止并删除容器编排 三、案例地址 一、前…...

Mac上新版InfluxDB使用教程
一、简介 官网:influxdb 二、influxdb安装 建议使用Homebrew在 macOS 上安装 InfluxDB v2: brew install influxdb启动influxdb服务:brew services start influxdb 停止influxdb服务:brew services stop influxdb 查看是否启…...

性能篇:网络通信优化之序列化
嗨,小米的朋友们!欢迎回到小米的技术分享空间。今天,我们将深入探讨网络通信中一个不可忽视的重要环节——序列化。废话不多说,让我们一起来揭开序列化的神秘面纱! 背景 序列化作为计算机领域中重要的概念,其存在背景根植于分布式系统和跨语言通信的需求。随着信息技术…...

【UE 游戏编程基础知识】
目录 0 引言1 基础知识1.1 拓展:3D数学和计算机图形学的关系 🙋♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE 游戏编程基础知识】❣️ 寄语:书到用时方恨少,事…...

原语,原子,线程安全
原子操作和原语是计算机科学中常见的概念,通常用于多线程或多进程环境中,以确保数据的一致性和同步。 原子操作(Atomic Operations) 原子操作是不可再分的操作,在执行完毕之前不会被线程调度系统中断的操作。从外部看…...

fast.ai 机器学习笔记(一)
机器学习 1:第 1 课 原文:medium.com/hiromi_suenaga/machine-learning-1-lesson-1-84a1dc2b5236 译者:飞龙 协议:CC BY-NC-SA 4.0 来自机器学习课程的个人笔记。随着我继续复习课程以“真正”理解它,这些笔记将继续更…...

Linux下的socket操作
一、TCP服务端 创建一个TCP服务器的基本操作: 创建一个套接字(socket):使用socket函数绑定套接字(socket):将套接字绑定到一个特定的IP地址和端口号上,这些信息要用结构体sockaddr_in来保存监…...

爬虫练习——动态网页的爬取(股票和百度翻译)
动态网页也是字面意思:实时更新的那种 还有就是你在股票这个网站上,翻页。他的地址是不变的 是动态的加载,真正我不太清楚,只知道他是不变的。如果用静态网页的方法就不可行了。 静态网页的翻页,是网址是有规律的。 …...

Name or service not known问题解决和分析过程解析
目 录 一、问题描述 二、问题查处过程 (一)为何不能识别到bogon (二)为何会出现bogon (三)能不能更改bogon (四)能识别其他host的名字 三、问题分析 四、问题解决 …...

emmet语法
一.html $排序 直接.dem或#two是默认div 内容可写{}里 二.css 直接写首字母 三.格式化 一次(右键格式化) 永久...

【PTA主观题】8-1 文件操作
题目要求 编写函数int input(FILE * fp),录入学生的信息,自定义录入结束方式,但至少包括学号、姓名、班级、分数和登录密码,并按照学号排序后以二进制方式存入stus.dat,函数返回学生数量;定义函数void enc…...

机器学习算法决策树
决策树的介绍 决策树是一种常见的分类模型,在金融风控、医疗辅助诊断等诸多行业具有较为广泛的应用。决策树的核心思想是基于树结构对数据进行划分,这种思想是人类处理问题时的本能方法。例如在婚恋市场中,女方通常会先询问男方是否有房产&a…...

ssh和sftp服务分离
目录 一、增加sftp的deamon二、增加sftp的service三、其他配套文件四、修改配置文件五、分别重启两个服务: 由于安全需要,客户这边想把sftp使用的端口与ssh使用的端口分开。 我们知道sftp没有自己的服务器守护进程,它需要依赖sshd守护进程来…...

Bootstrap学习三
Bootstrap学习三 文章目录 前言四、Bootstrap插件4.1. 插件概览4.1.1. data属性4.1.2. 编程方式的API4.1.3. 避免命名空间冲突4.1.4. 事件 4.2. 模态框4.2.1. 引入4.2.2. 基本结构4.2.3. 基本使用4.2.4. 触发模态框的方法 4.3. 下拉菜单和滚动监听4.3.1. 下拉菜单4.3.2. 滚动监…...

第77讲用户管理功能实现
用户管理功能实现 前端: views/user/index.vue <template><el-card><el-row :gutter"20" class"header"><el-col :span"7"><el-input placeholder"请输入用户昵称..." clearable v-model"…...

锐捷(十九)锐捷设备的接入安全
1、PC1的IP地址和mac地址做全局静态ARP绑定; 全局下:address-bind 192.168.1.1 mac(pc1) G0/2:ip verify source port-securityarp-check 2、PC2的IP地址和MAC地址做全局IPMAC绑定: Address-bind 192.168.1.2 0050.7966.6807Ad…...