python+selenium给webdriver添加cookie

最近要爬取一家需要登录的网站,之前尝试cookie替换一直不成功,今天通过搜索网上的资料终于成功了。话不多说,直接上干货。

1. 判断cookie中起作用的字段

登录目标网站,打开谷歌浏览器F12调试器,可以发现cookie里面有很多字段,你要找到起作用的那一个,一般是(XX)SESSIONID字样的字段。

2. 构造cookie_dict

注意: 对cookie的操作一定要在driver.get()方法后。
cookie_dict起作用的一般是如下字段

{
    'domain': '', 
    'path': '', 
    'name': '',
    'value': ''
}  

所以需要对上面字段进行设置,在之前第1步中会获取到cookie的字符串,假设你获得的cookie字符串为"XXSESSIONID=sadasda", 则
'name'对应 "XXSESSIONID"
'value' 对应 "sadasda"
那么pathdomain字段呢?不用着急,接着往下看
selenium里提供有根据name获取对应cookie_dict的方法,

# 获取名为'XXSESSIONID'的cookie
driver.get_cookie('XXSESSIONID')

这样就能知道XXSESSIONID对应cookie_dictdomainpath字段的值了,从而构造出我们的cookie_dict

3. 替换cookie_dict

既然我们已经知道哪个cookie字段起作用,我们就替换掉它。分为下面3步:

# 1.删除名为'XXSESSIONID'对应的cookie_dict
driver.delete_cookie('XXSESSIONID')
# 2.添加我们构造的cookie_dict, cookie_dict由第2步方法构造所得
driver.add_cookie(cookie_dict)
# 3.刷新页面
driver.refresh()

刷新页面操作后就能看到模拟登陆是否成功,建议使用chromedriver来进行测试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,663评论 4 16
  • HTTP cookie(也称为web cookie,网络cookie,浏览器cookie或者简称cookie)是网...
    留七七阅读 18,227评论 2 71
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,293评论 19 139
  • 转载,觉得这篇写 SQLAlchemy Core,写得非常不错。不过后续他没写SQLAlchemy ORM... ...
    非梦nj阅读 10,816评论 1 14
  • 近日,看完了小森林,影片讲述了主人公市子无法适应都市生活,回到了儿时和母亲共同生活的地方——小森村,进入淳朴的乡村...
    鸣er_阅读 4,578评论 5 7