用Python爬取酷狗音乐并且下载

 1、成果展示

 2、完整代码

import json
import requests
import  hashlib
import  re
import time
from DrissionPage import ChromiumPage

word = input("请输入你要搜索的歌曲或歌手")

def nowtime():
    return int(time.time() * 1000)
def search(word):
    data = [
        "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
        "appid=1014",
        "bitrate=0",
        "callback=callback123",
        f"clienttime={nowtime()}",
        "clientver=1000",
        "dfid=1bmpSu4epLVa0xpWqN2eZKXE",
        "filter=10",
        "inputtype=0",
        "iscorrection=1",
        "isfuzzy=0",
        f"keyword={word}",
        "mid=1944b08c73647da436fb7cb92a508c8c",
        "page=1",
        "pagesize=30",
        "platform=WebFilter",
        "privilege_filter=0",
        "srcappid=2919",
        "token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0"
        "userid=2143792474",
        "uuid=1944b08c73647da436fb7cb92a508c8c",
        "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"
    ]
    string = ''.join(data)
    # print(string)
    MD5 = hashlib.md5()
    MD5.update(string.encode('utf-8'))
    signature = MD5.hexdigest()
    url = f"https://complexsearch.kugou.com/v2/search/song?callback=callback123&srcappid=2919&clientver=1000&clienttime={nowtime()}&mid=1944b08c73647da436fb7cb92a508c8c&uuid=1944b08c73647da436fb7cb92a508c8c&dfid=1bmpSu4epLVa0xpWqN2eZKXE&keyword={word}&page=1&pagesize=30&bitrate=0&isfuzzy=0&inputtype=0&platform=WebFilter&userid=2143792474&iscorrection=1&privilege_filter=0&filter=10&token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0&appid=1014&signature={signature}"
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}
    html = requests.get(url, headers=header)
    shuju = re.findall('callback123\((.*)\)', html.text)[0]
    # print(shuju)
    data_list = json.loads(shuju)
    num = 1
    x = []
    y = []
    for i in data_list['data']['lists']:
        zhuanji = i['AlbumName']
        name_list = i['FileName']
        x.append(i['EMixSongID'])
        y.append(name_list)
        print(f"{num}歌曲:{name_list}专辑:{zhuanji}")
        num += 1
    j = int(input("你要下载的歌曲是:(请输入编号)"))
    for i in range(len(x)):
        if i + 1 == j:
            music_id = x[i]
            music_name = y[i]
            break

    data = ["NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
            "appid=1014",
            f"clienttime={nowtime()}",
            "clientver=20000",
            "dfid=1bmpSu4epLVa0xpWqN2eZKXE",
            f"encode_album_audio_id={music_id}",
            "mid=1944b08c73647da436fb7cb92a508c8c",
            "platid=4",
            "srcappid=2919",
            "token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0",
            "userid=2143792474",
            "uuid=1944b08c73647da436fb7cb92a508c8c",
            "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"]
    string = ''.join(data)
    MD5 = hashlib.md5()
    MD5.update(string.encode('utf-8'))
    signature = MD5.hexdigest()
    return loading(music_id,signature,music_name)


def open_music(url_new):
    page = ChromiumPage()
    page.get(url_new)  # 打开
    exit(1)


def loading(music_id,signature,music_name):
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}
    url_new = f"https://wwwapi.kugou.com/play/songinfo?srcappid=2919&clientver=20000&clienttime={nowtime()}&mid=1944b08c73647da436fb7cb92a508c8c&uuid=1944b08c73647da436fb7cb92a508c8c&dfid=1bmpSu4epLVa0xpWqN2eZKXE&appid=1014&platid=4&encode_album_audio_id={music_id}&token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0&userid=2143792474&signature={signature}"
    html = requests.get(url_new, headers=header)
    sj = html.json()["data"]['play_url']
    yinyue = requests.get(sj, headers=header).content
    print(html.json()["data"]["audio_name"],'\t', html.json()["data"]['play_url'])
    with open(f'./{music_name}.mp3', 'wb') as f:
        f.write(yinyue)
    return html.json()["data"]['play_url']

music_url = search(word)
# print(music_url)
open_music(music_url)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值