python批量下载网易云音乐文件到本地
现在听歌大多数只支持在线听,下载要钱,没网络就白搭了。好吧,用技术手段解决免费、下载、批量等一些列问题
整个脚本的逻辑和流程是,把歌曲地址都存在一个txt中,然后循环每次取一条链接,分析链接对应歌曲的id和歌曲名,然后下载该歌曲,同时已歌曲名命名下载后的文件


网易云音乐客户端复制音乐地址,比如上面那首《踏山河》:https://music.163.com/song?id=1804320463&userid=502092978
歌曲地址内有可以看到id=1804320463,需要把这串数字分离出来,后面下载会用到,用正则分离出来
url=“https://music.163.com/song?id=1804320463&userid=502092978“”
song_id=re.findall('id=(.+?)&userid',url)[0]
然后根据地址获取歌曲名称,这里使用的是xpath爬虫抓取数据
song_url=“https://music.163.com/song?id=1804320463&userid=502092978“”
response = requests.get(song_url,headers)
wb_data = response.text # 将页面转换成文档树
html = etree.HTML(wb_data)
music_name = html.xpath('//em[@class = "f-ff2"]/text()')[0]
再就是下载歌曲,下载歌曲需要用到网易云的专属下载接口,http://music.163.com/song/media/outer/url?id=,id=后面即填入上面步骤分离出来的歌曲id
response = requests.get("http://music.163.com/song/media/outer/url?id="+song_id+".mp3")
content = response.content
with open(music_name+'.mp3', mode="wb") as f:
f.write(content)
print("下载"+" "+music_name+" "+"完成")
然后在脚本目录下创建一个txt文件,把歌曲地址复制到文本内(每行一条地址)


为了方便观察每一步获取的数据,再每一步操作后面加入把数据打印出来,执行脚本


以上即是本案例的主要步骤和对应的脚本,至于读取txt文件等,就参考后面附上的所有脚本内容
同时,已经把脚本打包成exe文件,没有安装python的电脑环境也可以执行(加微信xiaobeishuwu发文件)
特别强调,不要下的太过分,仅仅是技术交流,商业牟利自负责任

附全部脚本
import requests #倒入requests库
from lxml import etree #倒入lxml 库(没有这个库,pip install lxml安装)
import re headers = {
'authority': 'music.163.com',
'pragma': 'no-cache',
'cache-control': 'no-cache',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'nested-navigate',
'referer': 'https://music.163.com/',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
'cookie': '_iuqxldmzr_=32; _ntes_nuid=01c796eee1899b3e988043381c5fe3ed; WM_TID=bClwjpRRyMhFBRRUVVZ8eNGfcwSRUP4D; vjuids=91172de86.167ba393a03.0.751a7745c4db9; vjlast=1545017572.1572947033.22; mail_psc_fingerprint=73ad847ab9b5c4a03a9db849350e6c87; _ntes_nnid=01c796eee1899b3e988043381c5fe3ed,1606698119460; NMTID=00OIwuy7su1M7DopUdapOO9k7XQi98AAAF2Fqu0fA; _ga=GA1.2.1259495320.1607509476; P_INFO=zoulong1989@yeah.net|1607662298|0|mailyeah|00&99|hun&1606470131&mailyeah#hun&430100#10#0#0|&0|mailyeah|zoulong1989@yeah.net; ntes_kaola_ad=1; __guid=94650624.2334178747771955700.1621191366476.4607; WEVNSM=1.0.0; vinfo_n_f_l_n3=3d881b79189ff41c.1.12.1547520183001.1614838367331.1621988944652; WNMCID=ejsics.1623379617606.01.0; WM_NI=mdEEc6iEFx0kqT58oiR1ru7%2FkLYUA1PyRK6%2BTHLghGMimil%2BS5tVG%2FwgVucIvSbr8YLaHYx37EAxuzxT1dsFJEhDfawZAmKXmaade%2FrrEDFjQu3pQNMcaiAKD5mlJQ26TGI%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eeb2ea6a8a889cd1cc49ed9a8fb6d85b879b8f84f862baaaa5acd669b49f99b9eb2af0fea7c3b92aafbc8ba6e23eab9b8a99b361b38cfbd9ee6392efbe96b625a99497b6c43b94a79eacb52198988488eb4d8fb7a38aef2191ebbcb7c625b5b99a96e243b68dae93bb5390bf88bafb39f59b8f99f872bc8cff85f24e8a9ba8a5e56bb5868f8eca54afbfaf85e825b2ae8ba5c56293abfd91d4468fbdaf8ac44188eba38dc95bf2ea9ca8cc37e2a3; playerid=78983598; JSESSIONID-WYYY=%2FRnux48Q%2FpfVFCwSG6v2vRBRWVgCV%2B6Sq6AI4NdRfU527Dz%2FaA74w3xExYMzsWMrMCOh4w6fvc%5CM3inN2WkZQ3gtAUt%5CHwj4rtxKYCdj6OaYHu%2FxAthJgtmzw%2BaHzKUSz36Vo45aOsuf1Hq2NTx0N5qs7p%5CPc%2B6KB6ZvkhG5HvzS62pi%3A1629883157132; monitor_count=7',
} soure = open('address.txt', 'r')
value = soure.readlines()
soure.close() def download_music(value,headers):
#读取歌曲地址
for url in value:
url=url[:-1]#去掉换行符,然后url后面会带个空格,访问不了链接 #解析地址,获取歌曲名称和id
song_id=re.findall('id=(.+?)&userid',url)[0]
print("歌曲id:"+song_id)
song_url = "https://music.163.com/song?id="+song_id
response = requests.get(song_url,headers=headers)
wb_data = response.text # 将页面转换成文档树
html = etree.HTML(wb_data)
music_name = html.xpath('//em[@class = "f-ff2"]/text()')[0]
print("歌曲名称:"+music_name)
#将歌曲名称和id传入,下载歌曲
response = requests.get("http://music.163.com/song/media/outer/url?id="+song_id+".mp3",headers=hearders)
content = response.content
with open(music_name+'.mp3', mode="wb") as f:
f.write(content)
print("下载"+" "+music_name+" "+"完成")
download_music(value,headers)
python批量下载网易云音乐文件到本地的更多相关文章
- 如何下载网易云音乐APP里的MV和短视频?
本人:网易云音乐死粉,朋友圈大多都用的是云音乐,因为推荐功能牛逼 然后:发现云音乐APP里越来越多吸引我的短视频,经常看到好的就想保存到相册,然后微信发给朋友 但是:不知道怎么下载网易云音乐的短视频, ...
- 使用python3下载网易云音乐歌单歌曲,附源代码
""" 用selenium+PhantomJS配合,不需要进行逆向工程 python 3下的selenium不能默认安装,需要指定版本2.48.0 "" ...
- python3爬虫:下载网易云音乐排行榜
#!/usr/bin/python3# -*- encoding:utf-8 -*- # 网易云音乐批量下载 import requestsimport urllib # 榜单歌曲批量下载# r = ...
- 下载网易云音乐的MV
网易云音乐有很多经典视频, 但是苦于没有下载按钮...今天就记录下如何保存MV到本地, 又get一项新技能!!! 一. 安装360极速浏览器(非安利) 二. 打开网易云音乐客户端, 点击"等 ...
- python3爬虫-下载网易云音乐,评论
# -*- coding: utf-8 -*- ''' 16位随机字符的字符串 参数一 获取歌曲下载地址 "{"ids":"[1361348080]" ...
- Python下载网易云收藏
提前声明 仅作为个人学习使用,任何版权问题作者概不负责 本文的语言不会且不可能很严谨 博客园的编辑器有点BUG把我搞晕头了,所以本文可能有点鬼畜 前情 不知道各位有几个是对国内大厂的软件设计很满意的? ...
- python爬虫实例--网易云音乐排行榜爬虫
网易云音乐,以前是有个api 链接的json下载的,现在没了, 只有音乐id,title , 只能看播放请求了, 但是播放请求都是加密的值,好坑... 进过各种努力, 终于找到了个大神写的博客,3.6 ...
- python爬取网易云音乐评论及相关信息
python爬取网易云音乐评论及相关信息 urllib requests 正则表达式 爬取网易云音乐评论及相关信息 urllib了解 参考链接: https://www.liaoxuefeng.com ...
- Python爬取网易云音乐歌手歌曲和歌单
仅供学习参考 Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做 ...
- 用Python爬取网易云音乐热评
用Python爬取网易云音乐热评 本文旨在记录Python爬虫实例:网易云热评下载 由于是从零开始,本文内容借鉴于各种网络资源,如有侵权请告知作者. 要看懂本文,需要具备一点点网络相关知识.不过没有关 ...
随机推荐
- DVR4 pg walkthrough Intermediate window
nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A -sS 192.168.219.179 Starting Nmap 7.94SVN ( https://nmap ...
- [Java] Solon 框架的三大核心组件之一插件扩展体系
1.Solon 的三大核心组件 核心组件 说明 Plugin 插件扩展机制 提供"编码风格"的扩展体系 Ioc/Aop 应用容器 提供基于注入依赖的自动装配体系 Context+H ...
- 容器、容器云和容器化PaaS平台之间到底是什么关系?
本文分享自天翼云开发者社区<容器.容器云和容器化PaaS平台之间到底是什么关系?>,作者:s****n 一直都有很多人迷惑于容器应该属于 IaaS 或是 PaaS 层,也搞不清楚容器云到底 ...
- CSP 初赛要点复习
位运算 逻辑与.按位与之类的东西是不同的!"逻辑"的是判断两个数都不为 \(0\),"按位"的是判断两个数的每一个二进制位与的结果,是不同的.其他运算也类似. ...
- Typecho浏览统计和热门文章调用插件TePostViews
TePostViews是一款简单的typecho热门文章调用插件,通过该插件可以显示每篇文章的阅读次数,以及调用阅读次数最多或者评论数最多的文章作为热门文章调用,用户可以自由选择调用依据和调用文章的数 ...
- AngleSharp :在 C# 中轻松解析和操作 HTML/XML 文档
AngleSharp 是一个 C# 库,主要用于解析和操作 HTML 和 XML 文档,类似于浏览器的 DOM 操作.允许你在 C# 中使用类似浏览器的方式处理网页数据,进行网页抓取.数据提取和处理等 ...
- Windows和Ubuntu间TCP连接测试
起因是想在Ubuntu上用Synergy,但是发现爱你怎么都连不上.鼓捣了半天发现似乎Ubuntu监听,Windows测试TCP连接总是不成功,反之却能成功,大概问题就在这,尚未解决先记录一下. 基本 ...
- Assignment to property of function parameter 'XXX' no-param-reassign 记录
在react项目中写了一个工具方法将两个数组数据进行整合,用了双重for循环,但是在提交代码时报了eslint的no-param-reassign 结果效果是有了,但是报lint错误,图片中已是解决后 ...
- Bash Shell 30min 过家家
带你捅破窗户纸 - 备注 : @博客园 : 1. 为什么不支持 pdf 上传了呀 2. 网站分类不好用 3. 排版OA工具升级下, 例如 markdown 写出来好丑. 尝试升级下呢 ? 后记: 学如 ...
- Linux重启php-fpm
前言 PHP-FPM 是一款简单好用的 PHP FastCGI 进程管理工具. 它可以和 Apache.Nginx 或其他服务器一起构建完整的 PHP 环境. 接下来我们看看在更改了 php.ini ...