关于selenium如何免登录(爬虫)

想法:

先使用selenium打开网页后,手动进行一次登录,此时浏览器通过cookie保存了我们的登录信息,然后get_cookies()获取当前的cookies。
这时候的cookies数据是保存在内存里面,如果需要之后的使用,就需要将cookies保存在本地,使用的是json.dumps()进行保存。
保存之后后期需要使用cookies,则使用json.loads()转为字典,然后使用add_cookies()加载网页cookies。达到免登录的目的。

以百度为例

源码:

获取并保存cookies

	from selenium import webdriver
	import json,time
	d.webdriver.Chrome()
	d.get('http://baidu.com')
	time.sleep(2)
	input('输入任意继续...')						#此时在浏览器里面手动登录
	cookies = d.get_cookies()
	jsoncookies = json.dumps(cookies)			#转为json
	with open('cookies','w') as f:
		f.write(jsoncookies)					#将内存数据写入磁盘
	d.close()									#关闭并释放内存是个好习惯

加载本地cookies至浏览器

	from selenium import webdriver
	import json,time
	d.webdriver.Chrome()
	d.get('http://baidu.com')
	time.sleep(2)
	d.delete_all_cookies()						#删除当前所有cookie
	with open('cookies' ,'r' ,encoding = 'utf-8') as f:
		listcookies = json.loads(f.read())		#读取磁盘文件保存的cookie数据
	
	for cookie in listcookies:					#添加cookie
		d.add_cookies({			
			'domain': '.baidu.com', 		 	#注:此处baidu.com前,需要带点
       		'name': cookie['name'],
        	'value': cookie['value'],
        	'path': '/',
        	'expires': None
		})
		
	d.get('http://biadu.com')					#刷新网页,查看是否cookie添加成功
	time.sleep(10)
	d.close()									#关闭浏览器

你可能感兴趣的:(提升自己)