1.登录网页端网易云,复制cookie
2.输入歌单ID(就是后面的一串数字)
3.运行
网页端访问别人歌单只能看到20首歌,太难了,加上cookie还能访问自己的,还不错,虽然是标准音质
# -*- coding:utf-8 -*-
import requests
import re
import os
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54',
'Referer': 'https://music.163.com/',
'Cookie': '你的cookie',
}
try:
os.mkdir('音乐')
except FileExistsError:
print('创建失败,文件夹已存在')
# 歌单
def get_id(music_list):
res = requests.get(url=music_list.replace('#/', ''), headers=header).text
for i, j in re.findall(r'<a href="/song\?id=(\d+)">(.*?)</a>', res): # 遍历匹配的对象
name = re.sub(r'[\\:*?"<>|/]', ' ', j)
music_url = 'http://music.163.com/song/media/outer/url?id=' + i + '.mp3'
download(name, music_url)
# 解析链接
def download(name, music_url):
response_url = requests.get(music_url, headers=header).url
try:
if len(response_url) != 25:
response = requests.get(music_url, headers=header).content
with open('音乐/' + name + '.mp3', 'wb') as f:
f.write(response)
f.close()
print(name + '下载完成')
else:
print(name + '出错了,可能是付费或者无版权歌曲')
except:
print('未知错误:')
print('歌曲名字:' + name, '歌曲外链' + music_url)
pass
if __name__ == '__main__':
ids = input('请输入歌单链接后面的ID:')
urls = 'https://music.163.com/#/playlist?id=' + ids
get_id(urls)
print('结束')