python 爬虫 1-1( requests.session()会话保持/模拟登录状态 )

写在前面

在某些网站抓取,或者app抓取时,有的时强制登陆,有的是不登陆返回的数据就是假的或者说是不完整的数据,这时就需要用到保持会话的功能

1、requests.session简单例子

参考源:https://www.cnblogs.com/qican/p/11153824.html

requests库的session对象能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies
在这里插入图片描述
代码

import requests
s = requests.Session()
s.get('https://httpbin.org/get')

requests.Session().get()和requests.get(),除了前者能传递cookie参数以外,其他的一致

2、模拟百度登录

首先我们打开百度,查看登录后百度账号的cookies值,经过观察发现是由”BAIDUID“和"BDUSS"记录登录状态
在这里插入图片描述
在这里插入图片描述
在网页里面登录后,复制”BAIDUID“和"BDUSS"这两个参数的值

# coding:utf-8
import requests
# 保持登录状态
s = requests.session()
url = 'https://www.baidu.com/'
# 请求头
headers = {
     "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"
}
r = s.post(url,headers=headers)
# 查看的cookies值
cooks = {
    "BDUSS":"xxxxxxx",
    "BAIDUID":"XXXXXXXX"
}
# 添加登录所携带的cookies
c = requests.cookies.RequestsCookieJar()
c.set("BDUSS",cooks["BDUSS"])
c.set("BAIDUID",cooks["BAIDUID"])
s.cookies.update(c)
# 判断是否登录成功
r2 = s.get(url,headers=headers)
if '换肤' in r2.text:
    print('登录成功')
else:
    print("登录失败")



### 运行结果:登录成功

这里为什么要if ‘换肤’在r2里,因为登录前页面代码里是没有这个词的,登录后才有

登录前:
在这里插入图片描述
登陆后:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值