最近要爬取一家需要登录的网站,之前尝试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"
那么path
和domain
字段呢?不用着急,接着往下看
selenium
里提供有根据name
获取对应cookie_dict
的方法,
# 获取名为'XXSESSIONID'的cookie
driver.get_cookie('XXSESSIONID')
这样就能知道XXSESSIONID
对应cookie_dict
中domain
和path
字段的值了,从而构造出我们的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
来进行测试。