【Python3】分析某音乐页面并使用tkinter构建简易GUI

本文介绍了Python初学者如何分析酷狗音乐搜索页面,提取音乐ID并利用tkinter创建简单的GUI。通过开发者工具找到音乐播放URL,解析动态生成的请求参数,特别是时间戳和签名,然后使用这些信息构造请求以获取歌曲信息和播放链接。最后,实现了一个简单的搜索功能,展示歌曲信息,并能下载音乐到指定位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 分析某音乐页面并使用tkinter构建简易GUI

本人python初学者,记录自己的一次学习过程,仅供参考。欢迎各位前辈指点。

分析页面

本次要分析的页面主要是酷狗音乐的搜索界面

思路如下:

  1. 在上图所示页面点击播放一首音乐后,F12进入开发者模式,找到含有音乐的play_url的请求网址,该url就是音乐播放的url。
  2. 在对请求网址进行删减后,注意到encode_album_audio_id(红框内)的参数,似乎是代表着音乐的id。
  3. 所以如果有了每首歌曲的encode_album_audio_id,也就获得了这首歌曲的play_url
  4. 返回到搜索界面,进入开发者模式,并Ctrl+F搜索红框内encode_album_audio_id,发现了一个list,里面包含了搜索界面的音乐信息;
  5. 我们在对应的音乐里面,发现了和encode_album_audio_id相同的值——EMixSongID
    所以现在的任务也就变成了提取每首音乐的EMixSongID,也就是得到了encode_album_audio_id,同时就得到了play_url
  6. 观察请求页面的参数
    尝试了不同几个页面的参数后,发现只有clienttimesignature是变化的。(可能还有关键字keyword)
    其中clientime为当前时间戳,pyhon time库处理简单。
    关于signature的处理可自行查找。
  7. 接下来的任务就是对url中的json格式进行处理,提取EMixSongID
  8. 将得到得到不同歌曲的不同的EMixSongID进行url拼接,得到含有该首歌曲play_url的url,再次对该页面进行json处理,得到play_url,完成。
def get_url():
	k = time.time()
	k = int(round(k * 1000))
	text = input("请输入搜索关键字")
	info = [
	    "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
	    "appid=1014",
	    "bitrate=0",
	    "callback=callback123",
	    "clienttime={}".format(k),
	    "clientver=1000",
	    "dfid=34d3K63Qc3AA3wvcEp1te6TT",
	    "filter=10",
	    "inputtype=0",
	    "iscorrection=1",
	    "isfuzzy=0",
	    "keyword={}".format(text),
	    "mid=41d5a0c36112c5cb310d75b0ab73ac0f",
	    "page=1",
	    "pagesize=30",
	    "platform=WebFilter",
	    "privilege_filter=0",
	    "srcappid=2919",
	    "token=",
	    "userid=0",
	    "uuid=41d5a0c36112c5cb310d75b0ab73ac0f",
	    "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"]
	# 创建md5对象
	new_md5 = md5()
	info = ''.join(info)
	# 更新哈希对象
	new_md5.update(info.encode(encoding='utf-8'))
	# 加密
	result = new_md5.hexdigest()
	music_info_url = 'https://complexsearch.kugou.com/v2/search/song?callback=callback123&srcappid=2919&clientver=1000&clienttime={}&' \
	                 'mid=41d5a0c36112c5cb310d75b0ab73ac0f&uuid=41d5a0c36112c5cb310d75b0ab73ac0f&dfid=34d3K63Qc3AA3wvcEp1te6TT&' \
	                 'keyword={}&page=1&pagesize=30&bitrate=0&isfuzzy=0&inputtype=0&platform=WebFilter&userid=0&iscorrection=1&' \
	                 'privilege_filter=0&filter=10&token=&appid=1014&signature={}'.format(k, text, result)
	
	headers = {
   
	    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
	    'Cookie': '填入你自己的Cookie'
	}
	# 请求搜索界面的URL
	minfo_get = requests.get(music_info_url, headers=headers).text
	# 获得该页面的json格式并处理
	minfo_get = minfo_get[12:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值