采用Python爬虫根据搜索关键词批量爬取酷我音乐(附源码)

1.首先得先登录网页版酷我音乐,然后在请求头找到自己的cookie,将其全部复制下来,并替换掉我源码中的cookie,

2.注意替换cookie时,有两处都得替换掉,headers中的cookie也得替换

3.运行之前需要提前创建好文件夹 例如我的 D:/ms/

源码

import os
import time

import requests

# cookies,登录账号后很容易在请求头中找到自己的cookies
cookies = "Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1715048114; _ga=GA1.2.1739561591.1715048115; _gid=GA1.2.1856217082.1715048115; uname3=HHH; t3kwid=332437870; userid=332437870; websid=169907409; pic3='http://q.qlogo.cn/qqapp/100243533/DB73BA2BF7E5054F51F97D77DF31FC5A/100'; t3=qq; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1715048152; _ga_ETPBRPM9ML=GS1.2.1715048115.1.1.1715049708.60.0.0; Hm_Iuvt_cdb524f42f23cer9b268564v7y735ewrq2324=G8B3aXZbcpANpQcciKB7zpXxK268TbTA"
# 构造请求头
headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Encoding': 'gzip, deflate, br, zstd',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'Connection': 'keep-alive',
    'Cookie': 'Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1715048114; _ga=GA1.2.1739561591.1715048115; _gid=GA1.2.1856217082.1715048115; uname3=HHH; t3kwid=332437870; userid=332437870; websid=169907409; pic3="http://q.qlogo.cn/qqapp/100243533/DB73BA2BF7E5054F51F97D77DF31FC5A/100"; t3=qq; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1715048152; _ga_ETPBRPM9ML=GS1.2.1715048115.1.1.1715049708.60.0.0; Hm_Iuvt_cdb524f42f23cer9b268564v7y735ewrq2324=G8B3aXZbcpANpQcciKB7zpXxK268TbTA',
    'Referer': 'https://kuwo.cn/',
    'Host': 'kuwo.cn',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'Secret': '6468c991707f3249bd55e1df3bebd24e6184b3e04d8ac47f42b24da1d2e431cd03377e61',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0',
    'sec-ch-ua': '"Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}

cookie_dict = {i.split("=", 1)[0]:i.split("=", 1)[-1] for i in cookies.split("; ")}


def download_music(url, filepath):
    # 发送 GET 请求下载文件
    response = requests.get(url, stream=True)

    # 检查响应状态码是否为 200 (OK)
    if response.status_code == 200:
        # 打开本地文件,以二进制写入模式写入数据
        with open(filepath, 'wb') as f:
            # 逐步将响应内容写入文件
            for chunk in response.iter_content(chunk_size=1024):
                f.write(chunk)
        print(f"下载完成:{filepath}")
    else:
        print(f"下载失败:{filepath}")

#keyword即为你搜索的歌曲关键词
def get_song_info(keyword):

    # 请求时需要的参数
    params2={
        'vipver':1,
        'client':'kt',
        'ft':'music',
        'cluster':0,
        'strategy': 2012,
        'encoding': 'utf8',
        'rformat': 'json',
        'mobi': 1,
        'issubtitle': 1,
        'show_copyright_off': 1,
        'pn': 0,
        'rn': 20,
        'all': keyword
    }


    response = requests.get('https://kuwo.cn/search/searchMusicBykeyWord',
                            params=params2, cookies=cookie_dict, headers=headers)

    # 检查请求是否成功
    if response.status_code == 200:
        # 解析JSON响应
        data = response.json()

        for mid in data['abslist']:

            params1 = {
                'mid': mid['DC_TARGETID'],
                'type': 'music',
                'httpsStatus': '1',
                'reqId': '47414720-0c1d-11ef-805a-8b343e888ff4',
                'plat': 'web_www',
                'from': '',
            }

            params3 = {
                'mid': mid['DC_TARGETID'],
                'httpsStatus': '1',
                'reqId': '47414720-0c1d-11ef-805a-8b343e888ff4',
                'plat': 'web_www',
                'from': '',
            }
            # 获得歌曲基本信息
            responseinfo = requests.get('https://kuwo.cn/api/www/music/musicInfo',
                                    params=params3, cookies=cookie_dict, headers=headers)

            datainfo =responseinfo.json()

            # 获得歌曲播放地址
            responseaddress = requests.get('https://kuwo.cn/api/v1/www/music/playUrl',
                                    params=params1, cookies=cookie_dict, headers=headers)

            dataaddress=responseaddress.json()

            if 'data' not in dataaddress :
                 print('\033[91m' + datainfo['data']['name']+"-"+datainfo['data']['artist']+"歌曲付费,无法下载"+ '\033[0m')
                 continue


            music_url=dataaddress['data']['url']

            # 下载的歌曲的保存地址
            download_dir = "D:/ms/"
            filename = datainfo['data']['name']+"-"+datainfo['data']['artist']+".mp3"
            filepath = os.path.join(download_dir, filename)
            download_music(music_url, filepath)

            # 睡眠一秒钟
            time.sleep(1)


get_song_info("何鹏")


运行效果

仅供学习参考,禁止商业用途

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值