这几天一直想搞明白cookie的爬虫使用,结果从昨天晚上开始试验,selenium获取的cookie怎么也无法实现直接登录,气的想打人。在刚才终于发现一些问题,在和浏览器中的cookie对比发现格式不一样,然后对着他进行格式改变,结果终于成功了,现在以一个模拟登录扣扣空间的例子:
这是模拟点击登录扣扣空间
我请求的这个网址是在分析的时候发现的,发现登录二维码是在一个这样的页面里,这样就很容易的点击进入空间
from selenium import webdriver import time import json
driver.get( "https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=手机QQ空间&pt_qr_link=http%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http%3A//z.qzone.com/download.html&pt_no_auth=0") button=driver.find_element_by_class_name("face") # print(button) button.click() time.sleep(5) print(driver.current_url) text=driver.page_source cookie = driver.get_cookies() print(cookie) jsonCookies = json.dumps(cookie) with open('qqhomepage.json', 'w') as f: f.write(jsonCookies)
这样就将获取的cookie保存到文件里了,接下来我们来整理cookie,将至整理为我们需要的格式
import json str='' with open('qqhomepage.json','r',encoding='utf-8') as f: listCookies=json.loads(f.read()) cookie = [item["name"] + "=" + item["value"] for item in listCookies] cookiestr = '; '.join(item for item in cookie) print(cookiestr)
这里我们就获得了需要的cookie值
特别注意:
我就是栽倒在这里的cookie格式里面;
每一句‘name’+'value'后面都要加分号和空格,格式不正确不能使用,牢记牢记
最后我们来验证获取的cookie是否能用;
import requests url='https://user.qzone.qq.com/1329818994' headers={ 'cookie':cookiestr, 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36' } html=requests.get(url=url,headers=headers) print(html.text)
这里的cookie设置为你从文件里读取的cookie