python实现千千音乐mp3下载
文章来源:https://www.bobobk.com/216.html
进入千千音乐主页面,选择周杰伦的音乐告白气球,发现竟然是2016年的音乐试听都木有,悲伤。那么有没有办法可以获取到mp3文件呢?答案是肯定的。音乐下载可运行程序可在文末获取。
说干就干,打开榜单,选择新歌一首可以试听的,第一首生僻字就可以听。
1.分析接口信息
打开开发者工具,这种音乐文件肯定是通过api提交的,在毛毛多的请求中发现可以获取音乐文件的请求,看图
查看请求详细信息
参数songid在当前url地址http://music.taihe.com/song/611238837里面可以找到,简单,from应该是web或者app之类的,format定义返回数据形式不用改,method不用改,_参数timestamp 13位时间戳,callback是返回数据的json数据的前面的名字,其中下划线后面的1546915161467为13位的timestamp 时间戳,前面的17200943498528136486就不知道是啥意思了,我们先不改变不知道的内容,试试知道含义的内容看看能否获取到信息
python3代码
import requests
import time
apiurl= "http://musicapi.taihe.com/v1/restserver/ting"
callback = "jQuery17200943498528136486_"+str(round(time.time()*1000))
hua = str(round(time.time()*1000))
params = {"method"="baidu.ting.song.playAAC","format":"jsonp","songid":"611238837","from":"web","callback":callback,"_":hua}
text = requests.get(apiurl,params=params).text
text
发现可以获取到结果,那么接下来就是批量下载下来听了。
2.批量下载音乐到本地
由于上面的例子返回的是json格式的文本,那么只需要使用json解析json文本获取mp3文件使用requests下载就可以了。上代码
import requests
import time
import re,jsondef get_song_list():text = requests.get("http://music.taihe.com").textsongid = re.findall(r'href="/song/(\d+)"',text)return songid
def get_mp3_address_and_download(songid): apiurl= "http://musicapi.taihe.com/v1/restserver/ting" callback = "jQuery17200943498528136486_"+str(round(time.time()*1000)) hua = str(round(time.time()*1000)) params = {"method":"baidu.ting.song.playAAC","format":"jsonp","songid":songid,"from":"web","callback":callback,"_":hua} text = json.loads(requests.get(apiurl,params=params).text.split(callback)[1][1:-2])song_address = text["bitrate"]["file_link"]mp3w = open(songid+".mp3",'wb')mp3w.write(requests.get(song_address).content)mp3w.close()
def main():try:for songid in get_song_list():get_mp3_address_and_download(songid)except:print("network error")
这下就完全下载了千千音乐首页的mp3了
3.搜索并下载音乐到本地
#!env python
import requests
import re,json,time,sys
def helpmessage():msg = r'''/\ /\ /\ /\/\//\\/\ /\//\\/\ /\//\\/\ /\//\\/\/\//\\\///\\/\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/ 本程序由 春江暮客 \/\\//\/ 发布在www.bobobk.com 上 \//\ 程序打开后会打开网站 /\
//\\ 大家不要急着关闭 //\\
\\// 作者:春江暮客 \\//\/ 用途:音乐下载 \//\ 用法看程序运行时界面 /\
//\\ 如有任何疑问请在 //\\
\\// 博客页面留言或者发邮件到 \\//\/ 2180614215@qq.com \//\ /\
//\\/\ /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\\//\/\\///\\\//\/\/\\//\/ \/\\//\/ \/\\//\/ \/\\//\/\/ \/ \/ \/
'''print(msg)def get_mp3_address_and_download(songid,songname):apiurl= "http://musicapi.taihe.com/v1/restserver/ting"callback = "jQuery17200943498528136486_"+str(round(time.time()*1000))hua = str(round(time.time()*1000))params = {"method":"baidu.ting.song.playAAC","format":"jsonp","songid":songid,"from":"web","callback":callback,"_":hua}text = json.loads(requests.get(apiurl,params=params).text.split(callback)[1][1:-2])song_address = text["bitrate"]["file_link"]mp3w = open(songname+".mp3",'wb')mp3w.write(requests.get(song_address).content)mp3w.close()
def search_music(keyword):if keyword in ["exit",u"退出"]:print(u"你选择了退出当前程序")sys.exit(0)text = requests.get("http://music.taihe.com/search?key=%s" % keyword).content.decode("utf8")songlist = re.findall(r'href="/song/(\d+)".*?data-songdata.*?title="(.+?)"',text)return songlistdef main():song = input(u"请输入想要下载的音乐名称: ").strip()songlist = search_music(song)for i in range(len(songlist)):print("%d: %s" % (i+1,songlist[i][1]))songid = input(u'请选择想要下载的歌曲前面的数字:')get_mp3_address_and_download(songlist[int(songid)-1][0],song)print(u"-------下载当前歌曲完成---------")print(u"退出请输入'exit'或者'退出'")
if __name__=='__main__':helpmessage()while True:
# main()try:main()except:print(u"5秒后关闭程序")time.sleep(5)sys.exit(0)
然后使用pyinstaller打包脚本成exe文件,命令
pyinstaller --onefile download_music.py
总结
这里我们使用python的requests模块获取了千千音乐的首页音乐列表并下载到了本地,这种方式可以突破网页的限制实现vip音乐或者版权限制的mp3文件下载,为了方便大家调用下载,exe文件已经使用zip压缩。
音乐搜索下载可运行文件下载地址:
down_music.zip
python实现千千音乐mp3下载相关推荐
- python爬虫抓取千千音乐网站的歌曲
python是写爬虫最好的.也是最方便的语言,没有之一.在这里我给大家分享我爬取千千音乐网站歌曲的全过程. 整个过程分可为四大步:一.了解爬虫的本质: 二.利用谷歌浏览器分析http请求: 三.写代码 ...
- Python爬虫实现千千音乐歌曲爬取
1.导入python模板 import requests import json from pprint import pprint import os 2.创建目录及文件夹方法 #创建目录方法 k= ...
- python 图片库_Python开发之千库网图片下载助手
千库网图片下载助手开发 我是一个很爱美的人,写文章喜欢带点插图. 另外我也有一个VX公众账号,写推文总需要点封面图片和插图的嘛,为了看起来更加美观和优雅. 为此我在网上找了写图片,但是直接通过右键下载 ...
- 第二十九篇 ajax动态网页爬取,豆瓣电影,网易云音乐,千千音乐
心得:每天进步一点点,不懂得去查询,去学习,自己慢慢会进步的更多. 自己在学习过程中总结出来的爬虫的过程: 1.导入库,确定要用到的库 2.确定要爬取的url: 动态网页往往隐藏了在XHR,JS页面内 ...
- 【免费】如何轻松的从音乐网站下载自己喜欢的mp3音乐?
如何轻松的从音乐网站下载自己喜欢的mp3音乐? 一般人我不告诉他,哈哈 首先,拿一个不知名的音乐网站开刀--九酷音乐(http://www.9ku.com/). 打开官网首页: 找一首自己喜欢的音乐, ...
- 每日爬虫:爬百度千千音乐
文章目录 前言: 总结: 前言: 1.爬取网站:千千音乐 2.说明:该网站属于商业网址,本案例仅用于学习测试,不用于其他用途. 3.技术路线:requests+re+os 4.代码 ''' 百度音乐 ...
- 千千音乐 for Mac(音乐播放器)
千千音乐 for Mac是一款拥有丰富的曲库***的音乐播放器,mac版千千音乐拥有音乐社交.丰富乐评.场景电台.高清视频MV.权***榜单.精彩音乐直播.专利音效.智能搜索等强大功能,同时千千音乐M ...
- Python实现各大音乐网站/FM平台歌曲下载
Python实现各大音乐网站/FM平台歌曲下载 项目Github地址: https://github.com/Henryhaohao/API_Music_Download Author ?Henryh ...
- python3 requets+re 批量爬取千千(原百度)音乐
以前实验室同学需要文章和音乐,需要用爬虫爬.....要做东西参加比赛,表示好久都没写爬虫了....正如今天的正题,批量爬取千千音乐(原百度音乐)...博主会写下爬取的过程和心得(采坑记录),批量下载的 ...
最新文章
- CentOs7安装gitlab(转!)
- 7、ns-3建立拓扑
- python中cv2库_Python cv2库(人脸检测)
- java default parameter_Java Parameter.DefaultBounds方法代码示例
- WinSDK学习--Document/View结构
- [论文翻译] Active Learning by Feature Mixing
- android qq 登陆 简书,第三方登录 — QQ登录
- 如何用Java画一棵简单的圣诞树
- jsp打印去掉页眉页脚
- 【强迫症患者的福音】Win10去掉桌面快捷方式箭头
- shiny导出html,将R Shiny页面导出为PDF
- 【Scala笔记——道】Scala 循环遍历 for详解
- 企业智慧屏后 不止华为望向了智能办公市场
- Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
- java判断当前时间是否在对应时间段内
- 阿里云招聘 | 遇见offer之就要圆你的大厂梦
- 影音服务器nas硬盘,手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通硬盘!打造家庭影音媒体服务器!...
- 【新手基础教程】MaixPy AI 硬件加速基础知识
- hrs软件在linux下如何启动,linux中进程管理的三大工具及进程查看命令
- [C#问题]WebBrowser在Form程序中使用的感想。
热门文章
- 内存或磁盘空间不足 Microsoft Excel无法再次打开解决方法
- 基于C++的学生信息管理系统的实现
- 国产温湿度采集芯片AHT20数据手册,在stm32最小系统电路原理中添加 AHT20数据采集原理电路
- Alibaba Sentinel 1.8.0流量控制软件新版本发布
- 华中科大计算机卓越计划实验班,2019华中科技大学高考录取:生源质量跨越式突破,发展迅猛,牛!...
- nes 红白机模拟器 第6篇 声音支持
- 一个美丽的寓言——羊和狼
- jquery日历插件,可自定义日期内容
- python爬虫-selenium模拟登录豆瓣获取cookies给requests使用
- 使用flash air开发应用