说明一下:运行后,输入kuwo音乐的歌单链接后就会自动下载,无视VIP权限,不过暂时还不完善,只能下载第一页
歌单里面要是有多页的话,翻页功能还没有做
如果需要爬取歌手歌曲,可以参考下面的链接,这个倒是做了翻页
https://blog.csdn.net/Di77HaoWenMing/article/details/109126460话不多说,代码如下:
import requests import json from lxml import etree import os if os.path.exists("E:/kuwo/") == False: os.mkdir("E:/kuwo/") ua = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36', 'Referer':'https://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6', 'csrf':'72WEGN0DZQW', 'Cookie':'_ga=GA1.2.597767892.1600353982; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1600353981,1602857940; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1602857940; _gid=GA1.2.392097668.1602857940; _gat=1; Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1600353987,1602857947; Hm_lpvt_eaa57ca47dacb4ad4f5a257001a3457c=1602857947; kw_token=72WEGN0DZQW'} url = input('请输入歌单地址:') # 例如https://www.kuwo.cn/playlist_detail/3084923277 get_data = requests.get(url=url,headers=ua).text x_data = etree.HTML(get_data) music_url = x_data.xpath('//*[@id="__layout"]/div/div[2]/div/div[1]/div[2]/div[1]/div[2]/div[1]/ul//a/@href') music_rid = [music_url.split('/')[-1] for music_url in music_url] music_name = x_data.xpath('//*[@id="__layout"]/div/div[2]/div/div[1]/div[2]/div[1]/div[2]/div[1]/ul//a/text()') dic = dict(zip(music_name,music_rid)) for name,rid in dic.items(): url2 = f'https://www.kuwo.cn/url?format=mp3&rid={rid}&response=url&type=convert_url3&br=128kmp3&from=web&t=1603210648965&httpsStatus=1&reqId=bfd28261-12ef-11eb-9c32-3923b7660f1f' get_data2 = requests.get(url=url2, headers=ua).text json_data2 = json.loads(get_data2) music_link = json_data2['url'] music = requests.get(url=music_link, headers=ua).content musicfile = 'E:/kuwo/' + name + '.' + music_link.split('.')[-1] print('正在下载: ' + name) with open(musicfile, 'wb') as fp: fp.write(music) print('下载成功!') print('全部下载完成!')运行图:
搞定!