刚刚写了一堆,最终放弃了,后来百度查找到一个接口,

http://music.163.com/song/media/outer/url?id=这里填歌曲id.mp3

这个URL就可以下载了,现在再来做一次!根据歌单id下载歌曲

import os
import reimport requests
from scrapy.selector import Selectorclass wangyiyun():def __init__(self):self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36','Referer': 'http://music.163.com/'}self.main_url = 'http://music.163.com/'# session实例化对象self.session = requests.Session()self.session.headers = self.headersdef get_resp(self, url):"""发送url请求,返回响应内容"""# 发送请求,获取响应resp = self.session.get(url)  # 直接用session进入网页# 返回响应内容return resp.contentdef get_songurls(self, playlist):'''进入所选歌单页面,得出歌单里每首歌各自的ID 形式就是“song?id=64006"'''url = self.main_url + 'playlist?id=%d' % playlist# 获取内容content = self.get_resp(url)# Scrapy选择器是Selector通过传递文本或TextResponse对象构造的类的实例。# 根据输入类型自动选择最佳的解析规则(XML与HTML)sel = Selector(text=content)  # 用scrapy的Selectorsongurls = sel.xpath('//ul[@class="f-hide"]/li/a/@href').extract()return songurls  # 所有歌曲组成的listdef get_songinfo(self, songurl):'''根据songid进入每首歌信息的网址,得到歌曲的信息'''url = self.main_url + songurl# 发送请求,获取响应resp = self.session.get(url)# 解析响应内容sel = Selector(text=resp.text)# 获取song_idsong_id = url.split('=')[1]# 获取song_namesong_name = sel.xpath("//em[@class='f-ff2']/text()").extract_first()# 获取singersinger = '&'.join(sel.xpath("//p[@class='des s-fc4']/span/a/text()").extract())# 组装songnamesongname = singer + '-' + song_name# 返回return str(song_id), songnamedef download_song(self, song_url, songname, dir_path):'''根据歌曲url,下载mp3文件'''# 文件名中不能含有特殊字符# songname = re.sub(r"[/]", ",", songname)songname = re.sub(r"[?!@#$%^&*()/]", "", songname)# os.sep相当于 “//”path = dir_path + os.sep + songname + '.mp3'  # 文件路径# 获取内容content = self.get_resp(song_url)# 保存到本地with open(path, "wb") as f:f.write(content)print(songname, "下载完毕!")def work(self, playlist):# 输入歌单编号,得到歌单所有歌曲的urlsongurls = self.get_songurls(playlist)# 指定歌曲存放位置dir_path = r'./music'if not os.path.exists(dir_path):os.mkdir(dir_path)# 遍历下载歌单中所有歌曲for songurl in songurls:# 根据歌曲url得出ID、歌名song_id, songname = self.get_songinfo(songurl)# 拼接下载歌曲的urlsong_url = 'http://music.163.com/song/media/outer/url?id=%s.mp3' % song_id# 下载歌曲self.download_song(song_url, songname, dir_path)if __name__ == '__main__':d = wangyiyun()d.work(863744119)  # 歌单id

简单到爆。。。。

敲黑板。。。

还记得曾经用爬虫获得网易云所有歌单吗?其中就包括歌单url呦

网址送给你:https://blog.csdn.net/apollo_miracle/article/details/85015152

使用Python代码下载网易音乐歌曲相关推荐

  1. python音乐下载器交互界面_基于Python实现下载网易音乐代码实例

    代码如下 # 爬取网易音乐 import requests from bs4 import BeautifulSoup import urllib.request headers = {"o ...

  2. python下载音乐代码_基于Python实现下载网易音乐代码实例

    代码如下 # 爬取网易音乐 import requests from bs4 import BeautifulSoup import urllib.request headers = {"o ...

  3. 用python可以免费下载音乐吗-Python 教你轻松下载网易音乐歌曲

    前两篇文章收集了歌手信息和歌词,光有歌手信息和歌词没有歌曲怎么行,那不是耍流氓吗?正好今天周末,给大家发点福利,喜欢听音乐的同学有福了,这篇文章直接把网易云音乐歌手的热门歌曲 50 首全部免费下载下来 ...

  4. python下载mp3_Python 教你轻松下载网易音乐歌曲

    前两篇文章收集了歌手信息和歌词,光有歌手信息和歌词没有歌曲怎么行,那不是耍流氓吗?正好今天周末,给大家发点福利,喜欢听音乐的同学有福了,这篇文章直接把网易云音乐歌手的热门歌曲 50 首全部免费下载下来 ...

  5. Python 教你轻松下载网易音乐歌曲

    点击上方"brucepk",选择"置顶公众号" 第一时间关注 Python 技术干货! "   阅读文本大概需要 2.8 分钟 前两篇文章收集了歌手信 ...

  6. python 爬虫下载网易歌单歌曲

    python 爬虫下载网易歌单歌曲 可以根据歌单 id 来下载歌单中的所有音乐,付费音乐除外 可以自己输入歌单 id 来进行单个歌单下载,也可以结合上一篇文章 爬取网易云音乐所有歌单信息 先取到所有的 ...

  7. 如何用PYTHON代码写出音乐

    如何用PYTHON代码写出音乐 什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的.我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深 ...

  8. python怎么实现音乐快进_如何用PYTHON代码写出音乐【】

    如何制作MIDI(用于vocaloid 3) 我也是因为V家才来找midi的 如何用PYTHON代码写出音乐 在python-midi,每个乐谱用Pattern对象表示,乐的每个音轨(通常音乐很多轨道 ...

  9. python制作一个网易音乐下载器

    你只需要在代码同级目录新建一个文件夹mp3即可.代码可复制粘贴. 第一次思路如下,该效果只能一次下载单个音乐: #coding=gbk """ 描述:传参id即可下载音乐 ...

最新文章

  1. 2018-3-7 HDFS架构
  2. 论文不必参考任何文献?看到作者,网友大呼失敬了
  3. C#的访问修饰符Protected
  4. 会计基础第一章模拟试题(1)
  5. 【转】找到 MySQL 数据库中的不良索引
  6. 杭电1241java实现dfs
  7. 美团面试动态规划——整数拆分
  8. C语言学习之有一个分数序列2/1、3/2、5/3、8/5、13/8、21/13,……求出这个数列的前20项之和。
  9. 计算机的发展阶段及特点与未来发展,计算机的发展历史及未来
  10. 批处理BAT命令创建日期文件夹
  11. java在捕获异常并弹窗_Java捕获异常的问题
  12. HDU 3333 Turing Tree(树状数组/主席树)
  13. timesat数据如何读取_CMPR软件安装教程和如何转换XRD格式
  14. CAN和CANFD的区别总结
  15. 什么是SPU、SKU、SKC、ARPU
  16. H3C ipsec psk aggressive mode配置
  17. 20个高效阅读小技巧
  18. TK1 刷机教程---使用JETPACK
  19. 凸优化:ADMM(Alternating Direction Method of Multipliers)交替方向乘子算法
  20. FBX导入错误 :ImportFBX Errors:

热门文章

  1. java 指令发送短信_Java短信发送机的实现
  2. Chtholly Nota Seniorious
  3. 如何提升产品经理的综合素质?
  4. python检查https过期_Python实现HTTPS网站证书过期监控及更新
  5. JS学习笔记之内置对象 4.21
  6. hql删除mysql语句_hibernate -- HQL语句总结
  7. CSS3 仿古墓丽影9菜单界面
  8. 图神经网络学习(一)-GCN及其应用
  9. Debian启动自定义桌面
  10. 普通人跨考浙大计算机的经验贴(2019)