Pyhton酷我音乐爬取,爬虫MP3文件下载核心代码

Pyhton酷我音乐爬取MP3文件案例

一、数据爬取思路分析

找到数据来源,通过浏览器抓包工具

通过网络标签和关键字搜索

查看网页源代码,找到数据位置

确定实现思路和技术实现方式

二、代码实现

发送请求

获取数据

解析数据

保存数据

使用会员登录可下载所有列表歌曲,非会员只能下载免费的MP3歌曲
支持分页下载,下载所有分页列表歌曲

关注微信公众号【站在前沿】,回复kuwo,获取完整代码下载地址

kuwo.py

def downMp3s(musicIds, musicNames):
    for musicId, musicName in zip(musicIds, musicNames):
        url = f'http://www.kuwo.cn/api/v1/www/music/playUrl?mid={musicId}&type=music&httpsStatus=1&reqId=7e2a25c3-51e3-11ee-b0bd-49dd3fc18b18&plat=web_www&from='
        # logging.debug(until.getResJson(url=url, headers=headers))
        code = until.getResJson(url=url, headers=headers)['code']
        if code == 200:
            downUrl = until.getResJson(url=url, headers=headers)['data']['url']
            # logging.debug(downUrl)
            until.downBinFile(downUrl, '', 'mp3', musicName + '.mp3')
            logging.info('歌曲:' + musicName + '.mp3 下载完成')
        elif code == -1:
            logging.info('歌曲:' + musicName + '为付费内容,无法下载')
        else:
            logging.info('歌曲:' + musicName + '下载时返回Code为' + code)


if __name__ == '__main__':
    urlMp3List = 'http://www.kuwo.cn/api/www/bang/bang/musicList'
    params = {
        "bangId": "93",
        "pn": "1",
        "rn": "20",
        "httpsStatus": "1",
        "reqId": "787a5650-51e8-11ee-adef-53b278c91f8b",
        "plat": "web_www",
        "from": ""
    }
    for pn in range(1, 16):
        params['pn'] = str(pn)
        mp3List = until.getResJson3(urlMp3List, headers, params)
        # pprint.pprint(mp3List)
        musicIds = []
        musicNames = []
        for i in range(0, 20):
            musicIds.append(mp3List['data']['musicList'][i]['rid'])
            musicNames.append(mp3List['data']['musicList'][i]['name'])
        # logging.debug(musicIds)
        # logging.debug(musicNames)
        # 开始下载当前页的歌曲列表
        downMp3s(musicIds, musicNames)
        logging.info('===============第' + str(pn) + '页下载完成=================')

关注微信公众号【站在前沿】,回复kuwo,获取完整代码下载地址 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值