requests
是 Python 中一个非常流行的 HTTP 库,用于发送 HTTP/1.1 请求。它简单易用,同时功能强大,可以处理各种常见的 HTTP 请求场景。
requests
的架构相对简单,主要基于 Python 的 urllib3
库。它提供了一个高层级的 API,让用户可以轻松地发送请求、处理响应和异常。
requests
默认使用 urllib3
的适配器。下面是一个使用 requests
的简单示例。
import requests
# 发送一个 GET 请求
response = requests.get('https://www.example.com') # 示例域名,实际中替换
# 检查响应状态码
if response.status_code == 200:
print('成功获取内容')
else:
print('请求失败,状态码:', response.status_code)
# 打印响应内容
print(response.text)
# 发送一个带参数的 GET 请求
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://www.example.com', params=params) # 示例域名,实际中替换
# 发送一个 POST 请求
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.example.com/post', data=data) # 示例域名,实际中替换
# 发送一个带有自定义头的请求
headers = {'User-Agent': 'my-app'}
response = requests.get('https://www.example.com', headers=headers)
# 使用 Session 对象
with requests.Session() as session:
session.get('https://www.example.com')
# 在会话中保持 cookies 和其他参数
在这个例子中,我们首先发送了一个 GET 请求,然后检查了状态码,并打印了响应内容。接着,我们展示了如何发送带参数的 GET 请求和 POST 请求,以及如何设置自定义请求头。最后,我们展示了如何使用 Session
对象来保持会话。
requests
库中定义了几种异常,用于处理可能出现的 HTTP 请求错误。
from requests.exceptions import HTTPError, ConnectionError, Timeout, RequestException
try:
response = requests.get('https://www.example.com', timeout=5)
response.raise_for_status()
except HTTPError as http_err:
print(f'HTTP error occurred: {http_err}')
except ConnectionError as conn_err:
print(f'Connection error occurred: {conn_err}')
except Timeout as timeout_err:
print(f'Timeout error occurred: {timeout_err}')
except RequestException as req_err:
print(f'An error occurred: {req_err}')
在这个例子中,我们使用了 try-except
块来捕获和处理可能出现的异常。
希望这个解释能帮助你更好地理解 requests
库的架构和用法。
请注意,由于 https://www.example.com 是一个示例域名,实际使用时需要替换为真实的网页 URL