Python爬取qq music中的音乐url及批量下载

发布时间 - 2026-01-11 00:19:08    点击率:

前言

qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的。于是,来了个qqmusic的爬虫。至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧。下面开始找吧(讲的不对不要笑我)

实现如下

#寻找url:

  这个url可不想其他的网站那么好找。把我给累得不轻,关键是数据多,从那么多数据里面挑出有用的数据,最后组合为music真正的music。昨天做的时候整理的几个中间url:

#url1:https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&lossless=0&flag_qc=0&p=1&n=20&w=雨蝶

#url2:https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&[songmid]&C400+songmid+.m4a&guid=6612300644

#url3:http://dl.stream.qqmusic.qq.com/[filename]?vkey=[vkey](其中vkey代替该music特有的字符串)

requests(url1)

由搜索列表得到每个音乐的的songmid和mid(通过笔者观察,这两个值是每一个music特有的)。有了这两个值。下面就得到了完整的url2的具体值。

requests(url2)

得到搜索结果中每个music的vkey值,经过笔者观察,filename即为C400songmid.m4a。进而确定了url3的具体值。而url3即为音乐的真实url,由于笔者对此url的其他参数研究的不够透彻,因此每次最多返回20首music的url,有了url,那Tencent的music就可以尽情的享受了。

#代码

下面来个srcs的代码块:

import requests
import urllib
import json
word = '雨蝶'
res1 = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w='+word)
jm1 = json.loads(res1.text.strip('callback()[]'))
jm1 = jm1['data']['song']['list']
mids = []
songmids = []
srcs = []
songnames = []
singers = []
for j in jm1:
 try:
  mids.append(j['media_mid'])
  songmids.append(j['songmid'])
  songnames.append(j['songname'])
  singers.append(j['singer'][0]['name'])
 except:
  print('wrong')


for n in range(0,len(mids)):
 res2 = requests.get('https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&songmid='+songmids[n]+'&filename=C400'+mids[n]+'.m4a&guid=6612300644')
 jm2 = json.loads(res2.text)
 vkey = jm2['data']['items'][0]['vkey']
 srcs.append('http://dl.stream.qqmusic.qq.com/C400'+mids[n]+'.m4a?vkey='+vkey+'&guid=6612300644&uin=0&fromtag=66')

#下载:

有了srcs,下载自然不成问题。当然获取歌手以及歌名也是可以把src复制到浏览器下载。也可以用大Python批量下载,无非就是一个循环,跟我们前面下载sogou图片方法类似:(笔者py版本:python3.3.3)

print('For '+word+' Start download...') 
x = len(srcs)
for m in range(0,x):
 print(str(m)+'***** '+songnames[m]+' - '+singers[m]+'.m4a *****'+' Downloading...')
 try:
  urllib.request.urlretrieve(srcs[m],'d:/music/'+songnames[m]+' - '+singers[m]+'.m4a')
 except:
  x = x - 1
  print('Download wrong~')
print('For ['+word+'] Download complete '+str(x)+'files !')

以上两段代码,写在同一py文件,运行即可下载对应关键词的music

#运行效果:

 

下载开始,下面...到下载目录看看:

music已经成功下载。。。

至此,关于qqmusic的url爬虫程序思路及实现叙述完毕。

#用途:

musicplayer做好壳子的同学,应该用得上吧。其实做这个初衷是要为我的基于html的musicplayer服务的。但现在卡在了js调用py的环节,我再找找吧,明白的同学望告知,万分感谢!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# 爬取qq音乐  # python爬取网易音乐  # python爬取网页数据  # 基于python实现的百度音乐下载器python pyqt改进版(附代码)  # python实现音乐下载器  # python 根据列表批量下载网易云音乐的免费音乐  # 基于Python实现下载网易音乐代码实例  # python实现音乐播放和下载小程序功能  # python实现可下载音乐的音乐播放器  # 如何基于Python批量下载音乐  # python Selenium实现付费音乐批量下载的实现方法  # python获取酷狗音乐top500的下载地址 MP3格式  # 用python制作个音乐下载器  # 关键词  # 这两个  # 特有的  # 即为  # 都是  # 几个  # 来了  # 我觉得  # 最多  # 那么多  # 可以用  # 其他的  # 我给  # 我再  # 就得  # 这篇文章  # 搜索结果  # 来个  # 谢谢大家  # 要为 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Android滚轮选择时间控件使用详解  Laravel如何实现API速率限制?(Rate Limiting教程)  python中快速进行多个字符替换的方法小结  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  nginx修改上传文件大小限制的方法  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何用PHP快速搭建高效网站?分步指南  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Linux系统命令中tree命令详解  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何正确选择百度移动适配建站域名?  如何在IIS7上新建站点并设置安全权限?  如何挑选高效建站主机与优质域名?  Laravel如何使用模型观察者?(Observer代码示例)  如何用已有域名快速搭建网站?  Python结构化数据采集_字段抽取解析【教程】  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  高性能网站服务器部署指南:稳定运行与安全配置优化方案  EditPlus中的正则表达式 实战(2)  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel怎么在Blade中安全地输出原始HTML内容  如何用花生壳三步快速搭建专属网站?  如何在建站之星绑定自定义域名?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel如何使用withoutEvents方法临时禁用模型事件  详解Huffman编码算法之Java实现  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  大型企业网站制作流程,做网站需要注册公司吗?  Laravel怎么为数据库表字段添加索引以优化查询  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  海南网站制作公司有哪些,海口网是哪家的?  Laravel如何实现模型的全局作用域?(Global Scope示例)  昵图网官方站入口 昵图网素材图库官网入口  在线教育网站制作平台,山西立德教育官网?  使用C语言编写圣诞表白程序  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Internet Explorer官网直接进入 IE浏览器在线体验版网址  新三国志曹操传主线渭水交兵攻略  如何快速上传建站程序避免常见错误?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何快速搭建自助建站会员专属系统?  Laravel如何使用Eloquent进行子查询  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录