鱼C论坛

 找回密码
 立即注册
查看: 1581|回复: 0

[作品展示] 简单下载QQ音乐

[复制链接]
发表于 2020-6-1 15:32:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 aa1448176630 于 2020-6-1 15:34 编辑
  1. import requests as r
  2. import json
  3. import re
  4. import os

  5. head={'User-Agent':'Mozilla/5.0'}
  6. music_list=[]#歌曲链接
  7. sname_list=[]#歌手名
  8. name_list=[]#歌名

  9. #m2_list=p['data']['song']['list'][i]['file']['media_mid']#歌曲mid

  10. def find(m_list):
  11.     for each in m_list:
  12.         #print(each['mid'])#与media_mid相同都是歌曲mid
  13.         
  14.         name_list.append(each['name'])#添加歌名
  15.         mid_list=each['file']['media_mid']#获取mid
  16.         sname_list.append(each['singer'][0]['name'])#添加歌手名
  17.         #print(name_list)
  18.         
  19.         #print(each['file']['media_mid'])
  20.         new_url='https://y.qq.com/n/yqq/song'+'//'+mid_list+'.html'
  21.         #print(new_url)
  22.         data={'mid': new_url}
  23.         req=r.post('http://www.douqq.com/qqmusic/qqapi.php',headers=head,data=data).text
  24.         req=json.loads(req)#json解析完后还是string 并非字典 所以下面用正则获取链接
  25.         req=req.replace('\/','/')
  26.         p=r'm4a":"([^"]+)'
  27.         nl=re.findall(p,req)
  28.         music_list.append(nl)#添加歌曲链接
  29.         
  30.    
  31. def document():
  32.     i=0
  33.     if not os.path.exists(r'C:\Users\Administrator\Desktop\music'):
  34.         
  35.         os.mkdir(r'C:\Users\Administrator\Desktop\music')
  36.         os.chdir(r'C:\Users\Administrator\Desktop\music')
  37.    
  38.    
  39.     for each in music_list:
  40.         
  41.         #print(each)
  42.         
  43.         if not each:
  44.             i=i+1
  45.             continue
  46.         
  47.         path=r'C:\Users\Administrator\Desktop\music'+'\\'+name_list[i]+','+sname_list[i]+'.mp3'
  48.         with open(path,'wb+') as f:
  49.             #print("1")
  50.             #print(music_list[i][0],name_list[i])
  51.             p=r.get(music_list[i][0]).content
  52.             f.write(p)
  53.             print(name_list[i]+','+sname_list[i]+"下载完成")
  54.             i=i+1
  55.             

  56. if __name__=='__main__':
  57.     try:
  58.         content=input("请输入歌手名或歌名:")
  59.         #url由抓包所得(抓搜索音乐时的url)
  60.         url='https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=55043609442258168&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w={}&g_tk_new_20200303=5381&g_tk=5381&loginUin=229554158&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0'.format(content)
  61.         res=r.get(url,headers=head)
  62.         p=json.loads(res.text)
  63.         m_list=p['data']['song']['list']#获取歌曲列表
  64.     except:
  65.         print("发生错误!!")
  66.     find(m_list)
  67.     document()
  68.    
复制代码


爬虫新手 只是为交作业 大佬勿喷
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 00:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表