正则爬取网易云音乐榜单

部署运行你感兴趣的模型镜像

零、本文教学,可用源代码在此👇

【免费】python爬取网易云音乐歌曲(含VIP)(有无损音质)资源-优快云下载

一、获取url

1、排行榜页面右键——>检查

2、点击网络——>文档——>刷新网页(ctrl+R)

3、点击“toplist?id=19723756“——>标头——>找到”请求url“(第一行),复制(为爬虫的请求地址)

二、发送请求并获取响应

1、拉到最下面寻找user-agent——>复制到代码headers字典中

(隐私不截屏全部)

2、防止反爬,在headers加一行代码(防反爬代码)

headers = {
    'User-agent':'XXXXXX',
    'Referer': 'https://music.163.com/',
}

3、发送请求并获得相应(顺便检查print)

response = requests.get(url,headers=headers)
html_data = response.text
print(html_data)

查看结果,终端ctrl+F搜索榜单上任意歌曲


说明成功获得响应

三、利用正则表达式爬取歌曲名称、播放id

1、点击“toplist?id=19723756“——>响应

2、点击响应版面——>ctrl+F查找一首当前榜单上的歌曲名称

3、向右移动发现其他榜单上歌曲——>找到相似结构——>复制(正则表达式原型)

4、整理正则表达式并获取所有符合条件的项(正则表达式整理过于复杂,请另行学习)——简单讲:不用的.*?,需要的(.*?)

song_list = re.findall('<li><a href="/song\?id=(.*?)">(.*?)</a></li>',html_data)]

依旧print(song_list)检查

5、整理爬取的信息(从song_list列表提取,因为上述findall函数返回值为列表)

for song in song_list:
    song_id = song[0]
    song_name = song[1]
    print(song_id,song_name)

四、利用获取的播放id,下载音乐(⭐重点API网站)

可从此网站获取逆向后的歌曲下载地址:byfuns.top(不是我做的,好厉害的)

也可直接看代码(包括其中):

download_url = f'https://www.byfuns.top/api/1/?id={song_id}'
#无损音质:
#download_url = f'https://www.byfuns.top/api/1/?id={song_id}&level=lossless'
download_response = requests.get(download_url,headers=headers)
download_text = download_response.text
music_content = requests.get(download_text,headers=headers).content
download_url即从该网站获取的api,可将载荷(不太需要知道是啥,可自行搜索)解码
download_text获得的是text(文本信息),是最终的音乐下载地址(逆向后的,VIP歌曲可用)music_content获得的是content(二进制),可播放音乐MP3

五、存储到本地

0、防止歌名中含有特殊字符出现乱码,做一个简单清理

cleaned_name = re.sub(r'[\\/?|<>*]','',song_name)

1、创建存储下载音乐的文件夹(默认存入当前路径下)

filename = '网易云音乐(VIP版)'
if not os.path.exists(filename):
    os.makedirs(filename)

2、写入下载的音乐

    with open(os.path.join(filename,f'{cleaned_name}.mp3'),'wb') as file:
        file.write(music_content)

完成了。源代码中有进阶:如何选择榜单、选择下载歌曲数。(很简单,可自行琢磨)

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值