↑ 点击上方 “一行数据” 关注 + 星标 ~

每周送书,绝不错过

image

今年的风口一个接着一个,高产似母猪

  • 年初就骗我屯口罩,现在口罩都降到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&notice=0&platform=yqq.json&needNewCode=0这个网址,如下图:

发现这里好像有我们需要的数据

image

那么这个网址要怎样才能得到呢!其实也不难发现,就下面的那个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&notice=0&platform=yqq.json&needNewCode=0'%(w)print(url)

这样我们就得到了这个url

这样得到的数据是一个字符串,这个字符串类似‘{'key':{'key_1':1}}’,我们可以导入json模块,来处理它,这样我们得到的数据就是一个字典了。

我们点击其中的一首歌试听,来到这个界面

image

右击鼠标,点击检查,点击NetWork,点击XHR,找到下面这个网址发现

image

在这里我们可以发现有这首歌曲的下载地址,发现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&notice=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&notice=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, '对不起,你没有该歌曲的版权!')

运行结果如下:

image

当然这个代码有个缺点,就是不能下载付费歌曲,网上大部分下载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音乐,又跟新的风口相关?(附源码和资料)相关推荐

  1. python利用charles爬虫爬取下载qq音乐歌单里的歌曲——多进程

    因为这是我第一个独立实践的爬虫项目,所以这次把思路都放上来了 特别注意,用的是charles,可以拦截查看url 知识点: ·······利用charles分析网页,抓包,得出对应URL ······ ...

  2. Python爬虫爬取表情包+Autojs微信自动导入表情包脚本(附源码)

    废话不多说直接开始 Python爬取表情包 一.检查网页源码 发现可以找到图片地址,直接请求图片地址下载图片 二.打开开发者工具(F12) 通过xpath提取p标签下的img标签src属性为图片地址 ...

  3. 爬虫实战—爬取房天下全国所有的楼盘并入库(附源码)

    1.创建项目 使用命令创建scrapy项目:scrapy startproject fang进入到spiders文件中: cd fang/fang/spiders创建爬虫文件:scrapy gensp ...

  4. 买二手房不用愁,Python爬虫一键爬取海量二手房源,分分钟找到心仪房子!【附源码】

    一.前言 之前有买二手房的需求,苦于房源太多无从下手,一个一个看又太慢,所以借助 Python 批量爬取房源筛选出符合我们调解的房源,再看的话会节省很多时间. 二.思路 某家上房源比较真实可靠,这里就 ...

  5. python网络爬虫网易云音乐下载_python网络爬虫爬取网易云音乐

    #爬取网易云音乐 url="https://music.163.com/discover/toplist" #歌单连接地址 url2 = 'http://music.163.com ...

  6. python网易云_用python爬虫爬取网易云音乐

    标签: 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去.按键盘F12打开网页调试工具,点击Ne ...

  7. python爬虫----爬取网易云音乐

    使用python爬虫爬取网易云音乐 目录 使用python爬虫爬取网易云音乐 需要使用的模块 开始工作 运行结果 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页 ...

  8. Python爬取高品质QQ音乐(2)

    Python爬取高品质QQ音乐(2) 另一篇文章已经介绍了付费音乐的下载过程:传送门 这一篇主要是说一下爬取不同品质的QQ音乐(默认最高品质). 知识点 1. 通过分析比较URL,判断不同品质音乐附带 ...

  9. python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇

    image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...

  10. python爬虫,爬取下载图片

    python爬虫,爬取下载图片 分别引入以下三个包 from urllib.request import urlopen from bs4 import BeautifulSoup import re ...

最新文章

  1. 六、MyBatis教程之六注解使用详解
  2. 更改ORACLE归档路径及归档模式
  3. Vue:echarts的柱状图怎样按照比例缩小?
  4. python3 安装opencv_Page20-opencv的编译与安装
  5. 数据结构与算法 Big O 备忘录与现实
  6. Mongodb在renameCollection之后,记得千万要立即补建索引
  7. 实模式切换到保护模式,为什么要开启A20地址线(系统升级产生的兼容性问题)
  8. 前端学习(1770):前端调试之如何参照站点的manifest
  9. 用WPF实现在ListView中的鼠标悬停Tooltip显示
  10. ones eye rand randn diag randperm
  11. awg710 matlab,利用任意信号发生器模拟高速光驱信号
  12. 盘点国内外私募基金业绩报酬计提方式
  13. 雄迈H.265 DVR程序功能升级简介
  14. matlab 彩色图片分解,MATLAB 彩色图像分割
  15. 2019年冬 --11月24周总结
  16. 微信点餐系统html,SpringBoot实战——微信点餐系统(示例代码)
  17. 关于测试思维的个人思考框架
  18. Meta-RL之Optimization as a Model for Few-Shot Learning
  19. 用pygame写像素游戏地图编辑器
  20. MATLAB学习笔记-IEEE802.16d模型

热门文章

  1. fastboot 刷入第三方 Recovery——Android 安装 Xposed 框架那点事
  2. httpclient下载图片或者其他文件
  3. Nagel-Schreckenberg(交通流)模型——python实现
  4. McCabe环路复杂度计算方法
  5. SAP ABAP 从入门至精通书籍推荐
  6. docker安装tomcat8
  7. lfw分类 python_Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)...
  8. 怎么把vivo强行刷入鸿蒙系统,vivo手机如何强制刷机
  9. 无需ROOT卸载或禁用vivo Z5手机的内置软件
  10. Unity联网插件(PUN)