爬取网易云音乐并下载歌曲通常涉及以下步骤:
环境准备
导入必要的Python模块,如`requests`、`re`(正则表达式)和`os`(文件操作)。
创建一个用于保存下载文件的目录。
发送HTTP请求
使用`requests`库向网易云音乐的API或网页发送请求,获取歌曲列表或特定歌曲的信息。
解析网页内容
利用`re`模块从网页响应中提取歌曲ID和标题。
使用`lxml`或`BeautifulSoup`等库解析HTML内容,找到音乐文件的下载链接。
下载音乐文件
根据解析出的下载链接,使用`urllib.request`或`requests`库下载MP3文件到本地指定目录。
异常处理
在下载过程中处理可能出现的异常,如网络错误、无效链接等。

import osimport reimport requestsfrom bs4 import BeautifulSoup创建保存下载音乐的文件夹filename = 'musicLibs'if not os.path.exists(filename):os.mkdir(filename)设置请求头,模拟浏览器访问headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}请求网易云音乐搜索页面url = 'https://music.163.com/discover/toplist'response = requests.get(url, headers=headers)解析搜索结果页面,提取歌曲信息soup = BeautifulSoup(response.text, 'html.parser')songs = soup.find_all('a', href=re.compile('/song'))for song in songs:提取歌曲ID和标题song_id = re.findall(r'id=(\d+)', song['href'])song_name = song.text构造下载链接download_url = f'http://music.163.com/song/media/outer/url?id={song_id}.mp3'下载歌曲try:urllib.request.urlretrieve(download_url, os.path.join(filename, f'{song_name}.mp3'))print(f'{song_name} 已成功下载到本地')except Exception as e:print(f'下载 {song_name} 时发生错误: {e}')
请注意,网易云音乐的页面结构可能会发生变化,因此上述代码可能需要根据实际情况进行调整。同时,确保遵循网易云音乐的使用条款和条件,以及当地版权法规。
