将网易云音乐歌单完整导出,我自己试过很多方法,几乎全部以失败告终,最后几乎找遍全网所有的论坛和网上资源,找到目前可行的方法:将别人的歌单变成自己的歌单(自己新建一个歌单,然后全选别人的歌单里面歌曲,添加到自己新建的歌单里面)——具体原因稍后解释。然后在网页端的网易云音乐里面打开自己的歌单页面,按下F12进入控制台(console),切换iframe。

接下来有两种方法可以得到歌单的歌曲列表:

(方法一)粘贴代码1:

copy

按下回车,有可能列表加载不出来,在下一行按下快捷键“Ctrl V”,歌单的歌曲列表就出来了,之后就可以随便复制了,这样的得到的歌单列表仅有歌名


(方法二)粘贴代码2:

// 音乐链接

按下回车,有可能列表加载不出来,在下一行按下快捷键“Ctrl V”,歌单的歌曲列表就出来了,之后就可以随便复制了!这样得到的歌单列表有序号+歌名+歌手。


为什么要将别人的歌单变成自己的歌单,这是因为如果你直接在别人的歌单页面执行如上同样的操作,只能得到歌单前10首歌曲,无法得到全部歌曲列表!




我也试过通过Python爬取歌单列表的方式获取,无一例外,全部失败了,也是一样的原因,只能得到歌单前十首歌曲的信息,其余的无法获取(官方的排行榜可以全部获得,如网易云音乐热歌榜、新歌榜等)!例如:下面的代码是爬取网易云音乐某歌单列表并导出歌名和下载地址

import 

运行结果如下图:一百多首歌曲的歌单只能得到10首歌曲!

我还将以前爬取网易云音乐热歌榜音乐评论的代码进行修改以获取某歌单的音乐列表,结果还是失败了,照旧,只能获得该歌单前10首音乐,其余的无法获取!原因未知,代码如下:

# -*- coding:utf-8 -*-"""爬取网易云音乐热歌榜的最新评论,指定页数的所有评论,比如前n页(原代码,现已将爬取评论的代码删除,仅获取歌名和歌曲评论数量)2020年8月18日
"""import os
import re
import math
import random
import urllib.request
import urllib.error
import urllib.parse
from Crypto.Cipher import AES
import base64
import requests
import json
import time
import csvagents = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]headers = {'Host':'music.163.com','Origin':'https://music.163.com','Referer':'https://music.163.com/song?id=28793052','User-Agent':''.join(random.sample(agents, 1))
}# 除了第一个参数,其他参数为固定参数,可以直接套用
# offset的取值为:(评论页数-1)*20,total第一页为true,其余页为false
# 第一个参数
# first_param = '{rid:"", offset:"0", total:"true", limit:"20", csrf_token:""}'
# 第二个参数
second_param = "010001"
# 第三个参数
third_param = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
# 第四个参数
forth_param = "0CoJUm6Qyw8W8jud"# 获取参数
def get_params(page):  # page为传入页数iv = "0102030405060708"first_key = forth_paramsecond_key = 16 * 'F'if(page == 1):  # 如果为第一页first_param = '{rid:"", offset:"0", total:"true", limit:"20", csrf_token:""}'h_encText = AES_encrypt(first_param, first_key, iv)else:offset = str((page-1)*20)first_param = '{rid:"", offset:"%s", total:"%s", limit:"20", csrf_token:""}' % (offset,'false')h_encText = AES_encrypt(first_param, first_key, iv)h_encText = AES_encrypt(h_encText, second_key, iv)return h_encText# 获取 encSecKey
def get_encSecKey():encSecKey = "257348aecb5e556c066de214e531faadd1c55d814f9be95fd06d6bff9f4c7a41f831f6394d5a3fd2e3881736d94a02ca919d952872e7d0a50ebfa1769a7a62d512f5f1ca21aec60bc3819a9c3ffca5eca9a0dba6d6f7249b06f5965ecfff3695b54e1c28f3f624750ed39e7de08fc8493242e26dbc4484a01c76f739e135637c"return encSecKey# 解密过程
def AES_encrypt(text, key, iv):pad = 16 - len(text) % 16text = text + pad * chr(pad)encryptor = AES.new(key, AES.MODE_CBC, iv)encrypt_text = encryptor.encrypt(text)encrypt_text = base64.b64encode(encrypt_text)encrypt_text = str(encrypt_text, encoding="utf-8")  # 注意一定要加上这一句,没有这一句则出现错误return encrypt_text# 获得评论json数据
def get_json(url, params, encSecKey):data = {"params": params,"encSecKey": encSecKey}response = requests.post(url, headers=headers, data=data)return response.content.decode('utf-8')  # 解码# 获取热歌榜所有歌曲名称和id
def get_all_hotSong():url = 'https://music.163.com/playlist?id=5186898701'    # 网易云云音乐热歌榜urlheader = {'User-Agent': ''.join(random.sample(agents, 1))}  # random.sample() 的值是列表, ''.join()转列表为字符串request = urllib.request.Request(url=url, headers=header)html = urllib.request.urlopen(request).read().decode('utf8')   # 打开urlhtml = str(html)     # 转换成str# print(html)pat1 = r'<ul class="f-hide"><li><a href="/song?id=d*?">.*</a></li></ul>'  # 进行第一次筛选的正则表达式result = re.compile(pat1).findall(html)     # 用正则表达式进行筛选# print(result)result = result[0]     # 获取tuple的第一个元素pat2 = r'<li><a href="/song?id=d*?">(.*?)</a></li>'  # 进行歌名筛选的正则表达式pat3 = r'<li><a href="/song?id=(d*?)">.*?</a></li>'   # 进行歌ID筛选的正则表达式hot_song_name = re.compile(pat2).findall(result)     # 获取所有热门歌曲名称hot_song_id = re.compile(pat3).findall(result)     # 获取所有热门歌曲对应的Id# print(hot_song_name)# print(hot_song_id)return hot_song_name, hot_song_id# 抓取某一首歌的前page页评论
def get_all_comments(hot_song_id, page, hot_song_name, hot_song_order):  # hot_song_order为了给文件命名添加一个编号all_comments_list = []  # 存放所有评论url = 'http://music.163.com/weapi/v1/resource/comments/R_SO_4_' + hot_song_id + '?csrf_token='   # 歌评urlparams =get_params(page)encSecKey = get_encSecKey()#data = {'params': params, 'encSecKey': encSecKey}html = get_json(url, params, encSecKey)ht = json.loads(html)# 评论总数total = ht['total']# 总页数pages = int(math.ceil(total / 20))print('第%d首歌曲:  ' % (num+1)+ "歌名:"+ hot_song_name + "  评论总数:"+ str(total) + "   评论页数:"+ str(pages))if __name__ == '__main__':start_time = time.time()  # 开始时间hot_song_name, hot_song_id = get_all_hotSong()num = 0while num < len(hot_song_name):    # 保存所有热歌榜中的热评#print('第%d首歌曲:' % (num+1))# 热门歌曲评论很多,每首爬取最新的70页评论get_all_comments(hot_song_id[num], 70 , hot_song_name[num], num+1)#print('第%d首歌曲热评抓取成功*********************** n' % (num+1))num += 1end_time = time.time()  # 结束时间print('程序耗时%f秒.' % (end_time - start_time))

运行结果如图:

很绝望,不管试了多少方法,都只能得到前10首歌曲的列表!最后还是通过文章开头介绍的方法得到了完整的了歌单列表,算是勉强满足了我此次的需求!

网易云音乐html代码_网易云音乐歌单列表导出方法!相关推荐

  1. 网易云音乐转码_网易云音乐又刷屏了?

    听说网易云音乐又刷屏了? 昨日,网易云音乐2018年度听歌报告终于出炉,果不其然,朋友圈很快就刷屏起来,2018年听过的那些歌一个个循环过,让不少网友心生感慨.触发集体回忆和分享. 今年网易云音乐年度 ...

  2. 用python爬取网易云音乐歌单列表

    本文分为两个部分:基础知识和正文,其中基础知识包括什么正则表达式以及Beautifulsoup4的使用. 一.正则表达式 正则表达式用于字符串查找.合法性检查以及作为程序员的工具箱使用. 字符串查找: ...

  3. 歌单助手:一键导出网易云音乐歌单列表,推荐你喜爱的专辑

    苏生不惑第191 篇原创文章,将本公众号设为星标,第一时间看最新文章. 关于网易云音乐之前写过很多文章了,有兴趣可以点击阅读: 那些你可能不知道的网易云音乐奇技淫巧 不想下载那么多音乐软件?全网音乐在 ...

  4. html音乐播放器歌单,H5音乐播放器【歌单列表】

    上篇详细描述了播放页歌词如何实现跟随跟单滚动,如何解析歌词,那么歌单页又是如何生成的呢,话不多说,直接上图上代码! 首先需要获取数据,具体获取数据api请转到我跟我大兄弟博客去观看学习去,同时也感谢我 ...

  5. linux终端音乐播放器,Linux终端音乐播放器cmus攻略: 操作歌单

    cmus是一款开源的终端音乐播放器.它小巧快速,而又功能强大.cmus支持Ogg/Vorbis.MP3.FLAC.Musepack.WavPack.WMA.WAV.AAC.MP4等格式,包含Gaple ...

  6. 仿网易云音乐html代码,仿网易云音乐外链播放器UI的HTML5音乐播放器插件

    简要教程 APlayer是一款仿网易云音乐外链播放器UI的HTML5音乐播放器插件.APlayer音乐播放器可以自定义歌曲封面,可以自定义同步歌词等,界面时尚大方,是一款非常好的HTML5音乐播放器插 ...

  7. 项目总结3 类似网易云音乐导航栏指示器(个性推荐、歌单等)的简单实现(一)

    我们先来看看网易云音乐导航栏指示器是什么样的. 箭头指向的蓝色框就是导航指示器,点击之后下面的view会跟着移动,每个button下面还有个小红线跟着.这个效果其实不难实现,我们先来分析分析. 在iO ...

  8. 细数网易云音乐上那些值得收藏的民谣歌单。

    单独开了一个专栏,希望与大家一起分享音乐.在此之前抓取了网易云音乐的曲库,接下来将对曲库中的歌曲按照类别进行整理并且推荐给大家. 已整理分享歌单如下(点击前往): 日语歌单 放松歌单 ACG歌单 轻音 ...

  9. 细数网易云音乐上那些值得收藏的粤语歌单。

    单独开了一个专栏,希望与大家一起分享音乐.在此之前抓取了网易云音乐的曲库,接下来将对曲库中的歌曲按照类别进行整理并且推荐给大家. 已整理分享歌单如下(点击前往): 日语歌单 放松歌单 ACG歌单 轻音 ...

  10. python实战:破解网易云音乐params及encSecKey加密参数实现歌单内任意歌曲下载(附参数分析过程)

    **1.**首先我们打开歌单内的任意一首歌曲,在该页面下打开chrome的开发者工具后切换到Network后重新刷新页面,找到请求到该歌曲播放源的URL,如下图: 找到后切换到Headers,可以看到 ...

最新文章

  1. 课程表美化 css_通过这门11小时的免费课程学习HTML和CSS
  2. Jenkins的错误“error fetching remote repo origin”的问题解决
  3. python画简单图片-Python 画个图
  4. Linux基础——linux和gcc的介绍
  5. vSphere资源:下载及文档地址
  6. P3804 【模板】后缀自动机
  7. 如何在 SAP Cloud for Customer 里自定义消息 Message
  8. 操作系统复习笔记 07 Process Synchronization 进程同步
  9. [转]JQuery.Ajax之错误调试帮助信息
  10. 为什么不应该使用(长期存在的)功能分支
  11. C语言和C++的区别整理详解!
  12. SQL调用C# dll(第一中DLL,没使用强名称密匙,默认是 safe)
  13. python line.strip().split()_.strip().split()
  14. twisted系列教程八–延迟的诗
  15. 远程线程需要注意的问题
  16. MongoDB 凉了?
  17. vfp连接高拍仪难不难,只看这篇就能搞定
  18. CISSP-OSG-每章小结梳理
  19. 智能驾驶仿真场景构建技术
  20. 如何使用Element-UI?

热门文章

  1. 第五章 创建高性能的索引
  2. Java集合里的一些“坑”
  3. Android--android 中自定义菜单
  4. VS2008(C#)制作网页Tab标签切换方法(四)
  5. IIS的URL重写(url地址映射)
  6. HCIE-Security Day5:防火墙会话表和转发原理
  7. QT tableWidget的使用及其实例
  8. Cobbler详解(五)——cobbler常用命令
  9. telnet的基本配置(cisco、H3C、huawei 三个例子)
  10. 输入网址的时候,浏览器是如何判断你是http协议还是https协议的