首页 > 编程知识 正文

使用Python下载QQ付费音乐

时间:2023-11-22 16:29:46 阅读:289024 作者:TAHD

无论是在QQ音乐还是酷狗音乐上,我们都可以找到一些喜欢的音乐,但是有时候想要下载的时候却要付费,为了方便爬虫下载音乐,我们可以用Python实现下载QQ付费音乐这一个功能。

一、获取音乐的URL

首先,我们需要找到需要下载的音乐的URL。找到音乐URL之后,我们就可以使用Python来实现下载。可以使用开发者工具查看请求过程中发生的信息,如以下请求:

http://y.qq.com/n/yqq/song/002J9Gyl1vZHp2.html

该请求返回了音乐的基本信息,包括音乐的名称,歌手,专辑等信息。

二、获取音乐下载地址

获取音乐下载地址的方式十分简单。根据音乐的URL,我们可以进行如下请求,即可获取到音乐的下载地址:

http://u.y.qq.com/cgi-bin/musicu.fcg?data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"6151940654","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"6151940654","songmid":["003w26Hk1OpGMN"],"songtype":[0],"uin":"25106012","loginflag":1,"platform":"20"}},"comm":{"uin":25106012,"format":"json","ct":24,"cv":0}}

在请求中,参数guid是一个随机的16位整数,songmid表示音乐的MID值。完成请求之后,我们便可以得到音乐的下载地址。

三、下载音乐

下载音乐的方式有很多,但是最简单的方法是使用Python的urllib库进行下载。可以使用如下程序代码来下载音乐:

import urllib.request

url = 'http://dl.stream.qqmusic.qq.com/M800003w26Hk1OpGMN.mp3?vkey=B03500B0BCF186E93C9D5D0A5A8ABE7E5D84F46105C9DE38F1AD855C93DA5D9D2AED57804D7F2E271A10A3BDB5A6F72E4D1D9A6EB94C11D&guid=6151940654&fromtag=8'

urllib.request.urlretrieve(url, 'song.mp3')

该程序会从获取的音乐下载地址中下载音乐,然后保存为song.mp3

四、完整示例代码

下面是完整的Python代码,可以直接使用:

import requests
import json
import urllib.request

headers = {
    'referer': 'http://y.qq.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'
}

songmid = '003w26Hk1OpGMN'
url = 'http://u.y.qq.com/cgi-bin/musicu.fcg?data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"6151940654","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"6151940654","songmid":["'+ songmid +'"],"songtype":[0],"uin":"25106012","loginflag":1,"platform":"20"}},"comm":{"uin":25106012,"format":"json","ct":24,"cv":0}}'

response = requests.get(url, headers=headers)
jsonMusic = json.loads(response.text)
purl = jsonMusic['req_0']['data']['midurlinfo'][0]['purl']
url = 'http://dl.stream.qqmusic.qq.com/'+ purl
print('正在下载')
urllib.request.urlretrieve(url, 'song.mp3')
print('下载完成')

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。