通过页面抓包分析后,最终编写代码并测试成功,记录一下直接上代码:importrequestsimportreif__name__=='__main__':headers={'Accept':'application/json,text/plain,*/*','Accept-Encodi
通过页面抓包分析后,最终编写代码并测试成功,记录一下
直接上代码:
import requests
import re
if __name__ == '__main__':
headers = {
'Accept':'application/json,text/plain,*/*',
'Accept-Encoding': 'gzip,deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep - alive',
'Cookie':'Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1646119037; _ga=GA1.2.508252985.1646119039; _gid=GA1.2.547925733.1646119039; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1646120686; kw_token=SEBFCWA00YB',
'csrf': 'SEBFCWA00YB',
'Host': 'www.kuwo.cn',
'Referer': 'http://www.kuwo.cn/search/list?key=%E5%AD%A4%E7%8B%AC%E7%9A%84%E4%BA%BA',
'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
}
search_url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?'
play_url = 'http://www.kuwo.cn/api/v1/www/music/playUrl?'
key = input("请输入需要下载的歌曲名称:")
param_1 = {
'key':key,
'httpsStatus': '1',
'reqId': '76901a60-9933-11ec-9ae2-7558153549c6',
}
r = requests.get(url=search_url,params=param_1,headers=headers)
print(r.status_code)
r.encoding = 'utf-8'
r_text = r.text
print(r_text)
obj = re.compile(r'musicrid.*?MUSIC_(?P<mid>.*?)",',re.S)
result = obj.search(r_text)
mid = result.group("mid")
print(mid)
param_play = {
'mid': mid,
'type': 'music',
'httpsStatus': '1',
'reqId': '490371a0-993d-11ec-b3dd-b3f050d56567',
}
r_down = requests.get(url=play_url,params=param_play,headers=headers)
print(r_down.status_code)
r_down.encoding = 'utf-8'
r_down_text = r_down.text
print(r_down_text)
mp3_obj = re.compile(r'"url":"(?P<down_url>.*?)"}',re.S)
down_result = mp3_obj.search(r_down_text)
result_url = down_result.group("down_url")
print(result_url,"下载地址已获取!")
down_mp3 = requests.get(result_url)
with open(f"mp3/{key}.mp3",mode="wb") as f:
f.write(down_mp3.content)
print("歌曲:{} 下载完成!".format(key))
通过这个代码实例的学习,可以掌握requests请求模块和re 正则表达式的使用方法。当然,分析这个过程会让新手受益匪浅,同时享受成功带来的欢乐。
这个代码中间过程也给打印了内容,方便自己学习的时候,可以同时分析这个下载过程。这个代码还可以进一步优化成用列表方式,批量下载歌曲。
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1553299181@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.nhjkw.cn/58631.html
如若转载,请注明出处:https://www.nhjkw.cn/58631.html