Python Requests 最全使用指南
Python 的 requests
库是一个强大的 HTTP 请求库,它简化了与网页交互的过程,使得发送 HTTP 请求变得更加简单和直观。本文将详细介绍 requests
库的使用,包括基本的 GET 和 POST 请求、请求头、参数、处理响应等高级用法,提供一系列代码示例。
安装 Requests 库
在使用 requests
之前,需要先确保安装了这个库。可以通过以下命令进行安装:
pip install requests
基本用法
1. GET 请求
最常见的请求方式是 GET 请求。以下是一个简单的示例,演示如何使用 requests
发起一个 GET 请求:
import requests
response = requests.get('https://httpbin.org/get')
print(response.status_code) # 打印响应状态码
print(response.json()) # 打印 JSON 格式的响应内容
2. POST 请求
与 GET 请求相对的是 POST 请求,它通常用于提交数据。下面的示例演示如何发送 POST 请求:
import requests
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.status_code)
print(response.json())
3. 添加请求头
在某些情况下,你可能需要添加自定义请求头,例如用户代理、认证信息等。可以使用 headers
参数来实现:
import requests
headers = {
'User-Agent': 'my-app',
'Authorization': 'Bearer YOUR_TOKEN'
}
response = requests.get('https://httpbin.org/headers', headers=headers)
print(response.json())
4. URL 参数
当需要向请求中添加 URL 查询参数时,可以使用 params
参数。例如:
import requests
params = {'param1': 'value1', 'param2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)
print(response.url) # 打印完整的请求 URL
print(response.json())
5. 超时设置
有时请求需要设置超时时间,以防止长时间等待。可以通过 timeout
参数设置超时时间(单位为秒):
import requests
try:
response = requests.get('https://httpbin.org/delay/5', timeout=2)
except requests.Timeout:
print("请求超时!")
6. 处理响应
requests
提供了多种处理响应的方式,包括获取文本、JSON 数据、二进制内容等。下面是一些示例:
response = requests.get('https://httpbin.org/get')
# 获取响应文本
print(response.text)
# 获取 JSON 数据
print(response.json())
# 获取二进制内容(例如图像)
# binary_content = response.content
7. 错误处理
在发送请求时,可能会遇到各种错误。requests
提供了 raise_for_status()
方法来处理这些情况:
import requests
try:
response = requests.get('https://httpbin.org/status/404')
response.raise_for_status() # 如果响应状态码不是 200,将引发异常
except requests.HTTPError as e:
print(f"HTTP 错误: {e}")
8. 会话保持
为了在多个请求中保持某些参数或信息,可以使用 requests.Session()
来创建会话对象。它会自动保存 cookies 和一些参数:
import requests
session = requests.Session()
session.headers.update({'User-Agent': 'my-app'})
# 第一次请求
response1 = session.get('https://httpbin.org/headers')
print(response1.json())
# 第二次请求仍然使用相同的会话
response2 = session.get('https://httpbin.org/cookies')
print(response2.json())
总结
Python 的 requests
库提供了一个简单且强大的接口来处理 HTTP 请求。通过上述示例,我们介绍了 GET 和 POST 请求、请求头、参数传递、响应处理和错误处理等基础用法。希望这篇文章能帮助你更好地理解和使用 requests
库进行网络请求。无论是构建爬虫、API 调用,还是进行数据交互,requests
都是一个不可或缺的工具。