利用Python批量下载自己喜欢听得音乐
前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
音乐是生活的调剂品,目前很多的音乐只能播放不能下载。生为技术员的我们,怎么甘心呢?
知识点:
requests
正则表达式
开发环境:
版 本:anaconda5.2.0(python3.6.5)
编辑器:pycharm
第三方库:
requests
parsel
网页分析
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:127341871
分析音乐的真实地址
选择一首歌 以陈粒的走马为例
打开开发者工具,选择network -> media -> 刷新网页就能获取到音乐的真实地址
但是得到的地址在查看源码中是读取不到的,肯定是百度音乐对其进行了隐藏。这种时候一般会有两种情况。第一种是使用了 JavaScript 对请求连接进行了拼接或加密,第二种是数据被隐藏了。由于我们不清楚是出现了那种情况。所以我们只能慢慢的去分析请求的数据。
经过分析我们可以看到真实的音乐地址是存在于这个API里面http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=jsonp&callback=jQuery17206453751179783578_1544942124991&songid=243093242&from=web&_=1544942128336
并且我们请求这个 API 返回的是一个 json 数据(也就是python的字典数据类型)。只要我们使用字典的规则就能将我们的所有数据给提取到。
url拼接 获取所有数据
前面我们得到了音乐的真实地址,接下来我们就是分析真实地址的 url ,以期待得到下载所有音乐的诀窍。
仔细分析一下 url 就可以发现,?后面的from参数与_即使不存在也不影响数据的请求。
并且后面的参数中的songid其实就是歌曲的唯一id,from参数其实就是表明从哪个平台过来的
所以等一下我们下载音乐时,只要批量获取到歌曲的songid就能将所有的歌曲给全部下载下来了。
批量获取singid
使用开发者工具,查看网页源码就能查看到songid的位置,如果我们分析一个歌手页面的url你会发现同样可以构造。
到此,整个网页分析就结束了。
实现效果
完整代码
import re
import requests
def get_songid():
"""获取音乐的songid"""
url = 'http://music.taihe.com/artist/2517'
response = requests.get(url=url)
html = response.text
sids = re.findall(r'href="/song/(\d+)"', html)
return sids
def get_music_url(songid):
"""获取下载链接"""
api_url = f'http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=jsonp&songid={songid}&from=web'
response = requests.get(api_url.format(songid=songid))
data = response.json()
print(data)
try:
music_name = data['songinfo']['title']
music_url = data['bitrate']['file_link']
return music_name, music_url
except Exception as e:
print(e)
def download_music(music_name, music_url):
"""下载音乐"""
response = requests.get(music_url)
content = response.content
save_file(music_name+'.mp3', content)
def save_file(filename, content):
"""保存音乐"""
with open(file=filename, mode="wb") as f:
f.write(content)
if __name__ == "__main__":
for song_id in get_songid():
music_name, music_url = get_music_url(song_id)
download_music(music_name, music_url)
利用Python批量下载自己喜欢听得音乐相关推荐
- python怎么下载网络歌曲_教你如何用Python批量下载自己喜欢听得音乐
文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 音乐是生活的调剂品,目前很多的音乐只能播放不能下载.生为技术员的我们,怎么甘心呢? ...
- 利用python 批量下载美拍视频
前些日子写了一个利用Python批量下载微博配图的程序,因为是基于微博的移动端,即weibo.cn ,难度要小很多.而当我面对美拍时却发现,好像有点困难啊. 美拍的页面有很多动态元素,当我们打开某一 ...
- 利用python批量下载美拍视频
前些日子写了一个利用python批量下载微博配图的程序,因为是基于微博的移动端,即weibo.cn ,难度要小很多.而当我面对美拍时却发现,好像有点困难啊. 美拍的页面有很多动态元素,当我们打开某一 ...
- 利用Python批量下载必由学答题卡
零.序言 在期末语文考试结束后,班主任老师想要下载一些高分作文的答题卡,但人工操作下载一张张答题卡是一个费时费力还会出现很多失误的工作,所以笔者决定尝试利用Python编写程序解决该问题. 一.分析目 ...
- 利用Python批量下载学生PDF教材
作为一个业余爱好者,一直在CSDN学习,终于有机会也来写一篇记录一下这两天的成果. 最近因为网课上线,教育部公开了义务教育用书的电子版本,出于好奇打开看了看,看网站上不仅可以在线观看,还能够下载,于是 ...
- python利用多线程批量下载高清美女图片(350秒下载近3600张1.2个G的照片,地址可变)
目录 第一章.前言 1.1.实现的效果: 1.2.需要用到的库: 第二章.代码分块讲解 2.1.对象的定义和初始化 2.2.方法1和2获取所有图集链接 2.2.1. 对应网站结构 2.2.2 .相应代 ...
- Python爬虫——利用Scrapy批量下载图片
Python爬虫--利用Scrapy批量下载图片 Scrapy下载图片项目介绍 使用Scrapy下载图片 项目创建 项目预览 创建爬虫文件 项目组件介绍 Scrapy爬虫流程介绍 页面结构分析 定义I ...
- python实现动态壁纸_利用Python批量提取Win10锁屏壁纸实战教程
前言 相信使用Win10的朋友会发现,每次开机锁屏界面都会有不一样的漂亮图片,这些图片通常选自优秀的摄影作品,十分精美. 但是由于系统会自动更换这些图片,所以就算再好看的图片,也许下次开机之后就被替换 ...
- json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?
本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...
最新文章
- c语言中 运算对象必须是整型数的运算符是,在C语言中,运算对象必须是整型数的运算符是...
- nginx try_files的理解
- Hexo搭建个人网站
- 中国高压断路器(QF)行业发展战略及创新前景展望报告2022-2028年版
- AliRTC 开启视频互动 “零计算” 时代
- 德勤发布2021年度企业AI应用现状报告,AI驱动已成竞争必需品
- 使用Aptana搭建Python开发环境
- markdown快速创建表格及内容工具
- Amoeba Architecture
- [线性模型总结] 线性回归+方差分析+协方差分析+混合效应+面板数据模型
- 「ZigBee模块」基础实验(1)点亮LED
- 同问 集成网卡和独立网卡哪个好?
- 度量python的运行时间
- 很好的东子(干货很多)--把一个函数变成全局的方法及slideToggle()
- python中np.array的shape(2,)与shape(1 ,2)的运算细节
- asterisk连接sip139网络电话
- 光模块:PCB设计方法
- Elliptic Curve Cryptography: a gentle introduction
- crc16校验c语言单片机实现,三种常用的CRC16校验算法的C51程序的优化
- 米家电磁炉显示e10_米家电磁炉深度使用解析 这才是我想要的
热门文章
- 3D立体相册模板(大小可更改)
- clustMD r语言_使用vsearch,usearch和R语言进行16s扩增子分析
- Revit连接Access数据库
- 感《明朝后期的中缅战争》
- kali linux 中字符映射错误,#、\、|、“ 不能输入
- raid1硬盘计算机能读取,raid 1如何知道有两块硬盘
- 《深入理解计算机系统》实验二Bomb Lab
- 12306余票查询(五)——网页模板制作
- 程序综合实验一 计算器设计与实现
- 操作系统学习笔记——北京大学陈向群老师课后及习题答案(2)