【 ⑪】requests库概述(GET和POST请求)

简介: 【 ⑪】requests库概述(GET和POST请求)

1 requests库简介

requests 是一个用于发送 HTTP 请求的流行 Python 库。它提供了简洁而直观的 API,使得与 Web 服务进行交互变得非常方便。requests 库可以完成多种 HTTP 请求操作,如发送 GET、POST、PUT、DELETE 等请求,设置请求头、处理响应以及会话管理等功能。

下面是 requests 库的一些主要特点和功能:

  • 简洁易用:requests 的 API 设计非常简单易懂,上手容易,使用它可以轻松地发送 HTTP 请求、处理响应等操作。
  • 支持多种请求方式:requests 支持发送多种类型的 HTTP 请求,包括 GET、POST、PUT、DELETE 等,并且支持自定义请求头、请求参数、请求体等。
  • 会话管理requests.Session 类提供了会话管理功能,可以在多个请求之间保持会话状态,例如保持登录状态、传递 cookie 等。
  • 强大的响应处理能力:requests 可以方便地处理各种类型的响应结果,包括文本、JSON、图片、文件等,还支持响应的编码和解码。
  • 完善的错误处理机制:requests 对网络请求中可能出现的异常情况进行了处理,如超时、连接错误等,同时提供了对 HTTP 错误状态码的处理功能。

与其他库一样,如需要安装requests库,使用一下命令即可

pip install requests

2 发送GET请求

使用 requests 库发送 GET 请求非常简单,只需要调用 requests.get() 方法,并传入目标 URL 即可。

import requests
# 发送 GET 请求
url = 'https://api.example.com/users'
response = requests.get(url)
# 检查响应状态码
if response.status_code == 200:
    # 获取响应内容(文本格式)
    content = response.text
    print(f'Response content: {content}')
else:
    print('Failed to retrieve data. Status code:', response.status_code)

在上述示例代码中,我们使用了 requests.get() 方法来发送 GET 请求,并指定目标 URL 为 'https://api.example.com/users'。接着,我们通过检查 response 对象的 status_code 属性来判断请求是否成功(200 表示成功)。如果成功,我们可以通过 response.text 来获取响应内容,并将其打印出来。如果请求失败,则打印相应的错误信息和状态码。

注意:在实际应用中,可能需要更多的参数来发送 GET 请求,例如请求头、请求参数等。requests 库提供了丰富的选项来满足不同场景的需求,可以根据具体情况进行相应的设置。


3 发送POST请求

使用 requests 库发送 POST 请求同样非常简单,需要调用 requests.post() 方法,并传入目标 URL 和请求数据即可。

import requests
# 发送 POST 请求
url = 'https://api.example.com/users'
data = {'name': 'John', 'age': 25}
response = requests.post(url, data=data)
# 检查响应状态码
if response.status_code == 200:
    # 获取响应内容(文本格式)
    content = response.text
    print(f'Response content: {content}')
else:
    print('Failed to submit data. Status code:', response.status_code)

在上述示例代码中,我们使用了 requests.post() 方法来发送 POST 请求,并指定目标 URL 为 'https://api.example.com/users'。其中,data 是一个字典,包含了需要发送给服务器的数据。

接下来,我们使用 response 对象的 status_code 属性来检查请求是否成功(200 表示成功)。如果成功,我们可以通过 response.text 来获取响应内容,并将其打印出来。如果请求失败,则打印相应的错误信息和状态码。


4 参数传递

在使用 requests 库发送请求时,你可以通过参数来传递额外的信息,例如请求头、请求参数、认证凭据等。

  1. headers:用于设置请求头,包含了请求的元数据信息,如 User-Agent、Content-Type 等。
  2. params:用于传递查询字符串参数,将参数附加到 URL 上。
  3. data:用于传递表单数据或请求体数据,常用于 POST 请求。
  4. json:用于传递 JSON 数据,常用于 POST 请求。
  5. auth:用于进行身份验证,支持多种验证方式,如基本身份验证 (Basic Authentication)、摘要身份验证 (Digest Authentication) 等。

示例代码

import requests
# 设置请求头
headers = {'User-Agent': 'Mozilla/5.0'}
url = 'https://api.example.com/users'
params = {'page': 1}
data = {'name': 'John', 'age': 25}
json_data = {'name': 'John', 'age': 25}
auth = ('username', 'password')
# 发送 GET 请求(带请求头和查询字符串参数)
response = requests.get(url, headers=headers, params=params)
# 发送 POST 请求(带请求头和表单数据)
response = requests.post(url, headers=headers, data=data)
# 发送 POST 请求(带请求头和 JSON 数据)
response = requests.post(url, headers=headers, json=json_data)
# 发送带身份验证的请求
response = requests.get(url, auth=auth)

在上述示例代码中,我们使用了不同的参数来发送请求。通过传递 headers 参数可以设置请求头,传递 params 参数可以将查询字符串参数附加到 URL 上,传递 data 参数可以传递表单数据或请求体数据,传递 json 参数可以传递 JSON 数据,传递 auth 参数可以进行身份验证。

另外,可以参考官方文档或库的文档来了解更多参数细节和使用方法。

相关文章
|
Python
python中的单引号、双引号和多引号
python中的单引号、双引号和多引号
1657 0
|
数据库 UED Python
1、基于python多进程+pyqt5开发流畅界面程序
使用python+pyqt5开发界面程序,利用多进程分离界面和任务执行功能,达到界面流畅不卡顿的要求。 本文程序示例:https://github.com/AlvinsFish/UiExample
2872 0
1、基于python多进程+pyqt5开发流畅界面程序
|
网络协议 Linux 数据库
|
4月前
|
前端开发 Java API
吃透 Spring 体系结构
本文深入剖析Spring框架的体系结构,围绕IOC(控制反转)和AOP(面向切面编程)两大核心思想,系统讲解了核心容器、AOP、数据访问与Web模块的原理及实战应用,并辨析了常见技术点差异,助力开发者掌握其设计精髓。
187 2
|
人工智能 开发者
通义千问三款主力模型再降价,最高降幅85%
通义千问三款主力模型再降价,最高降幅85%
5688 12
通义千问三款主力模型再降价,最高降幅85%
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
3788 0
|
机器学习/深度学习 文字识别 算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
7842 2
|
安全 API 开发者
Python中使用`requests`库进行请求头与自定义参数设置的技术详解
【4月更文挑战第12天】在Python中,`requests`库是一个强大且灵活的HTTP客户端,用于发送所有类型的HTTP请求。在发送请求时,我们经常需要设置请求头和自定义参数来满足不同的需求。本文将详细探讨如何在Python中使用`requests`库进行请求头和自定义参数的设置。
2196 0
|
监控 网络协议 Linux
网络管理:基本的网络配置与管理指南
网络管理:基本的网络配置与管理指南
738 2
|
SQL 关系型数据库 MySQL
MySQL数据库——多表查询(3)-自连接、联合查询、子查询
MySQL数据库——多表查询(3)-自连接、联合查询、子查询
1607 1