前言: 声明:本程序代码仅供娱乐和学习,切莫用于商业活动,一经发现,概不负责! 既然是使用selenium模块,那么就少不了谷歌浏览器。另外,我们需要安装一个chromedriver.exe 需要urllib模块、selenium模块、time、os、sys 首先,我们需要来到网易云音乐的官网,在输入框中输入一首歌的歌名,我输入的是 :最美的期待 不过,没有这么简单就能得到这两个信息,这些信息是在一个iframe的框架下面,所以,我们需要这样: 之后,就是下载歌曲了,这里需要一个下载网址,我从一次视频听课上看到的,https://music.163.com/song/media/outer/url?id={}.mp3,中间那个大括号代表歌曲的id信息,这样就可以下载歌曲了。 先看一下运行结果吧! 运用selenium下载网易云音乐 代码如下:
我也不知道上传上去的这个代码缩进有没有问题,如果有,请大家及时留言,我会重新上传的;没有最好。 这个项目相比较运用requests模块做,难度简单了许多,如果在以后的学习里,我懂得了那些js解码与编码,我还会推出新的文章的。
原标题:运用selenium下载网易云音乐
文章目录
1.了解完成这个项目需要的python模块和需要安装的软件
1.1 需要安装的软件
网址为:chromedriver.exe的下载
这需要根据自己的谷歌浏览器的版本来下载,下载完毕之后,我们将它解压,放到python文件夹下面,像我这样:
1.2 需要的python模块
其实完成这个项目需要的模块仅仅只要前两个模块即可,后面那三个模块只是用来创建文件夹和进度条的。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')
driver.switch_to.frame('g_iframe')
是不是觉得很简单,相比如用requests模块。3.最终代码和运行结果
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:Pythonchromedriver.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.总结
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算