转载  selenium使用cookie实现免登录

分类: 2018-11-03T15:36:51    13人阅读   

有时候我们爬虫的网站需要验证码登录,一般这时我们不可能再使用账号密码登录这种方法了,而是把登录后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()  


分享到: