Python的requests库详细介绍

2024-08-30 20:44
文章标签 python 介绍 详细 requests

本文主要是介绍Python的requests库详细介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python requests 库是一个用于发送 HTTP 请求的简单而强大的库,它可以让你轻松地在 Python 中处理 HTTP 请求。这个库是 Python中处理 HTTP 请求的标准工具,因其简洁的 API 和强大的功能而广受欢迎。

1. 安装 requests

pip install requests

2. 基本用法

2.1 导入库

import requests

2.2 发送 GET 请求

GET 请求用于从服务器获取数据。最简单的方式是调用 requests.get() 方法。

response = requests.get('https://jsonplaceholder.typicode.com/posts/1')

2.3 发送 POST 请求

POST 请求用于向服务器发送数据。通常用于提交表单或上传数据。

response = requests.post('https://jsonplaceholder.typicode.com/posts', data={'title': 'foo', 'body': 'bar', 'userId': 1})

3. 请求参数

3.1 URL 参数

可以通过 params 参数向 URL 添加查询字符串参数。

params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params)

这会生成 URL:https://jsonplaceholder.typicode.com/posts?key1=value1&key2=value2

3.2 请求头

使用 headers 参数自定义请求头。

headers = {'User-Agent': 'my-app/0.0.1'}
response = requests.get('https://jsonplaceholder.typicode.com/posts', headers=headers)

3.3 POST 请求中的数据

对于 POST 请求,可以通过 data 或 json 参数发送数据。

  • data 参数用于发送表单数据(application/x-www-form-urlencoded 格式):
response = requests.post('https://jsonplaceholder.typicode.com/posts', data={'key': 'value'})
  • json 参数用于发送 JSON 格式的数据:
response = requests.post('https://jsonplaceholder.typicode.com/posts', json={'key': 'value'})

3.4 上传文件

可以使用 files 参数上传文件。

files = {'file': open('report.txt', 'rb')}
response = requests.post('https://jsonplaceholder.typicode.com/upload', files=files)

4. 响应处理

requests 库返回的 response 对象包含了服务器响应的所有信息。

4.1 访问响应内容

  • 文本内容:使用 response.text 获取响应的文本内容。
print(response.text)
  • JSON 内容:使用 response.json() 解析 JSON 响应。
json_data = response.json()
  • 二进制内容:使用 response.content 获取二进制内容(如图片、文件)。
with open('image.png', 'wb') as f:f.write(response.content)

4.2 访问响应状态

  • 状态码:response.status_code 返回 HTTP 状态码。
if response.status_code == 200:print('Success!')
else:print('Error:', response.status_code)
  • 响应头:response.headers 返回响应头信息。
print(response.headers)

5. 超时和重试

5.1 超时设置

通过 timeout 参数设置请求的超时时间(单位:秒)。

response = requests.get('https://jsonplaceholder.typicode.com/posts', timeout=5)

5.2 请求重试

requests 库没有内建的重试机制,但可以通过 requests.adapters.HTTPAdapter 实现自动重试。

from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retrysession = requests.Session()
retries = Retry(total=5, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retries)
session.mount('http://', adapter)
session.mount('https://', adapter)response = session.get('https://jsonplaceholder.typicode.com/posts')

6. 会话对象

使用 requests.Session() 可以在多次请求之间共享会话信息(如 Cookies、headers)。

session = requests.Session()
session.get('https://jsonplaceholder.typicode.com/cookies/set/sessioncookie/123456789')
response = session.get('https://jsonplaceholder.typicode.com/cookies')

7. 身份验证

7.1 基本身份验证

可以通过 auth 参数进行基本身份验证。

from requests.auth import HTTPBasicAuth
response = requests.get('https://jsonplaceholder.typicode.com/basic-auth/user/pass', auth=HTTPBasicAuth('user', 'pass'))

7.2 Token 身份验证

对于 Token 验证,可以在请求头中添加 Authorization

headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
response = requests.get('https://jsonplaceholder.typicode.com/protected', headers=headers)

8. 代理支持

使用 proxies 参数可以为请求设置代理。

proxies = {'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:1080',
}
response = requests.get('https://jsonplaceholder.typicode.com', proxies=proxies)

9. SSL 证书验证

requests 默认会验证 SSL 证书。可以通过 verify 参数禁用证书验证(不推荐)。

response = requests.get('https://jsonplaceholder.typicode.com', verify=False)

10. 流式请求

对于大文件,可以使用流式请求来逐步读取响应数据。

response = requests.get('https://jsonplaceholder.typicode.com/large-file', stream=True)
with open('large_file.zip', 'wb') as f:for chunk in response.iter_content(chunk_size=8192):if chunk:f.write(chunk)

11. 错误处理

requests 库会在遇到某些严重错误时抛出异常,如连接失败、超时等。常见的异常包括:

  • requests.exceptions.RequestException
  • requests.exceptions.HTTPError
  • requests.exceptions.ConnectionError
  • requests.exceptions.Timeout
    可以通过 try-except 结构来捕获这些异常并进行处理。
try:response = requests.get('https://jsonplaceholder.typicode.com/posts')response.raise_for_status()
except requests.exceptions.HTTPError as errh:print ("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:print ("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:print ("Timeout Error:", errt)
except requests.exceptions.RequestException as err:print ("OOps: Something Else", err)

12. 自定义适配器

可以创建自定义适配器以实现更复杂的请求行为。例如,实现特定的重试逻辑或日志记录。

总结

requests 库是一种简洁、强大且易于使用的工具,用于处理 HTTP 请求。无论是基本的 GETPOST 请求,还是复杂的身份验证、会话保持和流式处理,requests 都能够很好地胜任。如果你经常处理 HTTP 请求,那么熟练掌握 requests 库将大大提高你的开发效率。

这篇关于Python的requests库详细介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121880

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现