Python零基础之selenium进阶:自动登录qq空间
目标
- 通过selenium自动登录qq空间
- 获取cookie并保存成文件
- 通过requets加载headers实现自动登录qq空间
from selenium import webdriver
import time
import json
import requests
driver = webdriver.Chrome()
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=%E6%89%8B%E6%9C%BAQQ%E7%A9%BA%E9%97%B4&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=1')
time.sleep(2)
driver.find_element_by_class_name('face').click()
time.sleep(5)
print(driver.current_url)
cookies = driver.get_cookies()
json_Cookies = json.dumps(cookies)
with open('./result/qzone.json', 'w') as f:
f.write(json_Cookies)
with open('./result/qzone.json', 'r', encoding='utf-8') as f:
list_Cookies = json.loads(f.read())
cookie = [item['name'] + '=' + item['value'] for item in list_Cookies]
cookie_Str = ';'.join(item for item in cookie)
print(cookie_Str)
url = 'https://user.qzone.qq.com/8897723'
headers = {'cookie': cookie_Str,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}
html = requests.get(url, headers=headers)
print(html.text)
注意事项
- 程序执行前要登录一下自己的qq,这样第一个页面才有登录头像框可以点选.
- selenium自动测试访问的页面需要分析,从network中找到实际登录的页面地址
- 页面打开需要时间,设置好延时,避免未完全打开报错
- 对cookies的数据进行转换,利用json.dumps()实现lpython的ist转json的str
- 数据保存路径文件夹如果找不到,则在/前边加. ,即./
- 难点是利用列表推导式实现:到=的替换,并在cookie值之间增加分号;
- 利用requests,指定url和headers自动登录qq空间,并获取html代码