selenium使用cookie实现免登录

有时候我们爬虫的网站需要验证码登录,一般这时我们不可能再使用账号密码登录这种方法了,而是把登录后cookie保存起来,比如保存在txt文件,然后再把cookie取出来直接登录

第一步

用账号密码模拟登录。拿到cookie,保存在txt文件,这个要注意,我们获取的cookie是字典格式,我们需要使用cookies = json.dumps(cookies)转换为字符串格式再保存入txt文件,至于原因,可以看这个廖雪峰老师的字符串和编码

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3)
driver.find_element("userName").send_keys("1356046")
driver.find_element("password").send_keys("x9122")
driver.find_element("linkText","登录").click()

cookies = driver.get_cookies()
print (type(cookies))
# print ("".join(cookies))
f1 = open('cookie.txt', 'w')
f1.write(json.dumps(cookies))
f1.close

然后到cookie.txt文件里看cookie格式是否正确,键值都是用双引号”“,如下
{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}
如果是
{u’a’: 1, u’c’: 3, u’b’: 2, u’e’: 5, u’d’: 4}
说明格式还没转好

第二步

然后又从文件取出cookie,因为取出的时候是字符串形式,然后通过cookie =json.loads(cookie)转为字典,因为取出的cookie,使用通过循环add到driver,然后刷新一下driver就可以了

f1 = open('cookie.txt')
cookie = f1.read()
cookie =json.loads(cookie)
for c in cookie:
    driver.add_cookie(c)
# # 刷新页面
driver.refresh()

猜你喜欢

转载自blog.csdn.net/jyxmust/article/details/79393135
今日推荐