在用selenium爬取网页的时候,有时候需要登陆,这时候用selenium获取cookie和携带cookie是很方便的,获取cookie可以通过内置的函数get_cookies(),它得到的是一组cookie,是由cookie组成的列表。单个的cookie是字典组成的,所有get_cookies()返回值是由字典组成的列表。
1
2
3
4
5
|
dictCookies = browser.get_cookies() jsonCookies = json.dumps(dictCookies) # print(jsonCookies) with open ( 'anquan.txt' , 'w' ) as f: f.write(jsonCookies) |
注意:这个jsonCookies是一个列表,是一个完整的cookie。
1
2
3
4
|
{ 'name' : 'QCARJSESSIONID' , 'value' : 'BBmPcsfClCknfQX1cN2MLMgKXZGtFWqsBvjN9mbM9tmbL38hMmw4!1426878101' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : True} { 'name' : 'BIGipServercar_qcar_poool' , 'value' : '1191316140.16671.0000' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : False} { 'name' : 'chinainsuranceJSESSIONID' , 'value' : 'rkgncsfG8pnrhh8x1CvNy46zHplyLkTjyv1LL2hk4wDrkD9Mjz9Y!2078734058' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : True} { 'name' : 'BIGipServercar_core_pool' , 'value' : '1191316140.17951.0000' , 'path' : '/' , 'domain' : 'qcar.apiins.com' , 'secure' : False, 'httpOnly' : False} |
这样就获取到了cookie,那么如何使用呢,我们让浏览器对象携带cookies就行了,这时候用另外一个函数add_cookie()
1
2
3
4
5
6
7
8
|
with open ( 'anquan.txt' , 'r' , encoding = 'utf8' ) as f: listCookies = json.loads(f.read()) print ( '%%%%%%%%%%%%%%%%%' , listCookies) for cookie in listCookies: obj.add_cookie(cookie) obj.get( 'https://qcar.apiins.com/qcar' ) # 读取完cookie刷新页面 obj.refresh() |
这样,我们就可以携带cookie,实现免登陆。有人说,你直接登陆不就完事了吗?有些应用场景还是用的到的,比如说验证码识别率不高,比如监视爬虫,定时爬虫,要求五分钟爬一次,两分钟爬一次,每次登陆会很麻烦。这个时候我们可以分开,一个专门登陆抓取cookie,30分钟更新一次cookie文件。另外一个读取cookie文件就ok了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/chaojiyingxiong/p/10210707.html