python---爬取QQ音乐

news/2024/10/3 18:01:02

如Cookie为非vip,仅能获取非vip歌曲

1.下载包

pip install jsonpath 

2.代码

import os
import time
import requests
from jsonpath import jsonpathdef search_and_download_qq_music(query_text):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0','Cookie': 'you cookie here'}# 请求的链接# query_text = 'Black Myth wukong'search_url = rf'https://u.y.qq.com/cgi-bin/musicu.fcg?data={{"comm":{{"g_tk":235530277,"uin":"1152921504916411742","format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"h5","needNewCode":1,"ct":23,"cv":0}},"req_0":{{"method":"DoSearchForQQMusicDesktop","module":"music.search.SearchCgiService","param":{{"remoteplace":"txt.mqq.all","searchid":"64237725668973550","search_type":0,"query":"{query_text}","page_num":1,"num_per_page":20}}}}}}'response = requests.get(search_url)music_list = jsonpath(response.json(), '$..data.body.song.list')[0]# print(f'music_list: {music_list}')if not os.path.exists('Q Music'):os.mkdir('Q Music')for item in music_list:music_mid = jsonpath(item, '$.mid')[0]music_name = jsonpath(item, '$.name')[0]# print(f'music_name: {music_name}, music_mid: {music_mid}')music_data_url = rf'https://u.y.qq.com/cgi-bin/musicu.fcg?data={{"comm":{{"cv":4747474,"ct":24,"format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"yqq.json","needNewCode":1,"uin":"1152921504916411742","g_tk_new_20200303":1849600344,"g_tk":1849600344}},"req_9":{{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{{"guid":"4868259520","songmid":["{music_mid}"],"songtype":[0],"uin":"1152921504916411742","loginflag":1,"platform":"20"}}}}}}'music_data_response = requests.get(music_data_url)# print(f'music_data_response: {music_data_response.json()}')data_info = jsonpath(music_data_response.json(), '$..purl')[0]# print(f'data_info: {data_info}')music_url = f'https://dl.stream.qqmusic.qq.com/{data_info}'music_response = requests.get(music_url, headers=headers)with open(f'./Q Music/{music_name}.mp3', 'wb') as file:file.write(music_response.content)print(f'《{music_name}》下载成功')print("-" * 20)time.sleep(0.5)# breaksearch_and_download_qq_music("Black Myth wukong")

如果有所帮助请给个免费的赞吧~有人看才是支撑我写下去的动力!

声明:
本文仅用作学习记录和交流


https://dhexx.cn/news/show-5415232.html

相关文章

13、Django Admin创建两个独立的管理站点

admin文件 from .models import Epic, Event, EventHero, EventVillain from django.contrib.admin import AdminSiteclass EventAdminSite(AdminSite):site_header "Events管理"site_title "欢迎您!"index_title "管理员"even…

STM32——看门狗(独立/窗口)

程序运行的保障措施,需要在程序中定期喂狗实现,如果某次没有喂,表示程序出现卡死或者其他状态,此时看门狗就会自动复位电路,防止程序长时间卡死。相当于自动复位电路。 独立看门狗:有单独的时钟LSI 窗口看…

导出硬盘所有文件名到txt文本文件——C#学习笔记

下面的示例演示如何使用递归遍历目录树。递归方法很简洁,但如果目录树很大且嵌套很深,则有可能会引起堆栈溢出异常。 对于所处理的特定异常以及在每个文件和文件夹上执行的特定操作,都只是作为示例提供。您应该修改此代码来满足自己特定的需…

笔记1111

在头文件申明类在.CPP里面包含类的头文件

Android的Launch

看了一下资料,其实差别并不像一般的bootloader之类那么大。基本上还是和普通的APK程序差不多,基本上是AMS启动的第一个带界面的程序,这个界面也是常规的开发模式。可以设置各种view,可以设置背景。 然后在这个程序中,…

Python 默认列表(Default List):一种灵活的数据结构

Python中的默认列表(Default List)是一种特殊的数据结构,它允许我们创建一个包含特定元素类型的列表,并在需要时动态地添加或删除元素。这种灵活性使得默认列表成为了处理一些不确定或变化的数据的有力工具。 创建列表时指定元素类…

微信小程序、uniapp前端面试题

使用微信小程序 官方文档 小程序配置 一、微信小程序项目结构主要有四个文件类型 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。内部主要是微信自己定义的一套组件WX…

ChatGPT 3.5/4.0新手使用手册

一、ChatGPT 简介 ChatGPT 是由 OpenAI 开发的一种基于人工智能技术的聊天机器人,它能够自动生成自然语言的响应,与用户进行高质量的对话。ChatGPT 3.5 和 4.0 是该系列的最新版本,在自然语言处理、对话能力和知识整合等方面进行了显著的提升…

数学建模统计题中常用的聚类分类

聚类分类 K均值聚类(K-Means Clustering)是一种广泛使用的聚类算法,旨在将数据点分成K个簇,使得簇内的数据点尽可能相似,而簇间的数据点差异尽可能大。以下是对K均值聚类的详细介绍: 算法原理 K均值聚类算…

【Spring Boot 3】【Web】处理跨域资源共享 CORS

【Spring Boot 3】【Web】处理跨域资源共享 CORS 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术…