selenium模块太强大了,网易云音乐都可下载 您所在的位置:网站首页 iwatch网易云音乐下载没反应 selenium模块太强大了,网易云音乐都可下载

selenium模块太强大了,网易云音乐都可下载

2024-07-01 15:06| 来源: 网络整理| 查看: 265

原标题:运用selenium下载网易云音乐

前言:

声明:本程序代码仅供娱乐和学习,切莫用于商业活动,一经发现,概不负责!

文章目录 原标题:运用selenium下载网易云音乐1.了解完成这个项目需要的python模块和需要安装的软件1.1 需要安装的软件1.2 需要的python模块 2.实现下载网易云音乐的过程3.最终代码和运行结果4.总结

1.了解完成这个项目需要的python模块和需要安装的软件 1.1 需要安装的软件

既然是使用selenium模块,那么就少不了谷歌浏览器。另外,我们需要安装一个chromedriver.exe 网址为:chromedriver.exe的下载 这需要根据自己的谷歌浏览器的版本来下载,下载完毕之后,我们将它解压,放到python文件夹下面,像我这样: 在这里插入图片描述

1.2 需要的python模块

需要urllib模块、selenium模块、time、os、sys 其实完成这个项目需要的模块仅仅只要前两个模块即可,后面那三个模块只是用来创建文件夹和进度条的。

2.实现下载网易云音乐的过程

首先,我们需要来到网易云音乐的官网,在输入框中输入一首歌的歌名,我输入的是 :最美的期待 然后,按电脑键盘F12键查看如下: 在这里插入图片描述 完成这个项目我们只需要这两个信息就足够了。 代码如下:

page=driver.find_element_by_id('m-search') song_id_list=page.find_elements_by_xpath('.//div[@class="sn"]/div[@class="text"]/a')# 得到所有歌曲的音频和视频 song_name_list=page.find_elements_by_xpath('.//div[@class="sn"]/div[@class="text"]/a/b') song_id_list_1=[] # 所有歌曲的音频 for i in range(len(song_id_list)): song_id_list[i]=song_id_list[i].get_attribute('href') if 'song'in song_id_list[i]: song_id_list_1.append(song_id_list[i]) for i in range(len(song_name_list)): song_name_list[i]=song_name_list[i].get_attribute('title')

不过,没有这么简单就能得到这两个信息,这些信息是在一个iframe的框架下面,所以,我们需要这样:

driver.switch_to.frame('g_iframe')

之后,就是下载歌曲了,这里需要一个下载网址,我从一次视频听课上看到的,https://music.163.com/song/media/outer/url?id={}.mp3,中间那个大括号代表歌曲的id信息,这样就可以下载歌曲了。 在这里插入图片描述 是不是觉得很简单,相比如用requests模块。

3.最终代码和运行结果

先看一下运行结果吧!

运用selenium下载网易云音乐

代码如下:

import urllib.parse as parse from selenium import webdriver import time import urllib.request import os import sys def Time_1(): # 进度条函数 for i in range(1,51): sys.stdout.write('\r') sys.stdout.write('{0}% |{1}'.format(int(i%51)*2,int(i%51)*'■')) sys.stdout.flush() time.sleep(0.125) sys.stdout.write('\n') def Music_search(): print('-----------------------网易云----------------------------') url='https://music.163.com/#/search/m/?%s&type=1'%(parse.urlencode({'s':input('请输入歌曲名称:')})) driver=webdriver.Chrome(executable_path='D:\Python\chromedriver.exe') driver.get(url=url) driver.switch_to.frame('g_iframe') page=driver.find_element_by_id('m-search') song_id_list=page.find_elements_by_xpath('.//div[@class="sn"]/div[@class="text"]/a')# 得到所有歌曲的音频和视频 song_name_list=page.find_elements_by_xpath('.//div[@class="sn"]/div[@class="text"]/a/b') song_id_list_1=[] # 所有歌曲的音频 for i in range(len(song_id_list)): song_id_list[i]=song_id_list[i].get_attribute('href') if 'song'in song_id_list[i]: song_id_list_1.append(song_id_list[i]) for i in range(len(song_name_list)): song_name_list[i]=song_name_list[i].get_attribute('title') driver.close() return song_name_list,song_id_list_1 # 返回歌曲名称、歌曲id def Downlad(music_name,url_1): id=url_1[url_1.find('id='):] url='https://music.163.com/song/media/outer/url?{}.mp3'.format(id) try: os.mkdir(path='./网易云下载') except Exception as e: print(e,'但不要紧,程序仍然继续执行!') finally: print('{}.mp3正在下载当中!请等待一下...'.format(music_name)) Time_1() urllib.request.urlretrieve(url=url, filename='./网易云下载/{}.mp3'.format(music_name)) print('{}.mp3已经下载完毕!'.format(music_name)) print('请到当前文件夹下面查看!') if __name__ == '__main__': list_1=Music_search() print('符合要求的音乐如下:') for i in range(len(list_1[0])): print('-{}-{}'.format(i+1,list_1[0][i])) i=int(input('请输入你想下载的音乐序号:')) Downlad(list_1[0][i-1],list_1[1][i-1])

我也不知道上传上去的这个代码缩进有没有问题,如果有,请大家及时留言,我会重新上传的;没有最好。

4.总结

这个项目相比较运用requests模块做,难度简单了许多,如果在以后的学习里,我懂得了那些js解码与编码,我还会推出新的文章的。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有