Python零基础之selenium进阶:自动登录qq空间

Python零基础之selenium进阶:自动登录qq空间

目标

  1. 通过selenium自动登录qq空间
  2. 获取cookie并保存成文件
  3. 通过requets加载headers实现自动登录qq空间
# !/usr/bin/python
# Filename: selenium登录qq空间.py
# Data    : 2020/08/07
# Author  : --king--
# ctrl+alt+L自动加空格格式化


from selenium import webdriver
import time
import json
import requests

driver = webdriver.Chrome()

# 通过network发现i.qq.com跳转到了另一个url
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)
# 检查url,看登陆后的url是否为正确的url
print(driver.current_url)

cookies = driver.get_cookies()
# 返回的是cookie列表
# print(type(cookies))
# for cookie in cookies:
#     # 每个cookie都是以字典格式保存
#     print(cookie)
#     print('-' * 50)

# 如何通过cookie模拟登录
# 通过json.dumps()把python数据结构转化为json数据,从而提交
json_Cookies = json.dumps(cookies)
# 转换后python的list编程了json的str
# print(type(json_Cookies))
# print(json_Cookies)

# 保存json_Cookies到result目录
with open('./result/qzone.json', 'w') as f:
    f.write(json_Cookies)

# 处理qzone.json里的数据格式
# 读取文件
with open('./result/qzone.json', 'r', encoding='utf-8') as f:
    # 把json文件的内容的格式转换成python格式
    list_Cookies = json.loads(f.read())

# 用列表推导式把list_Cookies的字典:转换为=,与浏览器中保持一致
# 主要处理了'name'对应的cookie值
cookie = [item['name'] + '=' + item['value'] for item in list_Cookies]

# 用列表推导式遍历cookie,cookie之间用';'分隔
cookie_Str = ';'.join(item for item in cookie)

# 打印结果

print(cookie_Str)

# 用requests登录url
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)

# 如果chrom没有安装flash可能会导致返回的数据不正确
print(html.text)

注意事项

  1. 程序执行前要登录一下自己的qq,这样第一个页面才有登录头像框可以点选.
  2. selenium自动测试访问的页面需要分析,从network中找到实际登录的页面地址
  3. 页面打开需要时间,设置好延时,避免未完全打开报错
  4. 对cookies的数据进行转换,利用json.dumps()实现lpython的ist转json的str
  5. 数据保存路径文件夹如果找不到,则在/前边加. ,即./
  6. 难点是利用列表推导式实现:到=的替换,并在cookie值之间增加分号;
  7. 利用requests,指定url和headers自动登录qq空间,并获取html代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kingx3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值