目标:在网页版网易云,以qq登录的方式,通过Python代码实现自动登录

在实现过程中,关键的有2步:

1.在打开的页面中点击链接,打开了新页面。driver需要重定向到新页面,直接定位新界面的元素会提示,“定位失败,没有这个元素”。

解决方法:获取当前浏览器所有句柄页,根据句柄页的值进行转换。

windows = driver.window_handles # 获取当前浏览器所有的页面句柄

windows的类型为list,通过windows[num]调用 。

关于句柄页、句柄值查阅了一些博客都分别说了一部分,没有对比的讲解,要做页面切换,先要搞清这两个的概念,否则直接生搬硬套,可能就会犯我执行时的错误:用句柄值去切换页面。以下是我的个人理解。

如果每次在新打开的标签页上点击链接打开下一个标签页,标签页顺序:1 2 3 4,句柄页的值为:0 1 2 3,关闭标签页4,在标签页3上点击其他链接打开一个新页面,句柄页的值仍为0 1 2 3,代表第1 2 3 4个标签页。

search_handle = driver.current_window_handle # 获取当前句柄页的句柄值

当前标签页的句柄值search_handle的值为:

CDwindow-0275C98CCBB9287B39FF9BB1B1501C3E,这种风格。

所以务必分清,句柄页的值是代表第(x+1)个标签页,句柄值是一串数字。

切换标签页,先获取所有页面句柄,再通过driver.switch_to.window()进行切换。

获取当前页面的句柄值,采用 变量名 = driver.current_window_handle
引用博客:selenium中webdriver跳转新页面后定位置新页面的两种方式 - L-Jason - 博客园

2.新页面中嵌套元素的定位

定位账号密码登录时,对 href = "javascript:void(0)" 用了link text,xpath,css selector,模糊查询都无法定位到这个元素,通过查阅博客发现这是个frame嵌套元素,定位解决方法如下:

driver.switch_to.frame('ptlogin_iframe') # 目标是iframe嵌套元素,使用对应的函数
driver.find_element('id','switcher_plogin').click() # 根据元素id定位

引用博客:QQ邮箱自动登录问题--frame嵌套元素定位_Taxus_shan的博客-CSDN博客

到这里,最关键的2个问题全部都已经解决,细节问题:当新打开的标签页没有完全加载好时,切换标签页、在新标签页上定位元素都可能失败、报错,所以要留出等待的时间。

下面为完整代码:

# 1.导包+设置用户名、密码
from selenium import webdriver
from time import sleep
# 设置用户名和密码,此处建议以读文件方式拿到账号、密码
username = (QQ账号)
password = 'QQ密码'
# 2.创建一个webdriver服务端
driver = webdriver.Chrome()
# 3.获取url
driver.get('http://music.163.com')
driver.maximize_window()
sleep(1)
# 4.点击登录
driver.find_element('link text','登录').click()
sleep(1)
# 5.选择其他登录方式
driver.find_element('link text','选择其他登录模式').click()
# 6.定位到协议前的label控件,点击勾选
driver.find_element('xpath','//*[@id="j-official-terms"]').click()
# 7.链接文字定位到qq登录
driver.find_element('link text','QQ登录').click()
sleep(5)
# 8.定位到新页面,点击账号密码登录
windows = driver.window_handles # 获取当前浏览器所有的页面句柄
driver.switch_to.window(windows[1]) # 跳转到第二个页面
driver.switch_to.frame('ptlogin_iframe') # 目标是嵌套元素,使用对应的函数
driver.find_element('id','switcher_plogin').click() # 根据元素id定位
# 9.定位到账号密码输入框,并发送信息后,点击登录
driver.find_element('xpath','//input[@id="u"]').send_keys(username) # 输入用户名
driver.find_element('xpath','//input[@id="p"]').send_keys(password) # 输入密码
driver.find_element('xpath','//*[@id="login_button"]').click() # 点击“登录”按钮
# 时停3s
sleep(3)
driver.quit()

Python自动登录网页网易云音乐相关推荐

  1. python网易云_用python爬虫爬取网易云音乐

    标签: 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去.按键盘F12打开网页调试工具,点击Ne ...

  2. python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...

    1.前言 最近,网易的音乐很多听不到了,刚好也看到很多教程,跟进学习了一下,也集大全了吧,本来想优化一下的,但是发现问题还是有点复杂,最后另辟捷径,提供了简单的方法啊! 本文主要参考 python编写 ...

  3. python爬虫----爬取网易云音乐

    使用python爬虫爬取网易云音乐 目录 使用python爬虫爬取网易云音乐 需要使用的模块 开始工作 运行结果 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页 ...

  4. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)

    Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年) Python 数据分析初探项目 基于 Python 数据可 ...

  5. python 批量爬取网易云音乐,java解密

    每天一点点,记录学习 python 批量爬取网易云音乐 网易云音乐,排行榜,右键,显示网页源代码,并不能找到任何一首歌的id,是因为java加密了 随便找一首id为1374061038的歌,在网页源代 ...

  6. 计算机毕业设计Python+uniapp+安卓仿网易云音乐客户端APP(WEB+APP+LW)

    计算机毕业设计Python+uniapp+安卓仿网易云音乐客户端APP(WEB+APP+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区 ...

  7. python爬取网易云音乐_我用Python爬取了网易云音乐

    原标题:我用Python爬取了网易云音乐 来源:别动我的猫尾巴 headers需要进行修改,headers设置不对会被屏蔽导致爬取不成功.一个headers用久了也会爬取不成功 代码如下: impor ...

  8. python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名

    目标网站: 首先获取第一页的数据,这里关键要切换到iframe里 打印一下 获取剩下的页数,这里在点击下一页之前需要设置一个延迟,不然会报错. 结果: 一共37页,爬取完毕后关闭浏览器 完整代码: u ...

  9. python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇

    image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...

最新文章

  1. 姚期智担纲,清华今日成立量子信息本科班!“着眼学术尖端,致力国家战略需求“...
  2. Python 3.10的几个好用的新特性
  3. JavaScript常用基础算法
  4. 在GridView里使用上下箭头(小键盘旁边)来选择记录
  5. python 创建类_python 用type()创建类
  6. 身材太好的女生在职场中有哪些劣势?
  7. Scrapy框架学习(二)
  8. C语言编程题:完美的素数
  9. JSP设置网站favicon.ico
  10. 算法:根据四色定理(Four color theorem),求出地图的所有着色方案
  11. 最简单的迁徙图实现demo
  12. Python练习——L1-051 打折 (5分)
  13. linux下启动node服务出现events.js:167 throw er; // Unhandled ‘error‘ event 的解决方法
  14. 视频相关的hls协议、VLC播放器、m3u文件的播放
  15. 这是一个关于女码农减肥的思考
  16. 教你如何把视频转成序列图片的实用技巧
  17. 【STM32F407VET6开发】第三章 jpeg编解码实验(有误,待修改)
  18. 零基础该怎么去学3D游戏建模?
  19. 研究生复试------3.找圆心
  20. 可视化实时监控系统echarts图

热门文章

  1. 婚恋相亲源码-视频相亲app将会是直播的下一个风口吗?
  2. 史上最简单的spark教程第十三章-SparkSQL编程Java案例实践(终章)
  3. 从零开始构建嵌入式实时操作系统2——重构
  4. 基于深度强化学习的智能船舶航迹跟踪控制
  5. EXCEL设置下拉选项,选项带颜色
  6. 学嵌入式为什么要学Linux?
  7. C++字符串转换(stoi;stol;stoul;stoll;stoull;stof;stod;stold)
  8. 使用邮箱教学|邮箱是什么?办公中是怎么使用的
  9. 【深度学习】深度学习如何影响运筹学?
  10. mysql如何避免单点故障