Python 的 requests
模块是一个强大且用户友好的 HTTP 库,用于发送 HTTP 请求和处理响应数据。无论是抓取网页内容、提交表单,还是与 API 进行交互,requests
模块都提供了简洁的接口和丰富的功能。本文将详细介绍如何使用 requests
模块获取数据,并包括一些常见的使用示例和最佳实践。
1. 导入 Requests 模块
在使用 requests
模块之前,需要先安装和导入它。可以通过以下命令安装:
pip install requests
安装完成后,可以在 Python 脚本中导入 requests
模块:
import requests
2. 发送 HTTP 请求
requests
模块提供了多种发送 HTTP 请求的方法,包括 get
、post
、put
、delete
等。最常用的是 get
方法,用于从服务器获取资源。以下是一个发送 GET 请求的示例:
response = requests.get('https://example.com')
3. 处理响应
发送请求后,可以通过响应对象 (response
) 获取服务器返回的数据。首先要检查请求是否成功:
if response.status_code == 200:
content = response.text
print(content)
else:
print(f"Failed to retrieve the webpage. Status code: {response.status_code}")
在上面的示例中,response.status_code
返回 HTTP 状态码,如果状态码为 200,表示请求成功。response.text
返回响应内容的文本。
4. 处理 JSON 数据
如果服务器返回 JSON 数据,可以使用 response.json()
方法将响应内容解析为 Python 字典:
response = requests.get('https://api.example.com/data')
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Failed to retrieve the data. Status code: {response.status_code}")
5. 发送 POST 请求
使用 requests.post
方法可以发送 POST 请求,通常用于提交表单数据或发送 JSON 数据:
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://example.com/post', data=payload)
if response.status_code == 200:
content = response.text
print(content)
else:
print(f"Failed to send the POST request. Status code: {response.status_code}")
6. 添加请求头
有时需要在请求中添加自定义头信息,例如模拟浏览器请求。可以使用 headers
参数:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get('https://example.com', headers=headers)
if response.status_code == 200:
content = response.text
print(content)
else:
print(f"Failed to retrieve the webpage. Status code: {response.status_code}")
7. 处理 Cookies
如果需要处理 Cookies,可以使用 requests.Session
对象,这样可以在多个请求之间保持会话状态:
session = requests.Session()
response = session.get('https://example.com')
if response.status_code == 200:
content = response.text
print(content)
else:
print(f"Failed to retrieve the webpage. Status code: {response.status_code}")
session.close()
8. 错误处理
在网络请求中,错误处理非常重要。requests
模块提供了多种异常类型来处理不同的错误情况:
try:
response = requests.get('https://example.com', timeout=10)
response.raise_for_status() # 如果响应状态码不是 200,会抛出 HTTPError 异常
content = response.text
print(content)
except requests.exceptions.RequestException as e:
print(f"An error occurred: {e}")
结论
requests
模块是 Python 处理 HTTP 请求的强大工具。通过它可以轻松地发送各种 HTTP 请求并处理响应数据。无论是简单的 GET 请求,还是复杂的 POST 请求、处理 JSON 数据、设置请求头、处理 Cookies 和错误处理,requests
模块都提供了简洁而灵活的接口。希望本文能够帮助你更好地理解和使用 requests
模块来获取和处理数据。