Python requests 模块代码演示
requests 是 Python 中一个简单易用的 HTTP 库,用于发送各种 HTTP 请求。下面是一些常见的使用示例:
1. 基本 GET 请求
import requests# 发送 GET 请求
response = requests.get('https://api.github.com')# 检查请求是否成功 (状态码 200)
if response.status_code == 200:print('请求成功!')print('响应内容:', response.text[:200]) # 打印前200个字符
else:print('请求失败,状态码:', response.status_code)
2. 带参数的 GET 请求
import requests# 定义查询参数
params = {'q': 'python','sort': 'stars','order': 'desc'
}# 发送带参数的 GET 请求
response = requests.get('https://api.github.com/search/repositories', params=params)# 解析 JSON 响应
if response.status_code == 200:data = response.json()print(f"找到 {data['total_count']} 个仓库")print("前几个仓库:")for repo in data['items'][:3]:print(f"- {repo['name']} ({repo['stargazers_count']} 星)")
3. POST 请求
import requests
import json# 要发送的数据
data = {'name': 'John Doe','email': 'john@example.com'
}# 发送 POST 请求
response = requests.post('https://httpbin.org/post',data=json.dumps(data), # 将字典转换为JSON字符串headers={'Content-Type': 'application/json'}
)# 检查响应
if response.status_code == 200:print('POST 请求成功!')print('响应数据:', response.json())
4. 处理响应
import requestsresponse = requests.get('https://api.github.com/events')# 不同的响应属性
print("状态码:", response.status_code)
print("响应头:", response.headers['Content-Type'])
print("编码:", response.encoding)
print("文本内容:", response.text[:100]) # 文本格式
print("JSON内容:", response.json()[0]) # 如果响应是JSON格式
5. 错误处理
import requests
from requests.exceptions import RequestExceptiontry:response = requests.get('https://api.github.com/nonexistent', timeout=5)response.raise_for_status() # 如果请求失败会抛出异常
except RequestException as e:print(f"请求发生错误: {e}")
else:print("请求成功!")
6. 会话对象 (保持会话)
import requests# 创建会话对象
session = requests.Session()# 设置会话级别的默认值
session.headers.update({'User-Agent': 'MyApp/1.0'})# 第一次请求 - 会设置cookie
response1 = session.get('https://httpbin.org/cookies/set/sessionid/12345')# 第二次请求 - 会自动携带之前的cookie
response2 = session.get('https://httpbin.org/cookies')print(response2.text)
7. 文件上传
import requestsurl = 'https://httpbin.org/post'
files = {'file': open('example.txt', 'rb')}response = requests.post(url, files=files)
print(response.text)
8. 基本认证
import requests
from requests.auth import HTTPBasicAuthresponse = requests.get('https://api.github.com/user',auth=HTTPBasicAuth('username', 'password')
)# 或者简写为:
# response = requests.get('https://api.github.com/user', auth=('username', 'password'))print(response.status_code)
9. 超时设置
import requeststry:# 设置连接和读取超时为5秒response = requests.get('https://api.github.com', timeout=5)print("请求在超时前完成")
except requests.exceptions.Timeout:print("请求超时")
10. 代理设置
import requestsproxies = {'http': 'http://10.10.1.10:3128','https': 'http://10.10.1.10:1080',
}response = requests.get('https://api.github.com', proxies=proxies)
print(response.status_code)
这些示例涵盖了 requests 模块的最常用功能。requests 的 API 设计非常直观,使得发送 HTTP 请求变得非常简单。