python3 爬取qq音乐作者所有单曲 并且下载歌曲


1 import requests
  2 import re
  3 import json
  4 import os
  5
  6
  7
  8 # 便于存放作者的姓名
  9 zuozhe = []
 10
 11 headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36‘}
 12
 13
 14 def get_singermid():
 15     name = input(‘请输入你要下载歌曲的作者:‘)
 16     zuozhe.append(name)
 17     if not os.path.exists(name):
 18         os.mkdir(name)
 19     url = ‘https://c.y.qq.com/soso/fcgi-bin/client_search_cp‘
 20     headers = {‘user-agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36‘}
 21     data = {
 22             ‘w‘: name,
 23             ‘jsonpCallback‘: ‘MusicJsonCallback885332333726736‘,}
 24     response = requests.get(url,headers=headers,params=data).text
 25     patt = re.compile(‘MusicJsonCallback\d+\((.*?)\}\)‘)
 26     singermid = re.findall(patt,response)[0]
 27     singermid = singermid+‘}‘
 28     dic = json.loads(singermid)
 29     return dic[‘data‘][‘song‘][‘list‘][0][‘singer‘][0][‘mid‘]
 30
 31
 32 def get_page_html(singermid):
 33     url = ‘https://c.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg‘
 34     params = {
 35         ‘g_tk‘: 5381,
 36         ‘jsonpCallback‘: ‘MusicJsonCallbacksinger_track‘,
 37         ‘loginUin‘: 0,
 38         ‘hostUin‘: 0,
 39         ‘format‘: ‘jsonp‘,
 40         ‘inCharset‘: ‘utf8‘,
 41         ‘outCharset‘: ‘utf-8‘,
 42         ‘notice‘: 0,
 43         ‘platform‘: ‘yqq‘,
 44         ‘needNewCode‘: 0,
 45         ‘singermid‘: singermid,
 46         ‘order‘: ‘listen‘,
 47         ‘begin‘: 0,# 页数  0 30  60
 48         ‘num‘: 30,
 49         ‘songstatus‘: 1,
 50     }
 51     response = requests.get(url,headers=headers,params=params)
 52     return response.text
 53
 54
 55 def get_vkey_data(songmid,strMediaMid,name):
 56     url = ‘https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg‘
 57     strMediaMid1 = ‘C400‘+strMediaMid+‘.m4a‘
 58     data = {
 59         ‘g_tk‘: 5381,
 60         ‘jsonpCallback‘: "MusicJsonCallback4327043425715609",
 61         ‘loginUin‘: 0,
 62         ‘hostUin‘: 0,
 63         ‘format‘: ‘json‘,
 64         ‘inCharset‘: ‘utf8‘,
 65         ‘outCharset‘: ‘utf-8‘,
 66         ‘notice‘: 0,
 67         ‘platform‘: ‘yqq‘,
 68         ‘needNewCode‘: 0,
 69         ‘cid‘: 205361747,
 70         ‘callback‘: ‘MusicJsonCallback4327043425715609‘,
 71         ‘uin‘: 0,
 72         ‘songmid‘: songmid,
 73         ‘filename‘: strMediaMid1,
 74         ‘guid‘: 4428680404,
 75     }
 76     response = requests.get(url,headers=headers,params=data).text
 77     try:
 78         patt = re.compile(‘\"vkey\":\"(.*?)\"‘)
 79         vkey = re.findall(patt,response)[0]
 80         patt = re.compile(‘\"filename\":\"(.*?)\"‘)
 81         filename = re.findall(patt, response)[0]
 82         url1 = ‘http://dl.stream.qqmusic.qq.com/‘ + filename + ‘?vkey=‘ + vkey + ‘&guid=4428680404&uin=0&fromtag=66‘
 83         yingyue = requests.get(url1,headers=headers).content
 84         with open(zuozhe[0]+‘/‘+name+‘.m4a‘,‘wb‘) as f:
 85             f.write(yingyue)
 86             f.close()
 87             print(‘下载完成《‘+name+‘》‘)
 88     except Exception as e:
 89         print(e)
 90         pass
 91
 92
 93 def get_detail_html(html):
 94     if html:
 95         patt = re.compile(‘data\":{\"list\":(.*?),\"singer_id‘,re.S)
 96         json_html = re.findall(patt,html)[0]
 97         data_html = json.loads(json_html)
 98         for data in data_html:
 99             name = data[‘musicData‘][‘songname‘]
100             songmid = data[‘musicData‘][‘songmid‘]
101             strMediaMid = data[‘musicData‘][‘strMediaMid‘]
102             print(‘正在下载《‘ + name + ‘》......‘)
103             get_vkey_data(songmid,strMediaMid,name)
104
105 def main():
106     # 获取 singermid
107     singermid = get_singermid()
108     html = get_page_html(singermid)
109     get_detail_html(html)
110
111
112 if __name__ == ‘__main__‘:
113     main()

爬取qq音乐首先得找到‘http://dl.stream.qqmusic.qq.com/‘ + filename + ‘?vkey=‘ + vkey + ‘&guid=4428680404&uin=0&fromtag=66‘这个链接    然后其中只有filename 和vkey 在变化  然后就在列表页寻找这两个参数,找到以后拼接到这个url,然后请求就可以了 。

代码在上面只供参考

python3 可以直接复制然后运行

原文地址:https://www.cnblogs.com/zlel/p/9042727.html

时间: 2024-08-29 23:15:55

python3 爬取qq音乐作者所有单曲 并且下载歌曲的相关文章

python3爬取qq音乐并下载

本文参考Python 爬取qqmusic音乐url并批量下载 同学找我爬取一下qq音乐播放链接,包括歌词等信息打包成json,试了一下可以爬取. 一.找到qq音乐播放的url 1.找到搜索页面返回的数据包 歌曲最终的播放链接时经过多次拼接的,首先找到qq音乐搜索歌曲界面,https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=%E5%91%A8%E6%9D%

python 爬取QQ音乐

import requests import json import os import threading #发送请求获取信息 def get_response(url): headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' } response =

手把手教你使用Python抓取QQ音乐数据!

[一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐数据(第二弹)我们实现了获取 QQ 音乐指定歌曲的歌词和指定歌曲首页热评. 通过手把手教你使用Python抓取QQ音乐数据(第三弹)我们实现了获取更多评论并生成词云图. 此次我们将将三个项目封装在一起,通过菜单控制爬取不同数据. [二.需要的库] 主要涉及的库有:requests.openpyxl.

【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜

实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart 难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install lxml) IDEA开发工具:PyCharm_2017.3 Python版本:Python3 期望结果:爬取出排行版歌名以及对应歌手 运行效果图: 音乐排行榜: 爬取数据结果图: 像这种简单的爬取就没必要使用Scrapy框架进行处理,是在有点大材小用,不过如果你刚开始学Scrapy的话,拿这些简单的练

Python3爬取今日头条有关《人民的名义》文章

Python3爬取今日头条有关<人民的名义>文章 最近一直在看Python的基础语法知识,五一假期手痒痒想练练,正好<人民的名义>刚结束,于是决定扒一下头条上面的人名的名义文章,试试技术同时可以集中看一下大家的脑洞也是极好的. 首先,我们先打开头条的网页版,在右上角搜索框输入关键词,通过chrome调试工具,我们定位到头条的search栏调用的的API为: http://www.toutiao.com/search_content/?offset=0&format=json

python3爬取网页

爬虫 python3爬取网页资源方式(1.最简单: import'http://www.baidu.com/'print2.通过request import'http://www.baidu.com'print1.import urllib.request 'wd''python''opt-webpage''on''ie''gbk'GET和POST请求的不同之处是POST请求通常有"副作用" 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)

Python爬虫:现学现用Xpath爬取豆瓣音乐

爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与Beautiful,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 抓取方式 性能 使用难度 正则表达式 快 困难 Lxml 快 简单 BeautifulSoup 慢 简单 这样一比较我我选择了Lxml(xpath)的方式了,虽然有三种方式,但肯定是要选择最好的方式来爬虫,这个道理大家都懂,另外有兴趣的朋友也可以去了解另外两种爬虫方式! 好了现在来讲讲xpath 由于Xpath属于lxml模块,所以首先需要安

python3爬取女神图片,破解盗链问题

title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true 前言 其实,抓取图片和抓取小说内容没有任何本质的区别,步骤都是一样的. 但是图片读取的时候,会遇到一个盗链问题.这个问题是花的解决时间最长的. 环境 语言: python3 操作系统: mac 10.12.16 自定义工具包:soup_tool 其依赖工具如下: from urllib import

python爬虫爬取QQ说说并且生成词云图,回忆满满!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收