
在文章开始之前,推荐一些很值得阅读的好文章!感兴趣的也可以去看一下哦!
今日推荐:Spring AI再更新:如何借助全局参数实现智能数据库操作与个性化待办管理
文章链接:https://cloud.tencent.com/developer/article/2464797
这篇文章详细介绍了Spring AI的新特性,特别是如何利用全局参数实现CRUD操作和个人待办管理,内容深入、实用性强,对开发者理解智能数据库交互和Spring AI的应用有很大帮助。

<font size="6" face="华文行楷" color="#0FFFFF">爬取网易云音乐热歌榜:从入门到实战</font>
<font size="5" face="华文行楷" color="#FF0000">**前提声明**</font>
robots.txt协议,尊重版权和用户隐私。<font size="5" face="华文行楷" color="#0F77FF">**目录**</font>
<font size="5" face="华文行楷" color="#0000FF">**引言**</font>
在数字化时代,音乐已成为我们日常生活中不可或缺的一部分。网易云音乐以其丰富的音乐资源和个性化推荐系统,赢得了广大用户的喜爱。然而,你是否想过,如何将这些音乐资源爬取下来,以便在没有网络的情况下也能随时欣赏呢?本文将带你走进爬虫的世界,手把手教你如何爬取网易云音乐热歌榜。
<font size="5" face="华文行楷" color="#008000">**环境准备**</font>
在开始之前,确保你的开发环境中安装了以下Python库:
requests:用于发起网络请求。re:用于正则表达式匹配。os:用于操作系统功能,如文件路径管理。如果尚未安装,可以通过以下命令进行安装:
pip install requests<font size="5" face="华文行楷" color="#FFA500">**代码解析**</font>
首先,我们定义了一个榜单ID与名称的映射字典bangdan\_dict,方便后续代码中使用。
bangdan\_dict = {
'19723756': '飙升榜',
'3779629': '新歌榜',
'2884035': '原创榜',
'3778678': '热歌榜'
}接着,程序会提示用户输入想要下载的榜单ID和歌曲数量。
bangdan\_id = input('请输入你想下载的榜单ID:')
num\_songs = int(input('请输入要下载的歌曲数量:'))根据用户输入的榜单名称,创建一个文件夹以存储下载的歌曲。
filename = 'D:/网易云热歌榜/' + bangdan\_dict[bangdan\_id] + "\\"
if not os.path.exists(filename):
os.makedirs(filename)使用requests库发起对网易云音乐榜单页面的请求,并设置合适的User-Agent以模拟浏览器访问。
url = f"https://music.163.com/discover/toplist?id={bangdan\_id}"
headers = {
"User-Agent": "Mozilla/5.0 ..."
}
response = requests.get(url=url, headers=headers)使用正则表达式从响应内容中提取歌曲ID和标题。
html\_data = re.findall(r'<li><a href="/song\?id=(\d+)">(.\*?)</a>', response.text)[:num\_songs]对于每首歌曲,构建音乐播放地址,发起请求并下载音乐文件。
music\_url = f"http://music.163.com/song/media/outer/url?id={song\_id}.mp3"
music\_content = requests.get(url=music\_url, headers=headers).content将下载的音乐保存到之前创建的文件夹中,并清理文件名中的特殊字符。
cleaned\_title = re.sub(r'[\\/\*?:"<>|]', '', title)
with open(os.path.join(filename, f"{cleaned\_title}.mp3"), 'wb') as file:
file.write(music\_content)<font size="5" face="华文行楷" color="#800080">**结语**</font>
通过本文,你已经学会了如何使用Python爬取网易云音乐热歌榜。这不仅是一次编程实践,更是对网络请求、正则表达式和文件操作的深入理解。希望你能将所学应用到更多有趣和有益的项目中去。
<font size="5" face="华文行楷" color="#474500">**总结**</font>
在数字化时代,音乐已经成为我们生活中不可或缺的一部分。网易云音乐以其丰富的音乐资源和个性化推荐系统,赢得了广大用户的喜爱。本文旨在通过Python编程,手把手教读者如何爬取网易云音乐热歌榜,以便在没有网络的情况下也能随时欣赏音乐。
首先,我们介绍了爬虫的前提声明,强调了遵守目标网站的robots.txt协议,尊重版权和用户隐私的重要性。接着,我们进行了环境准备,确保开发环境中安装了必要的Python库,如requests、re和os。
在代码解析部分,我们详细讲解了如何通过榜单ID与名称映射、用户输入、文件夹创建、发起网络请求、正则表达式提取、音乐下载和文件保存等步骤来实现爬取网易云音乐热歌榜的功能。我们定义了一个榜单ID与名称的映射字典bangdan_dict,方便后续代码中使用。然后,程序会提示用户输入想要下载的榜单ID和歌曲数量,并根据用户输入的榜单名称创建一个文件夹以存储下载的歌曲。
使用requests库发起对网易云音乐榜单页面的请求,并设置合适的User-Agent以模拟浏览器访问。通过正则表达式从响应内容中提取歌曲ID和标题,然后构建音乐播放地址,发起请求并下载音乐文件。最后,将下载的音乐保存到之前创建的文件夹中,并清理文件名中的特殊字符。
通过本文,读者已经学会了如何使用Python爬取网易云音乐热歌榜。这不仅是一次编程实践,更是对网络请求、正则表达式和文件操作的深入理解。希望读者能将所学应用到更多有趣和有益的项目中去。如果有任何问题或需要进一步的帮助,请随时联系作者。
<font size="5" face="华文行楷" color="#FF4500">**全部代码**</font>
import requests
import re
import os
# 榜单ID对应的字典
bangdan\_dict = {
'19723756': '飙升榜',
'3779629': '新歌榜',
'2884035': '原创榜',
'3778678': '热歌榜'
}
print("榜单对应的ID如下:", bangdan\_dict)
# 输入榜单ID
bangdan\_id = input('请输入你想下载的榜单ID:')
# 输入要下载的歌曲数量
num\_songs = int(input('请输入要下载的歌曲数量:'))
# 创建文件夹路径
filename = 'D:/网易云热歌榜/' + bangdan\_dict[bangdan\_id] + "\\"
if not os.path.exists(filename):
os.makedirs(filename)
# 请求榜单页面
url = f"https://music.163.com/discover/toplist?id={bangdan\_id}"
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
}
response = requests.get(url=url, headers=headers)
# 使用正则表达式提取歌曲信息
html\_data = re.findall(r'<li><a href="/song\?id=(\d+)">(.\*?)</a>', response.text)[:num\_songs]
for song\_id, title in html\_data:
# 构建音乐播放地址
music\_url = f"http://music.163.com/song/media/outer/url?id={song\_id}.mp3"
# 请求音乐播放地址并下载音乐
music\_content = requests.get(url=music\_url, headers=headers).content
# 清理文件名中的特殊字符
cleaned\_title = re.sub(r'[\\/\*?:"<>|]', '', title)
with open(os.path.join(filename, f"{cleaned\_title}.mp3"), 'wb') as file:
file.write(music\_content)
print(f"{bangdan\_dict[bangdan\_id]}中的{cleaned\_title}.mp3下载成功")原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。