Python开发音乐播放器(一)—— 模拟登陆+获得歌单信息

这个星期我的个人项目——(能导入各个平台歌单的)音乐播放器已经开始啦。所以先理清思路:

  1. 使用selenium进行模拟登录,即登录QQ号时同时能获得网易云和QQ音乐时可以获取两个账号的歌单
  2. 使用Python创建GUI界面(初期使用简洁的界面,后期再进行美化和功能增加)
  3. 将Python的GUI界面与第一步得到的歌单融合
  4. 解决音乐在播放器上播放的问题(目前想到的是两种方法:1.爬取源mp3文件,此方式较为困难并且可能涉及到版权问题暂时不适合。2. 得到播放的链接,进行在线播放)

期间可能会遇到各种问题或者说我的思路有问题的地方会进行改进,当然同时也不吝赐教。

一、selenium模拟登陆

首先是安装并且配置selenium的环境,网上都有教程这里就不赘述了。
接着进行网页的分析,打开网易云界面,我们首先要实现模拟登陆的功能。


image.png

查看此处的代码结构:


image.png

点击后弹出新的框:


image.png

此处因为需要点击QQ登录因此利用css选择器使用下列代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from time import sleep
class getMusic():
    #chrome_options=Options()
    #设置为无界面模式
    #chrome_options.add_argument('--headless')
    userid='***' #这里填上QQ号
    password='***'#这里填上对应的密码
    browser = webdriver.Chrome()
    browser.implicitly_wait(10)
    browser.get("https://music.163.com/")
    #login = browser.find_element_by_link_text('登录')
    #login.click()
    browser.implicitly_wait(10)
    browser.find_element_by_css_selector(".m-tophead.f-pr.j-tflag > a").click()  #点击登录
    #css 选择器中如果一个 tag 的 class 包含空格,要用.号代替空格
    browser.find_element_by_css_selector(".lyct.lyct-1 > div > div.u-alt > ul > li:nth-child(2) > a").click()  #点击QQ登录

运行代码,进入下列界面:

image.png

我们要先对选项卡进行切换

music_handle = browser.current_window_handle
print(music_handle) # 输出当前窗口句柄 
handles = browser.window_handles   # 获取当前全部窗口句柄集合
print(handles)
#切换到QQ登陆页面
for handle in handles:
    if handle != browser.current_window_handle:
        print('switch to qq login window')
        browser.switch_to.window(handle)
        browser.implicitly_wait(10)
        ##QQlogin = browser.find_element_by_link_text('QQ登录')
        #QQlogin.click()
#music_handle = browser.current_window_handle
browser.implicitly_wait(10)
sleep(2)

接着我们发现QQ登录窗口含有iframe:

image.png

因此先切换此窗口:

browser.switch_to.frame('ptlogin_iframe')

再点击帐号密码登录,出现文本框将账号密码输入后进行登录。

image.png
image.png
browser.find_element_by_link_text('帐号密码登录').click()
userid_ele=browser.find_element_by_name('u')
#password_ele=browser.find_element_by_id('pwdArea')
password_ele=browser.find_element_by_name('p')
userid_ele.send_keys(userid)
password_ele.send_keys(password)
browser.find_element_by_id('login_button').click()

切换回原窗口:

browser.switch_to.window(music_handle)

完成登录:


image.png

二、初步获得歌单信息

首先进入我的音乐:


image.png

代码:

browser.find_element_by_xpath('//*[@id="g-topbar"]/div[1]/div/ul/li[2]/span/a/em').click()
browser.implicitly_wait(10)
sleep(2)

接下来提取歌单的名称:

image.png

经过检查代码发现,这里也是个iframe:


image.png
browser.switch_to.frame('contentFrame')

提取名称:

list=[]
#list=browser.find_element_by_xpath('//*[@id="g_mymusic"]/div/div[1]/div/div[1]/ul/li[3]')
#list.click()
i=1
while True:
    try:
        list=browser.find_element_by_xpath('//*[@id="g_mymusic"]/div/div[1]/div/div[1]/ul/li[{}]'.format(i))
        print(list.text)
        i=i+1
    except:
        print('over')
        break;

输出结果:


image.png

(未完待续,如以上有疑问,不吝赐教)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容