首先呢,我们打开QQ音乐搜索周杰伦
https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=周杰伦
一切做好准备后呢,我们需要找到歌曲清单,找到client_search(客户端搜索)……而且它最大,有10.9KB,我们来点击它。
这里分别Headers:标头(请求信息)、Preview:预览、Response:原始信息、Timing:时间。
然后我们点开Preview如图:
哈哈哈哈歌曲信息我们找到啦(data-song-list-0-name一层一层点开)
这个XHR是一个字典,键data对应的值也是一个字典;在该字典里,键song对应的值也是一个字典;在该字典里,键list对应的值是一个列表;在该列表里,一共有20个元素;每一个元素都是一个字典;在每个字典里,键name的值,对应的是歌曲名。
json是什么呢?粗暴地来解释,在Python语言当中,json是一种特殊的字符串,这种字符串特殊在它的写法——它是用列表/字典的语法写成的:
1a = ‘1,2,3,4’
2# 这是字符串
3b = [1,2,3,4]
4# 这是列表
5c = ‘[1,2,3,4]’
6# 这是字符串,但它是用json格式写的字符串
XHR的功能是传输数据,其中有非常重要的一种数据是用json格式写成的,和html一样,这种数据能够有组织地存储大量内容。json的数据类型是“文本”,在Python语言当中,我们把它称为字符串。我们能够非常轻易地将json格式的数据转化为列表/字典,也能将列表/字典转为json格式的数据。
代码如下:
import requests
res_music = requests.get(‘https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=周杰伦&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0’)
json_music = res_music.json()
list_music = json_music[‘data’][‘song’][‘list’]
for music in list_music:
print(music[‘name’])
# 以name为键,查找歌曲名
print(‘所属专辑:’+music[‘album’][‘name’])
# 查找专辑名
print(‘播放时长:’+str(music[‘interval’])+‘秒’)
# 查找播放时长
print(‘播放链接:https://y.qq.com/n/yqq/song/’+music[‘mid’]+’.html\n\n’)
# 查找播放链接
—— 此为风变编程的学习笔记