python爬取qq音乐歌曲

news/2024/11/19 22:45:26/

1.找到我们要爬取的歌曲主页

在这里插入图片描述

2.获取歌曲songmid

在这里插入图片描述

3.进入到歌曲播放页找到音频地址

在这里插入图片描述

4.查看音频地址需要的参数

在这里插入图片描述

5.查找vkey参数是怎么来的

在这里插入图片描述

我们再来看返回下载地址和vkey参数的请求地址都需要什么参数呢?

在这里插入图片描述

6.到这里加密参数我们已经弄清楚了,可以开始写代码了。注意!!:网页版的qq音乐它只展示几首音乐,全部音乐需要在客户端里面听。还有代码里面的2325794997是我的qq号 你们可以写自己的也可以写0

from lxml import etree
import requests
import random
import json
headers = [{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1)'' AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/86.0.4240.111 Safari/537.36'},{'User-Agent': "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)"},{'User-Agent': "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)"},{'User-Agent': "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)"},{'User-Agent': "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)"},{'User-Agent': "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6"},{'User-Agent': "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1"},{'User-Agent': "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0"},{'User-Agent': "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5"}]def get_songmid(url):'''获取歌曲id和名称,歌手:param url::return:'''response = requests.get(url=url, headers=random.choice(headers), timeout=5).textpage_html = etree.HTML(response)author = page_html.xpath('/html/body/div[2]/div[1]/div/div[1]/h1[2]/@title')[0]a_list = page_html.xpath('/html/body/div[2]/div[2]/div[1]/div[2]/ul[2]/li/div/div[3]/span/a')for a in a_list:songmid = a.xpath('./@href')[0][22:-5]name = a.xpath('./@title')[0]get_vkey(songmid, name,author)def get_vkey(songmid, name,author):'''获取vkey:param songmind::param name::return:'''data = {"req": {"module": "CDN.SrfCdnDispatchServer", "method": "GetCdnDispatch","param": {"guid": "5831199011", "calltype": 0, "userip": ""}},"req_0": {"module": "vkey.GetVkeyServer", "method": "CgiGetVkey","param": {"guid": "5831199011", "songmid": [songmid], "songtype": [0],"uin": "2325794997", "loginflag": 1, "platform": "20"}},"comm": {"uin": 2325794997, "format": "json", "ct": 24, "cv": 0}} url_vkey_get = "https://u.y.qq.com/cgi-bin/musicu.fcg?callback=“”&g_tk=352421221&jsonpCallback=getplaysongvkey7281977218930408&loginUin=1484232187&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&data="ret = requests.get(url=url_vkey_get+json.dumps(data),headers=random.choice(headers)).json()purl = ret['req_0']['data']['midurlinfo'][0]['purl']#可以获取vkey 但是purl里面包含vkey是音乐下载地址if purl:download_music(purl,name,author)
def download_music(purl,name,author):ret = requests.get('http://106.120.158.153/amobile.music.tc.qq.com/'+purl,headers=random.choice(headers)).contentwith open(f'{name}-{author}.mp3','wb') as f:f.write(ret)print(f'{name}-{author}','下载完成')if __name__ == '__main__':url = 'https://y.qq.com/n/yqq/singer/001Lr98T0yEWAk.html' #按歌手分类的地址get_songmid(url)

7.成果展示

在这里插入图片描述


http://www.ppmy.cn/news/528678.html

相关文章

python爬虫:爬取QQ音乐歌曲

描述 可以下载QQ音乐免费音乐和绿钻音乐,但是不能下载付费音乐。 运行程序后会在同级目录自动创建名为:歌曲下载的文件夹,下载的文件将被放置在此文件夹 如果下载的文件大小为1KB,则表示下载失败,这首歌不支持下载 源…

Python3运用requests包爬取QQ音乐指定歌手歌曲

Python3应用requests包开发定向爬虫 最近学院给我们开设了Python爬虫课程,请来了外面的公司的老师来给我们进行了为期10天的爬虫课程,实训的日子最近结束,我也有时间把我们平常写的拿来回顾一下写写博客。这个聚焦爬虫可以用来爬取QQ音乐web端…

Python爬虫下载QQ音乐网站歌曲

Python爬虫下载QQ音乐网站歌曲 1.分析QQ音乐网站数据请求url 在QQ音乐搜索歌曲页面,通过浏览器调试工具,监测到向服务器发出的请求,获取到的json数据中list正好保存了对应于单页搜索结果的数据。查看请求header,得到url https:/…

获取QQ音乐歌曲播放源地址

获取QQ音乐歌曲播放源地址 播放源其实是像下面这样的地址: http://isure.stream.qqmusic.qq.com/C400001fOGqI49gjpc.m4a?vkey96FAA1BFF18B22563B3A5FCB3073927D4E0702A0FB769D00158213F614AFBDB0118A0F30322B1EF49B8F2D16A2A1D3B05BCEB2717969EE1D&guid3586…

爬取QQ音乐2W歌单和50W首歌曲

主要运用了Python中的Requests包和json包获取内容,写入到Mongodb数据库并保存,pandas用于导出数据,代码详细我最后会给出github 接口分析并爬取歌单id 我发现html源码并没有我想要的数据,所以分析了Ajax请求,得到了我…

安卓Service实现通知栏音乐播放器,切换歌曲,类似QQ音乐

引言: 这样的一个音乐播放器,用到了安卓四大组件的其中三个,等于说是一个比较综合性的小功能。实现方法其实有很多,我这里给出自己的方法,不喜勿喷。 需求分析 1.音乐播放器,那我们需要一个帮助类&#xff…

QQ音乐MP3下载

QQ音乐MP3下载 没错本次写的内容的对象是我们熟知的QQ Music。 本篇文章涉及内容包括:Python,爬虫,json解析,request 库的使用 缘起 前几天刷B站无意中又刷到了一首神曲,“I Want My Tears Back”,挺好听…

Python下载qq音乐歌曲实例教程

1.目标 实现输入歌曲名下载歌曲的功能。 2.前期工作 mid0014WVQT3nDVyz purlC4000001xPPq0vaUFU.m4a?guid6488443882&vkey9500AB02A1928CBD8BAE5DEE9B7ADB5521EFA232A0E9B941F77BE86B41CAC6726ECE081E248DBEB573CAAD591577B6D1A2F6D24F4476CA8F&uin0&fromtag66 3.…