掌握Session会话保持和POST请求
课程位置:08.爬取学习资料.pdf - 8.2 Session会话保持、8.3 POST请求
核心方法:
session = requests.Session() - 创建会话对象session.post(url, data=data) - 发送POST请求session.get(url) - 使用会话发送GET请求请使用代码模拟登录,账号:admin,密码:admin123
完整的登录和访问流程
import requests
# 创建Session对象
session = requests.Session()
# 步骤1:发送POST请求登录
login_url = 'https://req.haleibc.com/practice10'
login_data = {
'username': 'admin',
'password': 'admin123'
}
response = session.post(login_url, data=login_data)
print("登录响应:", response.status_code)
# 步骤2:访问需要登录的页面(Session自动携带Cookie)
dashboard_url = 'https://req.haleibc.com/practice10/dashboard'
response = session.get(dashboard_url)
if response.status_code == 200:
data = response.json()
print("仪表板数据:", data)
else:
print("访问失败:", response.json())
# 步骤3:退出登录
logout_url = 'https://req.haleibc.com/practice10/logout'
response = session.get(logout_url)
print("退出登录:", response.json())
不使用Session的对比
import requests
# 不使用Session,每次请求都是独立的
login_url = 'https://req.haleibc.com/practice10'
login_data = {'username': 'admin', 'password': 'admin123'}
response = requests.post(login_url, data=login_data)
# 这次请求不会携带登录的Cookie,会失败
dashboard_url = 'https://req.haleibc.com/practice10/dashboard'
response = requests.get(dashboard_url)
print(response.status_code) # 403 Forbidden
1. 创建Session对象
2. 使用POST请求登录(用户名:admin,密码:admin123)
3. 使用Session访问/practice10/dashboard接口
4. 提取仪表板数据并打印
5. 调用退出登录接口
6. 对比使用Session和不使用Session的区别
session.headers.update(headers)