如何使用 Python 的 HTTP 请求库

requests 库是一个流行的 Python 模块,它简化了发出 HTTP 请求的过程。它抽象了处理请求和响应的复杂性,使与 Web 服务和 API 的交互变得更加容易。在本文中,我们将探讨使用 requests 库的基础知识,包括如何发送各种类型的 HTTP 请求和处理响应。

安装请求库

在使用 requests 库之前,您需要先安装它。您可以使用 Python 包管理器 pip 来安装它。在终端中运行以下命令:

pip install requests

发出简单的 GET 请求

最基本的 HTTP 请求是 GET 请求,它从服务器检索数据。以下是使用 requests 库发出 GET 请求的方法:

import requests

response = requests.get('https://api.github.com')
print(response.status_code)
print(response.json())

在这个例子中,我们向 GitHub API 发送一个 GET 请求,并以 JSON 格式打印 HTTP 状态代码和响应内容。

发送 POST 请求

POST 请求用于将数据发送到服务器,例如表单提交。以下是使用 requests 库发送 POST 请求的方法:

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.status_code)
print(response.json())

在这个例子中,我们向 httpbin.org 测试服务发送一个包含一些表单数据的 POST 请求,并打印响应状态代码和内容。

处理查询参数

有时您需要在请求中包含查询参数。 requests 库允许您以字典形式传递参数,从而使此操作变得简单:

import requests

params = {'search': 'python', 'page': 1}
response = requests.get('https://httpbin.org/get', params=params)
print(response.status_code)
print(response.url)

在此示例中,我们在 GET 请求中包含查询参数,并打印包含参数的最终 URL。

使用标题

您可能需要在请求中包含自定义标头,例如用于身份验证或指定内容类型。以下是向请求添加标头的方法:

import requests

headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://api.github.com/user', headers=headers)
print(response.status_code)
print(response.json())

在这个例子中,我们在对 GitHub API 的请求中包含一个授权标头,并打印状态代码和响应内容。

处理超时和异常

处理网络超时和其他异常等潜在问题非常重要。h2requestsh3 库允许您指定超时和捕获异常:

import requests
from requests.exceptions import RequestException

try:
    response = requests.get('https://httpbin.org/delay/5', timeout=3)
    response.raise_for_status()
    print(response.status_code)
    print(response.text)
except RequestException as e:
    print(f'An error occurred: {e}')

在这个例子中,我们为请求设置了一个超时并捕获发生的任何异常,如果出现问题则打印错误消息。

结论

requests 库是一款功能强大且用户友好的 Python HTTP 请求工具。无论您是从 API 检索数据、发送表单提交还是处理自定义标头,requests 库都可以让您仅用几行代码轻松执行这些任务。通过掌握本文介绍的基础知识,您将能够在 Python 项目中与 Web 服务和 API 进行交互。