python爬取酷我音乐(收费也可)
第一次创作,请多指教
环境:Python3.8,开发工具:Pycharm
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
第三方库:requests
详细
进入酷我音乐的网站到搜索界面
输入歌名进去打开开发者工具会发现这个包
它里面包含了这一页的音乐数据,我们需要的是这个参数
然后开始写代码吧,先找到所需的音乐数据
import requests
import json
import os
def music_download():
kw = input("请输入音乐名称:")
# 请求头
headers = {xian
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 Edg/84.0.522.63",
"Cookie":"_ga=GA1.2.1083049585.1590317697; _gid=GA1.2.2053211683.1598526974; _gat=1; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1597491567,1598094297,1598096480,1598526974; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1598526974; kw_token=HYZQI4KPK3P",
"Referer": "http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6",
"csrf": "HYZQI4KPK3P",
}
# 参数列表
params = {
"key": kw,
# 页数
"pn": "1",
# 音乐数
"rn": "10",
"httpsStatus": "1",
"reqId": "cc337fa0-e856-11ea-8e2d-ab61b365fb50",
}
# 创建列表,后面下载需要
music_list = []
url = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?"
res = requests.get(url = url,headers = headers,params = params)
res.encoding = "utf-8"
text = res.text
# 转成json数据
json_list = json.loads(text)
# 发现data中list是存主要数据的地方
datapack = json_list["data"]["list"]
接下来是重要的地方
先随便试听一首音乐,找到他的json数据
我们发现这个json数据里含有.mp3的链接,这就是音乐文件
复制他的url,进去看是一个接口
他的url有规律,之前我们提取的rid参数就起了作用,把它复制到链接里,这里看代码吧
# 遍历拿到所需要的数据,音乐名称,歌手,id...
for i in datapack:
# 音乐名
music_name = i["name"]
# 歌手
music_singer = i["artist"]
# 待会需要的id先拿到
rid = i["rid"]
# 随便试听拿到一个音乐的接口,这是的rid就用得上了
api_music = "http://www.kuwo.cn/url?format=mp3&rid={}&response=url&type=convert_url3" \
"&br=128kmp3&from=web&t=1598528574799&httpsStatus=1" \
"&reqId=72259df1-e85a-11ea-a367-b5a64c5660e5".format(rid)
api_res = requests.get(url = api_music)
# 打印发现真实的url确实在里面
# print(api_res.text)
music_url = json.loads(api_res.text)["url"]
# 大功告成,试试效果
print(music_name)
print(music_singer)
print(music_url)
顺便写了个方便下载的功能
# 在此之前先创建列表
music_list = []
函数体内建一个字典方便保存歌名与音乐数据
# 把数据存到字典方便下载时查找
music_dict = {}
music_dict["name"] = music_name
music_dict["url"] = music_url
music_dict["singer"] = music_singer
music_list.append(music_dict)
# 看看真实数据数量
print(len(music_list))
遍历之前的列表数据进行判断,利用索引找到指定的url
# 下载
xiazai = input("输入要下载的音乐名称:")
# 下载位置
root = 'E://下载的music//'
# 每个字典里有name和url
for i in range(len(music_list)):
try:
if xiazai == music_list[i]["name"]:
# 创建文件夹
if not os.path.exists(root):
os.mkdir(root)
# 拿到字典中对应的音乐url数据
music_content = requests.get(url = music_list[i]["url"]).content
with open(root + "{}.mp3".format(music_list[i]['name']),"wb") as f:
f.write(music_content)
print("下载成功")
except:
print("下载失败")
然后就可以愉快的下载付费音乐啦
完整代码
import requests
import json
import os
def music_download():
kw = input("请输入音乐名称:")
# 请求头
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 Edg/84.0.522.63",
"Cookie":"_ga=GA1.2.1083049585.1590317697; _gid=GA1.2.2053211683.1598526974; _gat=1; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1597491567,1598094297,1598096480,1598526974; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1598526974; kw_token=HYZQI4KPK3P",
"Referer": "http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6",
"csrf": "HYZQI4KPK3P",
}
# 参数列表
params = {
"key": kw,
# 页数
"pn": "1",
# 音乐数
"rn": "10",
"httpsStatus": "1",
"reqId": "cc337fa0-e856-11ea-8e2d-ab61b365fb50",
}
# 创建列表,后面下载需要
music_list = []
url = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?"
res = requests.get(url = url,headers = headers,params = params)
res.encoding = "utf-8"
text = res.text
# 转成json数据
json_list = json.loads(text)
# 发现data中list是存主要数据的地方
datapack = json_list["data"]["list"]
# 遍历拿到所需要的数据,音乐名称,歌手,id...
for i in datapack:
# 音乐名
music_name = i["name"]
# 歌手
music_singer = i["artist"]
# 待会需要的id先拿到
rid = i["rid"]
# 随便试听拿到一个音乐的接口,这是的rid就用得上了
api_music = "http://www.kuwo.cn/url?format=mp3&rid={}&response=url&type=convert_url3" \
"&br=128kmp3&from=web&t=1598528574799&httpsStatus=1" \
"&reqId=72259df1-e85a-11ea-a367-b5a64c5660e5".format(rid)
api_res = requests.get(url = api_music)
# 打印发现真实的url确实在里面
# print(api_res.text)
music_url = json.loads(api_res.text)["url"]
# 大功告成,试试效果
print(music_name)
print(music_singer)
print(music_url)
# 把数据存到字典方便下载时查找
music_dict = {}
music_dict["name"] = music_name
music_dict["url"] = music_url
music_dict["singer"] = music_singer
music_list.append(music_dict)
# 看看真实数据数量
print(len(music_list))
# 下载
xiazai = input("输入音乐名称:")
# 下载位置
root = 'E://下载的music//'
for i in range(len(music_list)):
try:
if xiazai == music_list[i]["name"]:
# 创建文件夹
if not os.path.exists(root):
os.mkdir(root)
# 拿到字典中对应的音乐url数据
music_content = requests.get(url = music_list[i]["url"]).content
with open(root + "{}({}).mp3".format(music_list[i]['name'],music_list[i]['singer']),"wb") as f:
f.write(music_content)
print("下载成功")
except:
print("下载失败")
if __name__ == "__main__":
music_download()
运行结果
python爬取酷我音乐(收费也可)的更多相关文章
- python爬取酷我音乐
我去!!!我之后一定按照搜索方式下载歌曲~~~~~~~~~ 1.首先打开我们本次主讲链接:http://www.kuwo.cn/ 2.刚开始我就随便点了一个地方,然后开始在后台找歌曲的链接地址.但是 ...
- 如何使用 python 爬取酷我在线音乐
前言 写这篇博客的初衷是加深自己对网络请求发送和响应的理解,仅供学习使用,请勿用于非法用途!文明爬虫,从我做起.下面进入正题. 获取歌曲信息列表 在酷我的搜索框中输入关键词 aiko,回车之后可以看到 ...
- Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1)
1. 爬虫设计的技术 1)数据获取,通过http获取网站的数据,如urllib,urllib2,requests等模块: 2)数据提取,将web站点所获取的数据进行处理,获取所需要的数据,常使用的技 ...
- python爬取QQVIP音乐
QQ音乐相比于网易云音乐加密部分基本上没有,但是就是QQ音乐的页面与页面之间的联系太强了,,导致下载一个音乐需要分析前面多个页面,找数据..太繁琐了 1.爬取链接:https://y.qq.com/ ...
- Python 爬取qqmusic音乐url并批量下载
qqmusic上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的.于是,来了个qqmusic的爬虫. 至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在ur ...
- Python爬虫实战一之爬取QQ音乐
一.前言 前段时间尝试爬取了网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息.网易云音乐歌曲列表是通过iframe展示的,可以借助Selenium获取到iframe的页面元素, 而QQ音乐采用的是 ...
- 手把手教你使用Python抓取QQ音乐数据(第一弹)
[一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...
- 手把手教你使用Python抓取QQ音乐数据(第二弹)
[一.项目目标] 通过Python爬取QQ音乐数据(一)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精 ...
- python定时器爬取豆瓣音乐Top榜歌名
python定时器爬取豆瓣音乐Top榜歌名 作者:vpoet mail:vpoet_sir@163.com 注:这些小demo都是前段时间为了学python写的,现在贴出来纯粹是为了和大家分享一下 # ...
随机推荐
- IEnumerable<T>转DataTable,为空怎么办?
public static class DataConvertor { public static DataTable ToDataTable<T>(IEnumerable<T> ...
- windows:驱动模块隐藏
windwos下想要搞点事,权限当然是越大越好:驱动模块天生在0环,和操作提供平级,大家互相是兄弟,所以很多外挂.木马.病毒都会使用驱动达到自己的目的.那么问题来了:PCHUNTER这种工具能查到系统 ...
- python文件的执行
python文件的后缀名没有限制,但是为了后来导入模版的规范性,python代码通常以".py"作为后缀: python文件运行 一般情况都是解释器+文件名,如:python ** ...
- Hive: Reflect UDF
Reflect UDF JAVA类和方法通常用于处理用户希望在hive中使用的确切的函数.相比与封装一个UDF然后调用这个方法,这些 方法主要通过反射UDF去调用.Reflect使用Java反射去实例 ...
- 使用cors完成跨域请求处理
跨域的含义 同源策略以及其限制内容 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS.CSFR等攻击.所谓同源是指"协议+域名+端口&quo ...
- Bytom Dapp 开发笔记(一):架构设计
简介 研究比原链已经一年了,用比原链做了几个dapp,而且最近还做了一个基于他们插件钱包的dapp,总结了一些遇到的坑,还有一些技术细节,接下来我会分成三章,从dapp设计架构上,到深入到源码分析去帮 ...
- Go之Gorm简介及使用案例
简介 ORM Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作 G ...
- C#算法设计排序篇之06-堆排序(附带动画演示程序)
堆排序(Heap Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/685 访问. 堆排序是指利用堆积树(堆)这 ...
- IPSec传输模式下的ESP报文的装包和拆包过程
IPSec协议定义 IPsec将IP数据包的内容在装包过程在网络层先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. IPsec 对数据进行加密的方式 加密模式 ...
- 「MoreThanJava」Day 7:接口详解
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...