参考博客:https://www.w3cschool.cn/article/14374

import requests
import os
import time
import re
import urllibclass Downloader():id=1def __init__(self):self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}#根据歌曲名构造完整链接来搜索需要下载的歌曲信息self.search_url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.top&searchid=34725291680541638&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w={}&g_tk=5381&jsonpCallback=MusicJsonCallback703296236531272&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0'#第一个接口返回的信息来构造完整链接来获取歌曲下载地址的部分信息self.fcg_url = 'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=5381&jsonpCallback=MusicJsonCallback9239412173137234&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&cid=205361747&callback=MusicJsonCallback9239412173137234&uin=0&songmid={}&filename={}.m4a&guid=8208467632'#歌曲下载地址,需要根据前两个接口获取的信息来构造完整链接self.downloader_url = 'http://dl.stream.qqmusic.qq.com/{}.m4a?vkey={}&guid=8208467632&uin=0&fromtag=66'def run(self, keyword, num=1):# Step1# 根据歌名搜索,获取所需的信息print('[INFO]:正在搜索歌曲...')res = requests.get(self.search_url.format(keyword), headers=self.headers).text# media_mid--通过正则获取多媒体idmedia_mid_temp = re.findall('"media_mid":"(.*?)"', res)media_mid = []for i in range(len(media_mid_temp)):media_mid.append('C400'+media_mid_temp[i])# songmid--通果正则获取歌曲idsongmid = re.findall('"lyric_hilight":".*?","mid":"(.*?)","mv"', res)# singer--通过正则获取歌手信息singer_temp = re.findall('"singer":\[.*?\]', res)singer = []for s in singer_temp:singer.append(re.findall('"name":"(.*?)"', s)[0])# songnamesongname = re.findall('},"name":"(.*?)","newStatus"', res)# Step2# 获取下载地址print('[INFO]:正在解析下载地址...')urls = []del_idex = []songname_keep = []singer_keep = []for m in range(len(media_mid)):try:fcg_res = requests.get(self.fcg_url.format(songmid[m], media_mid[m]), headers=self.headers)vkey = re.findall('"vkey":"(.*?)"', fcg_res.text)[0]urls.append(self.downloader_url.format(media_mid[m], vkey))songname_keep.append(songname[m])singer_keep.append(singer[m])except:print('[Warning]:One song lost...')time.sleep(0.5)print("共找到%d首相关歌曲"%(len(urls)))for i in range(1,len(urls)+1):print("%d:%s_%s"%(i,songname_keep[i-1],singer_keep[i-1]))id=input("请选择要下载的歌曲ID号(备注:数字只能为当期所显示的数字ID):")while(True):if id.isdigit():if int(id)>len(urls):id=input("输入的整数必须为所显示的ID中的一个:")else:print('[INFO]:开始下载歌曲...')breakelse:id=input("请重新输入,ID必须为整数:")index=int(id)-1filepath = './results/{}'.format(songname_keep[index].replace("\\", "").replace("/", "").replace(" ", "")+'_'+singer_keep[index].replace("\\", "").replace("/", "").replace(" ", "")+'.m4a')urllib.request.urlretrieve(urls[index], filepath)if __name__ == '__main__':while True:print('[INFO]:欢迎使用QQ音乐下载器...')print('[Author]:腾讯音乐')keyword = input('请输入歌曲名称:')print("正在初始化参数:")dl = Downloader()dl.run(keyword, songnum)

Python爬取QQ音乐并下载相关推荐

  1. python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载

    QQ音乐还是有不少的好音乐,有些时候想要下载好听的音乐,如果在网页下载都是还需要登录什么的.于是,来了个QQmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧. 参考 ...

  2. Python爬取QQ音乐url及批量下载

    QQ音乐还是有不少的好音乐,有些时候想要下载好听的音乐,如果在网页下载都是还需要登录什么的.于是,来了个QQmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧. 参考 ...

  3. python爬取QQ音乐免费歌曲 2020.7.26

    python爬取qq音乐免费歌曲 2020.7.26 目标分析 获取音乐列表 1.浏览器网络请求追踪 2.寻找音乐列表 解析qq音乐 1.下载连接组成 2.获取vkey 3.获取sign参数 关系图 ...

  4. python爬取qq音乐标签_Python爬取qq音乐的过程实例

    一.前言 qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的.于是,来了个qqmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元 ...

  5. python爬取qq音乐歌曲链接为什么播放不出来_手把手教你使用Python抓取QQ音乐数据(第一弹)...

    原标题:手把手教你使用Python抓取QQ音乐数据(第一弹) [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. ...

  6. Python爬取QQ音乐内地专辑

    好久没写博客,中间玩了两天基于python的web开发,然继续学爬虫了,花三天做了一个小练习,爬取qq音乐所有的内地专辑内容 用到的工具:Chrome.Pycharm社区版.Anaconda Pych ...

  7. python爬取qq音乐周杰伦首页歌词

    #爬取qq音乐周杰伦首页歌词 #未名编程 import requests from bs4 import BeautifulSoup import json import reURL = 'https ...

  8. python爬音乐网站_用 Python 爬取 QQ 音乐全部歌曲

    前景介绍 最近小伙伴们听歌的兴趣大涨,网抑云综合症已经遍布各地. 咱们再来抬高一波QQ音乐的热度吧. 土豪充绿钻 和 刷永久绿钻的除外(me) 爬它 目标:https://y.qq.com/porta ...

  9. python爬取qq音乐评论_爬虫:QQ音乐评论

    QQ音乐评论 有些小伙伴反馈,对于爬虫的完整流程,还是不清楚,这边就按顺序,给大家梳理一下 反爬 首先查看一下,我们要爬取的网页,是否反爬(各种侵害人家服务器的事情,我们不能干) QQ音乐网址:htt ...

  10. python爬取QQ音乐评论信息

    QQ音乐评论爬取分析 1.随便选个音乐 2. g_tk函数介绍 3. topid 4. python 代码 5. 结果 1.随便选个音乐 https://y.qq.com/n/yqq/song/003 ...

最新文章

  1. java跨函数跳转_C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧...
  2. Ruby之Tempfile
  3. 活动目录系列之三---域控制器常规卸域
  4. 初学Python——文件操作第二篇
  5. 高精度加减法 1000阶乘求法
  6. graph slam tutorial : 从推导到应用1
  7. sql server 中join 查詢中on後面 加case的用法.
  8. python seaborn 散点图矩阵_初学pandas与seaborn(六)制作散点图矩阵,用python
  9. MYSQL数据库升级
  10. center os 安装 mysql_MySQL数据库之center os 7 Mysql 安装
  11. SD-WAN、MPLS 、IPsec 和物理专线的区别
  12. EI 和 SCI 检索号查询
  13. oracle 按时间每五分钟分割,Oracle 5分钟或30分钟分割方法
  14. VBA的LENB()和Excel的LENB()区别
  15. dellr420部署os_dell r720服务器OS部署
  16. 水星怎么设置网速最快_水星mw300r怎么提高网速
  17. 无线WiFi破解教程(转载)
  18. 换行符不换行的原因与解决方法
  19. 梅科尔工作室-张黎娜-鸿蒙笔记3
  20. bert模型可以做文本主题识别吗_NLP之文本分类:「Tf-Idf、Word2Vec和BERT」三种模型比较...

热门文章

  1. 国内各大互联网公司相关技术博客3.0版 (集合腾讯、阿里、百度、搜狐、新浪、网易、360等共29个)
  2. 计算机鼠标老跳动,电脑鼠标总跳是怎么回事?
  3. meterpreter 监控桌面命令(screenshare)
  4. UDP编程与Socket
  5. Linux内核研究系列之可执行文件格式(转)
  6. 《大型网站技术架构》读后感
  7. 中国省份数据字典表---自用
  8. JEB动态调试debug模式
  9. 采用SyncToy2.1软件实现两台电脑间文件的自动实时同步(亲测有效)
  10. 数值分析常见基本算法及MATLAB代码总结