Python爬虫_音乐案例
Python爬虫_音乐案例
【案例目的】:下载音乐
【第三方库】:1.requests 2.perttytable
【开发环境】:1.Python3.8 2.PyCharm 2022.1
# https://y.qq.com/n/ryqq/search?w=undefined&t=song&remoteplace=txt.yqq.top
# https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=10&w=
import requests # 发送网络请求
import json
import prettytable as pt # 别名pt
headers = {'cookie': 'pgv_pvid=6059813169; fqm_pvqid=258cc782-da53-49d1-a236-aba7b8985f01; fqm_sessionid=c70e9301-3c6d-4807-a89d-cf5cfc09f7e0; pgv_info=ssid=s1828238326; ts_refer=www.baidu.com/link; ts_uid=7928555294; _qpsvr_localtk=0.9363751939798446; RK=WZn1bTXRwO; ptcz=1c9d0da30fa3ece9bf5512399904deaeabeb9506e96bc0a99381a3b3748bd431; login_type=1; qm_keyst=Q_H_L_52P_lJGzHJHODFUttRP8yG7VI40Xdw7ddiUdLfqtsLuhW3Wqs2shG-g; psrf_qqrefresh_token=2F3493E6330D695E614A03419E0A687C; euin=oinP7i-F7iEsoc**; psrf_qqopenid=B18700D95DBBB7F21C7BA46FDB487BC3; psrf_access_token_expiresAt=1664956757; uin=3047287962; qqmusic_key=Q_H_L_52P_lJGzHJHODFUttRP8yG7VI40Xdw7ddiUdLfqtsLuhW3Wqs2shG-g; psrf_qqunionid=365E52FB57F5FA5A827467C3C4145A8F; qm_keyst=Q_H_L_52P_lJGzHJHODFUttRP8yG7VI40Xdw7ddiUdLfqtsLuhW3Wqs2shG-g; tmeLoginType=2; psrf_qqaccess_token=2FF58F4E9A98E54D15C95ED08D93DE05; psrf_musickey_createtime=1657180757; wxopenid=; wxrefresh_token=; wxunionid=; ts_last=y.qq.com/n/ryqq/player'
}
# 1.发送请求 向搜索功能接口发送请求
name = input('请输入需要下载的歌手或歌曲名称:')
url = f'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=10&w={name}'
response = requests.get(url)
# print(response)
# 2.获取数据 获取所有歌曲信息数据
# print(response.text)
json_str = response.text
# 3.解析数据 歌曲名 歌手名 专辑 歌曲mid(用来下载歌曲的必要参数)
# 将callback({"code":0,"data":{"keyword":"陈奕迅","priority":0,"qc":[],"semantic":{"curnum":0,"curpage":1,"list":[],"totalnum":0},"song":{"curnum":10,"curpage":1,"list":[{"albumid":23277502,"albummid":"001uaPM93kxk1R","albumname":"孤勇者","albumname_hilight":"孤勇者","alertid":23,"belongCD":0,"cdIdx":1,"chinesesinger":0,"docid":"6848470612341681209","grp":[],"interval":256,"isonly":0,"lyric":"《英雄联盟:双城之战》动画剧集中文主题曲","lyric_hilight":"《英雄联盟:双城之战》动画剧集中文主题曲","media_mid":"003UkWuI0E8U0l","msgid":16,"newStatus":2,"nt":1491932878,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":80768,"tryend":116032,"trysize":960887},"pubtime":1636336800,"pure":0,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":4097029,"size320":10242283,"sizeape":0,"sizeflac":28729027,"sizeogg":5558885,"songid":331839675,"songmid":"003UkWuI0E8U0l","songname":"孤勇者","songname_hilight":"孤勇者","strMediaMid":"003UkWuI0E8U0l","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"y0041ywgpm7"},{"albumid":89526,"albummid":"000GDz8k03UOaI","albumname":"黑白灰","albumname_hilight":"黑白灰","alertid":24,"belongCD":0,"cdIdx":4,"chinesesinger":0,"docid":"13507383522679373732","grp":[],"interval":205,"isonly":0,"lyric":"《明年今日》国语版|《隐婚男女》电影插曲|《摆渡人》电影插曲","lyric_hilight":"《明年今日》国语版|《隐婚男女》电影插曲|《摆渡人》电影插曲","media_mid":"002AIxAT3HZwiA","msgid":15,"newStatus":2,"nt":360551177,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":1,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":60668,"tryend":95943,"trysize":960887},"pubtime":1050336000,"pure":0,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":3287859,"size320":8219359,"sizeape":0,"sizeflac":21724767,"sizeogg":4816438,"songid":4830342,"songmid":"001OyHbk2MSIi4","songname":"十年","songname_hilight":"十年","strMediaMid":"002AIxAT3HZwiA","stream":1,"switch":16881409,"t":1,"tag":11,"type":0,"ver":0,"vid":"u00138j4hcs"},{"albumid":51144,"albummid":"003nMzes28P7wv","albumname":"What's Going On...? (Remastered 2019)","albumname_hilight":"What's Going On...? (Remastered 2019)","alertid":23,"belongCD":0,"cdIdx":5,"chinesesinger":0,"docid":"17421115046798789842","grp":[],"interval":259,"isonly":0,"lyric":"","lyric_hilight":"","media_mid":"000Hv0Nh0m4ye8","msgid":16,"newStatus":2,"nt":1226614804,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":58599,"tryend":101674,"trysize":960887},"pubtime":1164211200,"pure":1,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":4147215,"size320":10367701,"sizeape":0,"sizeflac":27911982,"sizeogg":5570567,"songid":1249550,"songmid":"003dtkNk26WhJD","songname":"富士山下","songname_hilight":"富士山下","strMediaMid":"000Hv0Nh0m4ye8","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"k0012md5982"},{"albumid":89552,"albummid":"004S8YQr3UmEbG","albumname":"Shall We Dance? Shall We Talk!","albumname_hilight":"Shall We Dance? Shall We Talk!","alertid":24,"belongCD":0,"cdIdx":6,"chinesesinger":0,"docid":"15473432272639700324","grp":[],"interval":211,"isonly":0,"lyric":"","lyric_hilight":"","media_mid":"000wa9ED359rBP","msgid":15,"newStatus":2,"nt":1850647739,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":1,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":43648,"tryend":77357,"trysize":960887},"pubtime":987091200,"pure":1,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":3381117,"size320":8452425,"sizeape":0,"sizeflac":21556285,"sizeogg":4661676,"songid":4907894,"songmid":"004CU50m2JjBjr","songname":"单车","songname_hilight":"单车","strMediaMid":"000wa9ED359rBP","stream":1,"switch":16881409,"t":1,"tag":11,"type":0,"ver":0,"vid":"k003145jgxi"},{"albumid":31526,"albummid":"003yQidc3s7P65","albumname":"认了吧","albumname_hilight":"认了吧","alertid":23,"belongCD":0,"cdIdx":4,"chinesesinger":0,"docid":"15216281848330892662","grp":[],"interval":239,"isonly":0,"lyric":"","lyric_hilight":"","media_mid":"003LnSNo1ecdc3","msgid":16,"newStatus":2,"nt":1025624166,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":44558,"tryend":77883,"trysize":960887},"pubtime":1177344000,"pure":0,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":3840821,"size320":9601761,"sizeape":0,"sizeflac":23842755,"sizeogg":4860559,"songid":1313990,"songmid":"004EzHKM2jXY9i","songname":"红玫瑰","songname_hilight":"红玫瑰","strMediaMid":"003LnSNo1ecdc3","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"l0010mf18Sa"},{"albumid":31526,"albummid":"003yQidc3s7P65","albumname":"认了吧","albumname_hilight":"认了吧","alertid":23,"belongCD":0,"cdIdx":6,"chinesesinger":0,"docid":"10814090808139691550","grp":[],"interval":259,"isonly":0,"lyric":"《爱情呼叫转移》电影主题曲","lyric_hilight":"《爱情呼叫转移》电影主题曲","media_mid":"001TmGUh00SDKn","msgid":16,"newStatus":2,"nt":4203463155,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":59105,"tryend":101707,"trysize":960887},"pubtime":1177344000,"pure":0,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":4160979,"size320":10402155,"sizeape":0,"sizeflac":27659602,"sizeogg":5649433,"songid":1313992,"songmid":"003u2qmP0Mp2pW","songname":"爱情转移","songname_hilight":"爱情转移","strMediaMid":"001TmGUh00SDKn","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"p0010ejZrer"},{"albumid":35182,"albummid":"000J1pJ50cDCVE","albumname":"不想放手","albumname_hilight":"不想放手","alertid":23,"belongCD":0,"cdIdx":7,"chinesesinger":0,"docid":"14691017891116423173","grp":[],"interval":285,"isonly":0,"lyric":"《时尚先生》电影主题曲","lyric_hilight":"《时尚先生》电影主题曲","media_mid":"004cc3OU0GLJHb","msgid":16,"newStatus":2,"nt":1413023447,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":74064,"tryend":102207,"trysize":960887},"pubtime":1214755200,"pure":0,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":4566820,"size320":11416753,"sizeape":0,"sizeflac":30255204,"sizeogg":6051718,"songid":9059607,"songmid":"002B2EAA3brD5b","songname":"不要说话","songname_hilight":"不要说话","strMediaMid":"004cc3OU0GLJHb","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"e0011thbfzs"},{"albumid":8442,"albummid":"002FT46H18G1jW","albumname":"Life Continues","albumname_hilight":"Life Continues","alertid":23,"belongCD":0,"cdIdx":3,"chinesesinger":0,"docid":"18391503565895915970","grp":[],"interval":233,"isonly":0,"lyric":"","lyric_hilight":"","media_mid":"001honc23hEmz0","msgid":16,"newStatus":2,"nt":2764751392,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":0,"tryend":0,"trysize":960887},"pubtime":1140192000,"pure":1,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":3738029,"size320":9344742,"sizeape":0,"sizeflac":24984868,"sizeogg":5285512,"songid":1338414,"songmid":"003hFxQh276Cv5","songname":"最佳损友","songname_hilight":"最佳损友","strMediaMid":"001honc23hEmz0","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"q0012ac6bqn"},{"albumid":1180610,"albummid":"002DAg4x3jVzHI","albumname":"陪你度过漫长岁月 (\"陪安东尼度过漫长岁月\"电影主题曲)","albumname_hilight":"陪你度过漫长岁月 (\"陪安东尼度过漫长岁月\"电影主题曲)","alertid":23,"belongCD":0,"cdIdx":1,"chinesesinger":0,"docid":"11956688378241772946","grp":[],"interval":242,"isonly":0,"lyric":"《陪安东尼度过漫长岁月》电影主题曲","lyric_hilight":"《陪安东尼度过漫长岁月》电影主题曲","media_mid":"002jmqDQ1bMQpV","msgid":16,"newStatus":2,"nt":3738150625,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":48803,"tryend":90796,"trysize":960887},"pubtime":1445443200,"pure":0,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":3879711,"size320":9698957,"sizeape":0,"sizeflac":27421645,"sizeogg":5334938,"songid":104775916,"songmid":"003ULL5o2D7UMu","songname":"陪你度过漫长岁月","songname_hilight":"陪你度过漫长岁月","strMediaMid":"002jmqDQ1bMQpV","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"z0034d265mo"},{"albumid":31526,"albummid":"003yQidc3s7P65","albumname":"认了吧","albumname_hilight":"认了吧","alertid":23,"belongCD":0,"cdIdx":7,"chinesesinger":0,"docid":"11330780560051870950","grp":[],"interval":250,"isonly":0,"lyric":"《失恋33天》电影插曲","lyric_hilight":"《失恋33天》电影插曲","media_mid":"003Idtm746YJCM","msgid":16,"newStatus":2,"nt":659729728,"pay":{"payalbum":0,"payalbumprice":0,"paydownload":1,"payinfo":1,"payplay":0,"paytrackmouth":1,"paytrackprice":200},"preview":{"trybegin":67785,"tryend":126360,"trysize":960887},"pubtime":1177344000,"pure":0,"singer":[{"id":143,"mid":"003Nz2So3XXYek","name":"陈奕迅","name_hilight":"<em>陈奕迅</em>"}],"size128":4009260,"size320":10022832,"sizeape":0,"sizeflac":19875283,"sizeogg":4986886,"songid":1313993,"songmid":"004M3yRr3kOfnS","songname":"好久不见","songname_hilight":"好久不见","strMediaMid":"003Idtm746YJCM","stream":1,"switch":16888579,"t":1,"tag":11,"type":0,"ver":0,"vid":"F0010fy2zcy"}],"totalnum":600},"tab":0,"taglist":[],"totaltime":0,"zhida":{"chinesesinger":0,"type":0}},"message":"","notice":"","subcode":0,"time":1657182440,"tips":""})
# 进行截取 callback( 长度为9,从第十个字符开始,到倒数第二个字符为止
json_str = json_str[9:-1]
json_dict = json.loads(json_str) # 将获取到的json数据转变为字典类型
# print(json_dict)
song_list = json_dict['data']['song']['list']
# 格式化输出添加表格
tb = pt.PrettyTable()
tb.field_names = ['序号','歌名','歌手','专辑'] # 表头
music_info_list = []
count = 1# 4.格式化输出
for song in song_list:songname = song['songname'] # 歌曲名songmid = song['songmid'] # 歌曲midsinger = song['singer'][0]['name'] # 歌手albumname = song['albumname'] # 专辑名称# print(songmid,songname,singer,albumname)tb.add_row([count,songname,singer,albumname])music_info_list.append([songmid,songname,singer])count += 1
print(tb)while True:input_index = eval(input('请输入下载的歌曲序号(按-1退出):'))if input_index == -1 :breakdownload_info = music_info_list[input_index-1]# print(download_info)songmid = download_info[0] # 获取songmid值# 1.通过获取的歌曲mid拼接需要的音乐urlmusic_info_url = 'https://u.y.qq.com/cgi-bin/musicu.fcg?data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","filename":"M800","param":{"guid":"8846039534","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","filename":"M800","param":{"guid":"8846039534","songmid":["%s"],"songtype":[0],"uin":"1152921504784213523","loginflag":1,"platform":"20"}},"comm":{"uin":"1152921504784213523","format":"json","ct":24,"cv":0}}' % songmid# print(music_info_url)# 2.发送网络请求 需要的音乐urljson_data = requests.get(url=music_info_url,headers=headers).json()# 3.获取数据 获取 里面生成的 部分音乐链接 合并 (mp3数据所在的链接)purl = json_data['req_0']['data']['midurlinfo'][0]['purl']media_url = 'https://dl.stream.qqmusic.qq.com/' + purl# print(media_url)# 4.发送请求 获取链接所在的数据# 5.获取数据 音乐是二进制数据music_data = requests.get(media_url).content# 6.保存数据with open(f'./file/music/{download_info[1]}-{download_info[2]}.mp3',mode='wb')as f:f.write(music_data)print(f'{download_info[1]},下载成功')
Python爬虫_音乐案例相关推荐
- Python爬虫_案例分析(二)
Python爬虫_案例分析(二) 一.电影天堂案例 import scrapy from scrapy_movie.items import ScrapyMovieItem class MvSpide ...
- Python爬虫_某宝网案例
Python爬虫_某宝网案例 一.导入第三方库,确定url,定义headers ,伪装爬虫代码 import requests url = 'https://s.taobao.com/search?q ...
- python爬虫_网易音乐歌单
小白flag7 python爬虫_网易音乐歌单 准备 import os #存放文件处理 import time #程序运行时间计算 import sys #错误信息返回 预留 from seleni ...
- Python爬虫——下载音乐
Python爬虫--下载音乐 1.调用需要库 安装库: Windows + R 输入cmd 后 执行下面这两行 pip install requests -i https://pypi.tuna.ts ...
- python爬虫实现音乐下载
python爬虫实现音乐下载 音乐下载功能模块 # !/usr/bin/env python # -*- coding:UTF-8 -*- # # @Version : 1.0 # @Time : 2 ...
- python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业)
python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业) 这次就以mapbar为例爬取道路交通拥堵情况 第一步,瓦片标号解析 第二步,拼url,然后下载 第三步,图片拼接 ...
- python爬虫之音乐下载
使用爬虫实现音乐下载 需要用到以下几点内容 requests请求 文件操作 一点点正则表达式 首先,分析我们要爬取的网站,这里用到的是 好听轻音乐网, 第一步,选择任意一首歌点击加号,添加到列表. 2 ...
- 零基础学习python爬虫_教你零基础如何入门Python爬虫!
Python爬虫好学吗?看你怎么学了.如果是自学,会难一些,毕竟有难题很难找到人帮你解答,很容易半途而废.要是你找到了一家靠谱的学校,就会容易很多.不过,这里我想教你入门Python爬虫. 一:爬虫准 ...
- 嵩天python爬虫_我自己爬-python爬虫快速入门(一)
request库 对于轻量级用户,像我一样只是准备写一个搞笑用的程序,requests是很方便的存在. 安装通过pip就不说了 request的几个主要方法 requests.request() 构造 ...
最新文章
- FCN学习:Semantic Segmentation
- ImageLoader加载图片
- php解决与处理网站高并发 大流量访问的方法
- 腾讯视频如何设置画面对比度方面的内容
- Java高级语法笔记-普通异常处理
- 《SQL必知必会》附录
- centos7安装kylo0.10.1
- word文件做一半未响应_Word经常出现未响应怎么办?
- linux第一周作业
- tempo 2.0 学习记录
- rtl8188ce无线网卡linux驱动,rtl8188ce无线模块驱动移植到arm Linux平台
- 两组的数据平均值合并_数据平均值合并计算 合并计算求平均值
- amigo幸运字符什么意思_做个爬虫比你想象中简单!爬虫是什么?怎么做?
- Linux 安装netcdf
- Tesseract(识别验证码)
- 服务器部署MySQL过程
- 分形几何python代码_Python, Cython绘制美妙绝伦的Mandelbrot集, 曼德博集分形图案
- 关于focusableInTouchMode不生效的问题
- Msfvenom使用指南
- 进入网页页面的开发者模式——三种方式
热门文章
- 所谓0脂低卡的代糖如何影响血糖和胰岛素你真的了解吗?
- 消费者厌恶手机企业的高定价,苹果和国产手机销量都显著下滑
- Hadoop集群搭建Hive集群
- 天秀! 了解一下GAN都可以做到这些事情
- Anaconda 克隆环境
- iis服务器证书,Internet Information Services (IIS) 服务器证书安装说明
- 原来ReLU这么好用?一文带你深度了解ReLU激活函数
- 大数据学习路线图(附上大数据学习资料)
- collectionsCollection
- c语言ofstream,C++ ofstream跟ifstream详细用法以及C语言的file用法