执行该源码需要提前安装好Python环境!!!
步骤一:
桌面新建文本文档改后缀名为py
把他拖进编辑器中(如vscode,IDLE,pycharm)等
步骤二:
按住win+r键弹出运行框输入cmd回车
需要安装requests模块。安装命令为:pip install + 模块名 这里为pip install requests
步骤三:
回到编辑器,开始写代码,首先导入请求模块。
import requests
打开网易云飙升榜飙升榜 – 排行榜 – 网易云音乐 (163.com)按f12打开开发者工具找到网络,刷新页面
找到music.163.com,点击
接下来我们需要把这个榜单的URL写上
url = 'https://music.163.com/discover/toplist'
下面还要写请求头,需要user-agent(简称ua),cookie,referer,content-type
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
'cookie': 'hb_MA-BFF5-63705950A31C_source=www.baidu.com; JSESSIONID-WYYY=Xos42jRjD0hwIuRY6f8mO5qByfH85AO%2Fb3TsiDGPf9kcA7CJC24GRhu5K%2B05YCc%2Bik6YCRy93%5Cht5JGjA2RPyp28AUT2v9gjtRmMibj%5CUr51wmAj2VgO9w%2Bs8%2FGjKXIg3miG8bAeJD%2FMuySlrH07DRVrabS29M7n0TvygAu7v%5Cnu%2FyBJ%3A1662265008681; _iuqxldmzr_=32; _ntes_nnid=436bbe81760bd0ae30a01f6e24caa28d,1662263208720; _ntes_nuid=436bbe81760bd0ae30a01f6e24caa28d; NMTID=00O8_pjq23wu6pyV0MJv3_AsL7szbUAAAGDBpuwAQ; WEVNSM=1.0.0; WNMCID=ewkcee.1662263208889.01.0; WM_NI=4dU%2BtUGD7aH5UzWsDgFPf31sBQF%2FN4o1TcWb1Kb8o5uAVFTOSeofAVek7%2Fag57gFBnN9sWe341igI5WCzI%2BvT6DmWkf6kR6PRdoIUT0qcIXh2LitOmnttkeaZVUQwVl7cjE%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee9abb52908f9ca6ae43f6ac8ba2d84a828f9eacc85df38ff789bc7ea789a6d4f22af0fea7c3b92af8bc9bccf75f859cf982cb3f97a69994c76d8690aad4b479828f8ad0cd40adef9c84d66af395aed9ee3fb79f9aa7d74591bba187c45ea7b5f9d0e46df7e9a9a7c1668ee7bdb8e839f8efa788cc3f959db6aaaa7e98ea8c8ed661a6eaa5b3b55c92bca1aad860f4afadaadb64f294a795ce67aeacbc8ce86b9a8a9bb2f65eb0e9ad8bc837e2a3; WM_TID=1PHzMm1NV9REEERUUAfFDhU904rfXi2p; playerid=56733425',
'referer': 'https://music.163.com/',
'content-type': 'text/html;charset=utf8',
}
上面这段代码为我自己的信息,根据自己的信息把上面替换
可以看到这里的请求方式为get,所以为requests.get(url=url, headers=headers)发送HTTP GET请求并获取响应,然后用一个变量去接收信息,变量我这里定义为response,代码为
response = requests.get(url=url, headers=headers)
这里可以查看是否获取成功可以输出一下,用print(response),如果输出<Response [200]>表示请求成功
接下来发送数据之后还需要去接收数据,接收数据重新定义一个变量,我这里定义为html_data,代码为:
html_data = response.text
下面还需要去解析数据,解析数据这里使用正则表达式,模块为re,内置的模块,不需要去pip下载,直接导入即可,在import requests下面再新增一个import re
import re
然后f12用工具点击每首歌曲
把每首歌曲的id及名字用正则表达式.*?匹配。匹配出来为<li><a href=”/song?id=.*?”>.*?</a></li>
刚才获取到的数据为整个源码,用html_data接收数据了,需要在这个数据里面去查找,用re.findall查询,代码为
info_list = re.findall('<li><a href="/song\?id=(.*?)">(.*?)</a></li>', html_data)
这里遍历info_list中的每个歌曲信息,并构造歌曲的下载链接music_url,然后打印歌曲信息。使用requests.get()函数发送GET请求下载歌曲,并将响应的内容存储在music_data变量中。使用open()函数以二进制写入模式打开一个文件(文件名与歌曲名相同,后缀为.mp3),并将歌曲数据写入文件。
for music in info_list:
music_url = f'http://music.163.com/song/media/outer/url?id={music[0]}'
print(music)
music_data = requests.get(music_url).content
open(f'{music[1]}.mp3', mode='wb').write(music_data)
完整代码
运行效果:
© 版权声明
THE END
请登录后查看评论内容