爬虫案例-爬取某狗音乐

server/2025/3/31 11:05:19/

文章目录

  • 1、爬取代码
  • 2、效果图

1、爬取代码

import time
import requests
import hashlib
import jsonpath
import osurl = "https://wwwapi.kugou.com/play/songinfo"#伪造请求头
header= {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 QuarkPC/2.3.0.256"}
#uuid = str(int(time.time()))
clinenttime = str(int(time.time()*1000))#print(uuid)
#print(clinenttime)
# 数据列表
data_list = [
"NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
"appid=1014",
f"clienttime={clinenttime}",
"clientver=20000",
"dfid=2UHWk60sDseo11EBHT1lYwCJ",
"encode_album_audio_id=c2bdq0fc",
"mid=51d94f366e27b4cd47c2f46aa11ac7e6",
"platid=4",
"srcappid=2919",
"token=a062aa8f897a25ed7b96c1e3919c42febd73e21a1a775fafd959f2ff63e36697",
"userid=2307953011",
"uuid=51d94f366e27b4cd47c2f46aa11ac7e6",
"NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"
]# 将列表拼接成一个完整的字符串
data = "".join(data_list)
#MD5加密
md5_hash = hashlib.md5(data.encode()).hexdigest()
#md5 = md5_hash.upper()
#print(md5_hash)params= {"srcappid":"2919","clientver":"20000","clienttime":{clinenttime},"mid":"51d94f366e27b4cd47c2f46aa11ac7e6","uuid":"51d94f366e27b4cd47c2f46aa11ac7e6","dfid":"2UHWk60sDseo11EBHT1lYwCJ","appid":"1014","platid":"4","encode_album_audio_id":"c2bdq0fc","token":"a062aa8f897a25ed7b96c1e3919c42febd73e21a1a775fafd959f2ff63e36697","userid":"2307953011","signature":{md5_hash}
}
#请求URL
request = requests.get(url,headers=header,params=params)
json = request.json()
#print(json)#提取音乐名称、下载音乐地址
muisc_info = {"音乐名称": jsonpath.jsonpath(json,"$..audio_name")[0],"下载音乐地址" :  jsonpath.jsonpath(json,"$..play_url")[0]
}
print(muisc_info['音乐名称'],muisc_info['下载音乐地址'])
# 创建输出目录
output_folder = r"C:/Users/zzx/Desktop/音乐" + "/"
if not os.path.exists(output_folder):os.makedirs(output_folder)# 下载音乐文件
music_url = muisc_info["下载音乐地址"]
music_response = requests.get(music_url, headers=header)# 保存音乐文件
music_filename = os.path.join(output_folder, f"{muisc_info['音乐名称']}.mp3")
with open(music_filename, mode="wb") as f:f.write(music_response.content)print(f"音乐已保存到: {music_filename}")

2、效果图

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/server/178547.html

相关文章

openvela新时代的国产开源RTOS系统

openvela 简介 openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家…

Linux安装go环境

安装一个lazydocker,根据文档需要先安装go环境 https://github.com/jesseduffield/lazydocker 官方文档解析 https://go.dev/doc/install 文档内容如下,一共三步 1.删除先前安装的go,解压下载的go压缩包到/usr/local目录 2.添加环境变量&…

java设计模式之建造者模式《装修启示录》​

周五的早上,项目经理小白还沉浸在即将到达的假期的喜悦中,喝着9块9的瑞幸咖啡畅想人生时,老板突然拍出一张装修设计图:"小~白~啊(此处请脑补领导拉长音),新办公室装修就交给你了&#xff0…

[GHCTF 2025]Popppppp[pop链构造] [php原生类的利用] [双md5加密绕过]

题目 <?php error_reporting(0);class CherryBlossom {public $fruit1;public $fruit2;public function __construct($a) {$this->fruit1 $a;}function __destruct() {echo $this->fruit1;}public function __toString() {$newFunc $this->fruit2;return $new…

使用hel-micro微服务实现在jsp项目中引入react组件

以下是一个完整的示例&#xff0c;涵盖 React子应用配置、JSP主应用集成 以及 样式隔离 的实现细节。我们将通过 CSS Modules 和 Shadow DOM 确保React样式与JSP样式互不干扰。 一、React子应用配置 1. 项目结构 react-module/ ├── src/ │ ├── index.js # 模块…

LeetCode面试经典150题

目录 力扣80. 删除有序数组中的重复项 II 代码解析 力扣274. H 指数 代码解析 力扣151. 反转字符串中的单词 解析代码 力扣12. 整数转罗马数字 解析代码 力扣28. 找出字符串中第一个匹配项的下标 解析代码1&#xff08;暴力模拟&#xff09; 解析代码2&#xff08;K…

JVM的组成--运行时数据区

JVM的组成 1、类加载器&#xff08;ClassLoader&#xff09; 类加载器负责将字节码文件从文件系统中加载到JVM中&#xff0c;分为&#xff1a;加载、链接&#xff08;验证、准备、解析&#xff09;、和初始化三个阶段 2、运行时数据区 运行时数据区包括&#xff1a;程序计数…

golang单机锁实现

1、锁的概念引入 首先&#xff0c;为什么需要锁&#xff1f; 在并发编程中&#xff0c;多个线程或进程可能同时访问和修改同一个共享资源&#xff08;例如变量、数据结构、文件&#xff09;等&#xff0c;若不引入合适的同步机制&#xff0c;会引发以下问题&#xff1a; 数据竞…