文章来源: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下载相关推荐

  1. python爬虫抓取千千音乐网站的歌曲

    python是写爬虫最好的.也是最方便的语言,没有之一.在这里我给大家分享我爬取千千音乐网站歌曲的全过程. 整个过程分可为四大步:一.了解爬虫的本质: 二.利用谷歌浏览器分析http请求: 三.写代码 ...

  2. Python爬虫实现千千音乐歌曲爬取

    1.导入python模板 import requests import json from pprint import pprint import os 2.创建目录及文件夹方法 #创建目录方法 k= ...

  3. python 图片库_Python开发之千库网图片下载助手

    千库网图片下载助手开发 我是一个很爱美的人,写文章喜欢带点插图. 另外我也有一个VX公众账号,写推文总需要点封面图片和插图的嘛,为了看起来更加美观和优雅. 为此我在网上找了写图片,但是直接通过右键下载 ...

  4. 第二十九篇 ajax动态网页爬取,豆瓣电影,网易云音乐,千千音乐

    心得:每天进步一点点,不懂得去查询,去学习,自己慢慢会进步的更多. 自己在学习过程中总结出来的爬虫的过程: 1.导入库,确定要用到的库 2.确定要爬取的url: 动态网页往往隐藏了在XHR,JS页面内 ...

  5. 【免费】如何轻松的从音乐网站下载自己喜欢的mp3音乐?

    如何轻松的从音乐网站下载自己喜欢的mp3音乐? 一般人我不告诉他,哈哈 首先,拿一个不知名的音乐网站开刀--九酷音乐(http://www.9ku.com/). 打开官网首页: 找一首自己喜欢的音乐, ...

  6. 每日爬虫:爬百度千千音乐

    文章目录 前言: 总结: 前言: 1.爬取网站:千千音乐 2.说明:该网站属于商业网址,本案例仅用于学习测试,不用于其他用途. 3.技术路线:requests+re+os 4.代码 ''' 百度音乐 ...

  7. 千千音乐 for Mac(音乐播放器)

    千千音乐 for Mac是一款拥有丰富的曲库***的音乐播放器,mac版千千音乐拥有音乐社交.丰富乐评.场景电台.高清视频MV.权***榜单.精彩音乐直播.专利音效.智能搜索等强大功能,同时千千音乐M ...

  8. Python实现各大音乐网站/FM平台歌曲下载

    Python实现各大音乐网站/FM平台歌曲下载 项目Github地址: https://github.com/Henryhaohao/API_Music_Download Author ?Henryh ...

  9. python3 requets+re 批量爬取千千(原百度)音乐

    以前实验室同学需要文章和音乐,需要用爬虫爬.....要做东西参加比赛,表示好久都没写爬虫了....正如今天的正题,批量爬取千千音乐(原百度音乐)...博主会写下爬取的过程和心得(采坑记录),批量下载的 ...

最新文章

  1. CentOs7安装gitlab(转!)
  2. 7、ns-3建立拓扑
  3. python中cv2库_Python cv2库(人脸检测)
  4. java default parameter_Java Parameter.DefaultBounds方法代码示例
  5. WinSDK学习--Document/View结构
  6. [论文翻译] Active Learning by Feature Mixing
  7. android qq 登陆 简书,第三方登录 — QQ登录
  8. 如何用Java画一棵简单的圣诞树
  9. jsp打印去掉页眉页脚
  10. 【强迫症患者的福音】Win10去掉桌面快捷方式箭头
  11. shiny导出html,将R Shiny页面导出为PDF
  12. 【Scala笔记——道】Scala 循环遍历 for详解
  13. 企业智慧屏后 不止华为望向了智能办公市场
  14. Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
  15. java判断当前时间是否在对应时间段内
  16. 阿里云招聘 | 遇见offer之就要圆你的大厂梦
  17. 影音服务器nas硬盘,手把手教您用win10做NAS:搭配emby,VM虚拟群晖,直通硬盘!打造家庭影音媒体服务器!...
  18. 【新手基础教程】MaixPy AI 硬件加速基础知识
  19. hrs软件在linux下如何启动,linux中进程管理的三大工具及进程查看命令
  20. [C#问题]WebBrowser在Form程序中使用的感想。

热门文章

  1. 内存或磁盘空间不足 Microsoft Excel无法再次打开解决方法
  2. 基于C++的学生信息管理系统的实现
  3. 国产温湿度采集芯片AHT20数据手册,在stm32最小系统电路原理中添加 AHT20数据采集原理电路
  4. Alibaba Sentinel 1.8.0流量控制软件新版本发布
  5. 华中科大计算机卓越计划实验班,2019华中科技大学高考录取:生源质量跨越式突破,发展迅猛,牛!...
  6. nes 红白机模拟器 第6篇 声音支持
  7. 一个美丽的寓言——羊和狼
  8. jquery日历插件,可自定义日期内容
  9. python爬虫-selenium模拟登录豆瓣获取cookies给requests使用
  10. 使用flash air开发应用