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爬虫_音乐案例相关推荐

  1. Python爬虫_案例分析(二)

    Python爬虫_案例分析(二) 一.电影天堂案例 import scrapy from scrapy_movie.items import ScrapyMovieItem class MvSpide ...

  2. Python爬虫_某宝网案例

    Python爬虫_某宝网案例 一.导入第三方库,确定url,定义headers ,伪装爬虫代码 import requests url = 'https://s.taobao.com/search?q ...

  3. python爬虫_网易音乐歌单

    小白flag7 python爬虫_网易音乐歌单 准备 import os #存放文件处理 import time #程序运行时间计算 import sys #错误信息返回 预留 from seleni ...

  4. Python爬虫——下载音乐

    Python爬虫--下载音乐 1.调用需要库 安装库: Windows + R 输入cmd 后 执行下面这两行 pip install requests -i https://pypi.tuna.ts ...

  5. python爬虫实现音乐下载

    python爬虫实现音乐下载 音乐下载功能模块 # !/usr/bin/env python # -*- coding:UTF-8 -*- # # @Version : 1.0 # @Time : 2 ...

  6. python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业)

    python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业) 这次就以mapbar为例爬取道路交通拥堵情况 第一步,瓦片标号解析 第二步,拼url,然后下载 第三步,图片拼接 ...

  7. python爬虫之音乐下载

    使用爬虫实现音乐下载 需要用到以下几点内容 requests请求 文件操作 一点点正则表达式 首先,分析我们要爬取的网站,这里用到的是 好听轻音乐网, 第一步,选择任意一首歌点击加号,添加到列表. 2 ...

  8. 零基础学习python爬虫_教你零基础如何入门Python爬虫!

    Python爬虫好学吗?看你怎么学了.如果是自学,会难一些,毕竟有难题很难找到人帮你解答,很容易半途而废.要是你找到了一家靠谱的学校,就会容易很多.不过,这里我想教你入门Python爬虫. 一:爬虫准 ...

  9. 嵩天python爬虫_我自己爬-python爬虫快速入门(一)

    request库 对于轻量级用户,像我一样只是准备写一个搞笑用的程序,requests是很方便的存在. 安装通过pip就不说了 request的几个主要方法 requests.request() 构造 ...

最新文章

  1. FCN学习:Semantic Segmentation
  2. ImageLoader加载图片
  3. php解决与处理网站高并发 大流量访问的方法
  4. 腾讯视频如何设置画面对比度方面的内容
  5. Java高级语法笔记-普通异常处理
  6. 《SQL必知必会》附录
  7. centos7安装kylo0.10.1
  8. word文件做一半未响应_Word经常出现未响应怎么办?
  9. linux第一周作业
  10. tempo 2.0 学习记录
  11. rtl8188ce无线网卡linux驱动,rtl8188ce无线模块驱动移植到arm Linux平台
  12. 两组的数据平均值合并_数据平均值合并计算 合并计算求平均值
  13. amigo幸运字符什么意思_做个爬虫比你想象中简单!爬虫是什么?怎么做?
  14. Linux 安装netcdf
  15. Tesseract(识别验证码)
  16. 服务器部署MySQL过程
  17. 分形几何python代码_Python, Cython绘制美妙绝伦的Mandelbrot集, 曼德博集分形图案
  18. 关于focusableInTouchMode不生效的问题
  19. Msfvenom使用指南
  20. 进入网页页面的开发者模式——三种方式

热门文章

  1. 所谓0脂低卡的代糖如何影响血糖和胰岛素你真的了解吗?
  2. 消费者厌恶手机企业的高定价,苹果和国产手机销量都显著下滑
  3. Hadoop集群搭建Hive集群
  4. 天秀! 了解一下GAN都可以做到这些事情
  5. Anaconda 克隆环境
  6. iis服务器证书,Internet Information Services (IIS) 服务器证书安装说明
  7. 原来ReLU这么好用?一文带你深度了解ReLU激活函数
  8. 大数据学习路线图(附上大数据学习资料)
  9. collectionsCollection
  10. c语言ofstream,C++ ofstream跟ifstream详细用法以及C语言的file用法