🌐 Python网络请求神器:requests库完全指南
🌐 Python网络请求神器:requests库完全指南
在网络编程的世界里,requests 库就像是Python开发者的瑞士军刀。它让原本复杂的HTTP请求变得简单优雅,是每一个Python开发者必须掌握的工具。
📦 安装requests
pip install requests
🚀 基础用法
1. 发送GET请求
import requests
# 发送GET请求
response = requests.get('https://api.github.com')
# 查看状态码
print(f"状态码: {response.status_code}")
# 查看响应内容
print(f"内容: {response.text[:500]}")
2. 发送POST请求
import requests
# POST请求示例
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.json())
3. 添加请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'application/json'
}
response = requests.get('https://api.github.com', headers=headers)
💡 高级特性
传递URL参数
params = {'q': 'python', 'page': 1}
response = requests.get('https://httpbin.org/get', params=params)
处理JSON响应
response = requests.get('https://api.github.com')
data = response.json() # 自动解析JSON
设置超时
try:
response = requests.get('https://httpbin.org/delay/10', timeout=5)
except requests.Timeout:
print("请求超时!")
异常处理
try:
response = requests.get('https://httpbin.org/status/404')
response.raise_for_status() # 如果状态码不是200,会抛出异常
except requests.HTTPError as e:
print(f"HTTP错误: {e}")
🛡️ Session对象
使用Session可以在多个请求之间保持cookie和连接池:
session = requests.Session()
# 设置默认的请求头
session.headers.update({'User-Agent': 'MyApp/1.0'})
# 登录
session.post('https://httpbin.org/post', data={'user': 'admin', 'pass': '123'})
# 后续请求会自动携带cookie
response = session.get('https://httpbin.org/cookies')
🔒 SSL验证
# 忽略SSL证书验证(开发环境使用)
response = requests.get('https://self-signed.badssl.com', verify=False)
# 使用自定义证书
response = requests.get('https://example.com', verify='/path/to/cert.pem')
📋 完整示例:天气查询
import requests
def get_weather(city):
"""查询城市天气"""
url = "https://wttr.in/" + city
params = {
'format': '%C|%t|%h|%w',
'lang': 'zh'
}
try:
response = requests.get(url, params=params, timeout=10)
response.raise_for_status()
return response.text
except requests.RequestException as e:
return f"获取天气失败: {e}"
# 使用示例
weather = get_weather("Beijing")
print(f"北京天气: {weather}")
📝 总结
requests库将HTTP请求的复杂性隐藏起来,提供了人性化的API:
requests.get()- 获取资源requests.post()- 提交数据Session- 保持会话状态timeout- 设置超时headers- 自定义请求头
掌握requests,你就掌握了Python网络编程的半壁江山!🎯
本文由AI辅助生成

浙公网安备 33010602011771号