爬虫爬取下载qq音乐,又跟新的风口相关?(附源码和资料)
↑ 点击上方 “一行数据” 关注 + 星标 ~
每周送书,绝不错过
今年的风口一个接着一个,高产似母猪
年初就骗我屯口罩,现在口罩都降到1毛钱了,我家里的10斤口罩不知道能用到什么时候
后来又骗我屯头盔,刚屯买完头盔,居然说骑电瓶车又不用带头盔了???现在家里亲戚骑自行车的小孩都被强行带上头盔了,对只是为了安全着想
再后来地摊经济又开始了,没有防备一场大雨又让我们回到了解放前,只记得那场大雨之后天台又挤满了很多人
这些风口就像周董的歌词一样,“爱像一阵风,吹完它就走”。真是太无情了
最近又迎来新来的风口,准确来说是从年初持续的一直在刮,就是微信的视频号,下半年视频领域将可能在线上复制当年的百团大战(拭目以待),之前行哥也分享了视频制作的相关教程,后台回复“pr”就可以获取咯
如果要做视频,其中一个蛮重要的环节就是音乐,音乐可能相当于视频的灵魂
作为一个python爱好者,能不能用代码自动下载音乐的想法就立马蹦出,说干就干
qq音乐代码案例
爬取原理很简单
首先我们先来到QQ音乐的官网:https://y.qq.com/,在搜索栏上输入一首歌曲的名称;
如我在上输入最美的期待,按回车来到这个画面
我们首先要得到这些歌曲名称和其他一些信息,鼠标右键查看源代码发现这些数据应该应用了反爬虫,鼠标右键点击检查,点击NetWork,然后点击XHR,按F5刷新,然后点击
https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=66920929169890801&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w=%E6%9C%80%E7%BE%8E%E7%9A%84%E6%9C%9F%E5%BE%85&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0这个网址,如下图:
发现这里好像有我们需要的数据
那么这个网址要怎样才能得到呢!其实也不难发现,就下面的那个w=不同而已,对于不同歌曲。
而这个w=后面的那个数据好像就是我输入的歌曲名,最美的期待,只不过这里对于这个进行了编码罢了。
我们只要这样输入就可以了
from urllib import parsew=parse.urlencode({'w':input('输入歌名:')})url='https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=63229658163010696&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&%s&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0'%(w)print(url)
这样我们就得到了这个url
这样得到的数据是一个字符串,这个字符串类似‘{'key':{'key_1':1}}’,我们可以导入json模块,来处理它,这样我们得到的数据就是一个字典了。
我们点击其中的一首歌试听,来到这个界面
右击鼠标,点击检查,点击NetWork,点击XHR,找到下面这个网址发现
在这里我们可以发现有这首歌曲的下载地址,发现purl下面的一个参数是上面得到的那个数据中的’mid‘,只要将两者结合起来,就可以下载这首歌曲了。
源代码如下
import urllib.parse as parse
from urllib.request import urlretrieve
import requests
import json
import os
import time
import sysdef Time_1(): # 进度条函数for i in range(1, 51):sys.stdout.write('\r')sys.stdout.write('{0}% |{1}'.format(int(i % 51) * 2, int(i % 51) * '■'))sys.stdout.flush()time.sleep(0.125)sys.stdout.write('\n')print('''
公众号:一行数据
''')
w = parse.urlencode({'w': input('输入歌名:')})
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=63229658163010696&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&%s&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0' % (w)
content = requests.get(url=url)
str_1 = content.text
dict_1 = json.loads(str_1)
song_list = dict_1['data']['song']['list']
str_3 = '''https://u.y.qq.com/cgi-bin/musicu.fcg?-=getplaysongvkey5559460738919986&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0&data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"1825194589","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"1825194589","songmid":["%s"],"songtype":[0],"uin":"0","loginflag":1,"platform":"20"}},"comm":{"uin":0,"format":"json","ct":24,"cv":0}}'''
url_list = []
music_name = []for i in range(len(song_list)):music_name.append(song_list[i]['name'] + '-' + song_list[i]['singer'][0]['name'])print('{}.{}-{}'.format(i + 1, song_list[i]['name'], song_list[i]['singer'][0]['name']))url_list.append(str_3 % (song_list[i]['mid']))id = int(input('请输入你想下载的音乐序号:'))
content_json = requests.get(url=url_list[id - 1])
dict_2 = json.loads(content_json.text)
url_ip = dict_2['req']['data']['freeflowsip'][1]
purl = dict_2['req_0']['data']['midurlinfo'][0]['purl']
downlad = url_ip + purltry:os.mkdir('./QQ音乐')
except:pass
finally:try:print('开始下载...')urlretrieve(url=downlad, filename='./QQ音乐/{}.mp3'.format(music_name[id - 1]))Time_1()print('{}.mp3下载完成!'.format(music_name[id - 1]))except Exception as e:print(e, '对不起,你没有该歌曲的版权!')
运行结果如下:
当然这个代码有个缺点,就是不能下载付费歌曲,网上大部分下载qq音乐付费歌曲的代码大多都只是个噱头,毕竟腾讯每年花几百上千万的安全人员不是吃白饭的,所以涉及到付费歌曲下载的代码这里先不提。
「参考:https://www.cnblogs.com/liuze-2/p/12409823.html」
不仅仅是qq音乐
技术爱好者的第一思维这个程序我能不能实现,如果效率高那还好,如果不高的我们可以借鉴其它现成方法,之前行哥也分享过使用一行代码下载全网视频音乐,想了解了的可以去看一下
你敢信?一行python代码能下载全网视频
当然还有很多不会写代码的读者想在网上直接下载,但须注意不得侵犯他人版权。这里行哥也搜罗了很多免费好用的无版权的音乐来源供大家使用:
FreePD:用 emoji 表情来指代歌曲风格,十分形象,网站中所有的歌曲都可以单独免费下载,你也可以选择花费 10 美元一次性下载 800 个音乐。
爱给网:中文网站爱给网包含了免费可商用的音乐素材和商用素材,选择 CC 协议类素材库即可下载免费可商用的音乐素材。
audionautix:该网站音乐可免费使用,但需标明音乐来源于该网站。
musopen:网站提供的音乐大部分是古典音乐,全部都可以免费下载。
soundcloud:soundcloud 提供了大量的免费商用音乐素材,搜索类型后,选择可商用传播的音乐素材即可。
bensound:bensound 里的音乐均可免费下载,但需注明音乐来源于该网站。
YouTube 免费音乐库:YouTube 免费音乐库中所有音乐均可免费下载。
往期推荐
对了,可以加下行哥微信好友,私聊回复「02」可以领取5T编程资料哦
无论做什么,积累才是王道
祝三连的读者今年能再暴富一次!!!!!
爬虫爬取下载qq音乐,又跟新的风口相关?(附源码和资料)相关推荐
- python利用charles爬虫爬取下载qq音乐歌单里的歌曲——多进程
因为这是我第一个独立实践的爬虫项目,所以这次把思路都放上来了 特别注意,用的是charles,可以拦截查看url 知识点: ·······利用charles分析网页,抓包,得出对应URL ······ ...
- Python爬虫爬取表情包+Autojs微信自动导入表情包脚本(附源码)
废话不多说直接开始 Python爬取表情包 一.检查网页源码 发现可以找到图片地址,直接请求图片地址下载图片 二.打开开发者工具(F12) 通过xpath提取p标签下的img标签src属性为图片地址 ...
- 爬虫实战—爬取房天下全国所有的楼盘并入库(附源码)
1.创建项目 使用命令创建scrapy项目:scrapy startproject fang进入到spiders文件中: cd fang/fang/spiders创建爬虫文件:scrapy gensp ...
- 买二手房不用愁,Python爬虫一键爬取海量二手房源,分分钟找到心仪房子!【附源码】
一.前言 之前有买二手房的需求,苦于房源太多无从下手,一个一个看又太慢,所以借助 Python 批量爬取房源筛选出符合我们调解的房源,再看的话会节省很多时间. 二.思路 某家上房源比较真实可靠,这里就 ...
- python网络爬虫网易云音乐下载_python网络爬虫爬取网易云音乐
#爬取网易云音乐 url="https://music.163.com/discover/toplist" #歌单连接地址 url2 = 'http://music.163.com ...
- python网易云_用python爬虫爬取网易云音乐
标签: 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去.按键盘F12打开网页调试工具,点击Ne ...
- python爬虫----爬取网易云音乐
使用python爬虫爬取网易云音乐 目录 使用python爬虫爬取网易云音乐 需要使用的模块 开始工作 运行结果 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页 ...
- Python爬取高品质QQ音乐(2)
Python爬取高品质QQ音乐(2) 另一篇文章已经介绍了付费音乐的下载过程:传送门 这一篇主要是说一下爬取不同品质的QQ音乐(默认最高品质). 知识点 1. 通过分析比较URL,判断不同品质音乐附带 ...
- python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇
image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...
- python爬虫,爬取下载图片
python爬虫,爬取下载图片 分别引入以下三个包 from urllib.request import urlopen from bs4 import BeautifulSoup import re ...
最新文章
- 六、MyBatis教程之六注解使用详解
- 更改ORACLE归档路径及归档模式
- Vue:echarts的柱状图怎样按照比例缩小?
- python3 安装opencv_Page20-opencv的编译与安装
- 数据结构与算法 Big O 备忘录与现实
- Mongodb在renameCollection之后,记得千万要立即补建索引
- 实模式切换到保护模式,为什么要开启A20地址线(系统升级产生的兼容性问题)
- 前端学习(1770):前端调试之如何参照站点的manifest
- 用WPF实现在ListView中的鼠标悬停Tooltip显示
- ones eye rand randn diag randperm
- awg710 matlab,利用任意信号发生器模拟高速光驱信号
- 盘点国内外私募基金业绩报酬计提方式
- 雄迈H.265 DVR程序功能升级简介
- matlab 彩色图片分解,MATLAB 彩色图像分割
- 2019年冬 --11月24周总结
- 微信点餐系统html,SpringBoot实战——微信点餐系统(示例代码)
- 关于测试思维的个人思考框架
- Meta-RL之Optimization as a Model for Few-Shot Learning
- 用pygame写像素游戏地图编辑器
- MATLAB学习笔记-IEEE802.16d模型
热门文章
- fastboot 刷入第三方 Recovery——Android 安装 Xposed 框架那点事
- httpclient下载图片或者其他文件
- Nagel-Schreckenberg(交通流)模型——python实现
- McCabe环路复杂度计算方法
- SAP ABAP 从入门至精通书籍推荐
- docker安装tomcat8
- lfw分类 python_Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)...
- 怎么把vivo强行刷入鸿蒙系统,vivo手机如何强制刷机
- 无需ROOT卸载或禁用vivo Z5手机的内置软件
- Unity联网插件(PUN)