requests模块系列三

5. 利用requests.session进行状态保持

requests模块中的Session类能够自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的。接下来我们就来学习它

5.1 requests.session的作用以及应用场景

  • requests.session的作用
    • 自动处理cookie,即 下一次请求会带上前一次的cookie
  • requests.session的应用场景
    • 自动处理连续的多次请求过程中产生的cookie

5.2 requests.session使用方法

session实例在请求了一个网站后,对方服务器设置在本地的cookie会保存在session中,下一次再使用session请求对方服务器的时候,会带上前一次的cookie

session = requests.session() # 实例化session对象
response = session.get(url, headers, ...)
response = session.post(url, data, ...)
  • session对象发送get或post请求的参数,与requests模块发送请求的参数完全一致

5.3 课堂测试

使用requests.session来完成github登陆,并获取需要登陆后才能访问的页面

5.3.1 提示
  1. 对github登陆以及访问登陆后才能访问的页面的整个完成过程进行抓包
  2. 确定登陆请求的url地址、请求方法和所需的请求参数
    • 部分请求参数在别的url对应的响应内容中,可以使用re模块获取
  3. 确定登陆后才能访问的页面的的url地址和请求方法
  4. 利用requests.session完成代码
5.3.2 参考代码
import requests
import re


# 构造请求头字典
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
}

# 实例化session对象
session = requests.session()

# 访问登陆页获取登陆请求所需参数
response = session.get('https://github.com/login', headers=headers)
authenticity_token = re.search('name="authenticity_token" value="(.*?)" />', response.text).group(1) # 使用正则获取登陆请求所需参数

# 构造登陆请求参数字典
data = {
    'commit': 'Sign in', # 固定值
    'utf8': '✓', # 固定值
    'authenticity_token': authenticity_token, # 该参数在登陆页的响应内容中
    'login': input('输入github账号:'),
    'password': input('输入github账号:')
}

# 发送登陆请求(无需关注本次请求的响应)
session.post('https://github.com/session', headers=headers, data=data)

# 打印需要登陆后才能访问的页面
response = session.get('https://github.com/1596930226', headers=headers)
print(response.text)

知识点:掌握 利用requests.session进行状态保持

36’,
}

实例化session对象

session = requests.session()

访问登陆页获取登陆请求所需参数

response = session.get(‘https://github.com/login’, headers=headers)
authenticity_token = re.search(‘name=“authenticity_token” value=“(.*?)” />’, response.text).group(1) # 使用正则获取登陆请求所需参数

构造登陆请求参数字典

data = {
‘commit’: ‘Sign in’, # 固定值
‘utf8’: ‘✓’, # 固定值
‘authenticity_token’: authenticity_token, # 该参数在登陆页的响应内容中
‘login’: input(‘输入github账号:’),
‘password’: input(‘输入github账号:’)
}

发送登陆请求(无需关注本次请求的响应)

session.post(‘https://github.com/session’, headers=headers, data=data)

打印需要登陆后才能访问的页面

response = session.get(‘https://github.com/1596930226’, headers=headers)
print(response.text)




----

##### 知识点:掌握 利用requests.session进行状态保持

----

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lucky-zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值