用Python爬取网易云音乐歌曲

本文介绍如何使用Python爬取网易云音乐的歌曲及其歌词。通过获取歌曲ID并将其放入特定URL中,可以轻松下载歌曲。文章提供了代码示例并展示了运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地。

跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两个参数,其实爬取歌曲也是同样的道理,也需要传入这两个参数,只不过网易云歌曲的URL一般人找不到。不过也不要慌,有小编在,分分钟扫除您的烦恼。

网易云歌曲一般会有一个外链,专门用于下载音乐音频的,以赵雷的歌曲《成都》为例,《成都》的外链URL是:

http://music.163.com/song/media/outer/url?id=436514312.mp3,其中436514312这个数字是《成都》这首歌曲的ID。也就是说只要我们将歌曲的ID传入到外链URL中,就可以找到该歌曲的下载地址,之后通过Python标准库进行下载即可。

话不多说,直接上代码:

img_0a7b9bc550d62eca1a1619703e2c0a1e.jpe

程序设计好之后,运行程序,输入歌手的ID,以赵雷为例,其ID是6731,输入这个ID数值之后,程序将自动将赵雷的专辑歌曲及其对应的歌词下载到本地,运行的效果图如下所示:

img_23bcae01f5a068057407fc08b724c517.jpe

程序运行完毕之后,歌词和歌曲都down到本地了,如下图:

img_23fcb7cd6b3a155787df1f449a5d5495.jpe
img_e8a4a9007d5387a3b7de2d90560d77a0.jpe

之后在本地便可以听到优雅的歌曲了,如《成都》,见下图:

img_0de8008a73445cbc474e07aeb3838d83.jpe

大家以后要听歌曲的话只要运行这个爬虫程序,输入你喜欢的那位歌手的ID,稍等片刻,就可以听到你想要的歌曲啦~~~10万首歌曲就不在话下啦,只要你愿意,随便多少首都行~~

最后小编祝福大家身体健康,工作顺利~~欢迎大家转载噢

今天这个程序完整的代码截图可以参考小编前天分享的那篇基于Python网易云音乐歌词爬取文章,结合今天的代码,就可以如愿以偿啦~~~

### 使用Python爬取网易云音乐歌曲的原理和方法 #### 三级标题:网络请求处理 在爬取网易云音乐时,首先需要发送HTTP请求以获取目标页面的内容。可以使用`requests`库来完成这一任务。为了规避反爬虫机制,通常需要设置自定义的`User-Agent`头信息[^2]。 ```python import requests url = "https://music.163.com/discover/toplist" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } response = requests.get(url, headers=headers) response.encoding = 'utf-8' ``` 如果目标页面内容由JavaScript动态加载,则需要借助`Selenium`或`Pyppeteer`等工具模拟浏览器行为[^4]。 #### 三级标题:HTML解析 获取到HTML内容后,需要对其进行解析以提取所需信息。可以使用`BeautifulSoup`或`lxml`库进行解析。以下是一个使用`BeautifulSoup`解析歌单信息的示例[^1]: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'lxml') playlists = soup.find_all('a', class_='msk') for playlist in playlists: title = playlist.get('title') # 提取歌单标题 link = playlist.get('href') # 提取歌单链接 print(f"歌单标题: {title}, 链接: {link}") ``` 对于复杂结构的HTML文档,可以结合XPath表达式使用`lxml`库进行高效解析。 ```python from lxml import etree html = etree.HTML(response.text) titles = html.xpath('//a[@class="msk"]/@title') links = html.xpath('//a[@class="msk"]/@href') for title, link in zip(titles, links): print(f"歌单标题: {title}, 链接: {link}") ``` #### 三级标题:数据存储 提取到的歌曲信息可以存储到文件或数据库中。例如,将歌曲信息保存为CSV文件[^2]: ```python import csv with open('songs.csv', mode='w', newline='', encoding='utf-8') as file: writer = csv.writer(file) writer.writerow(['Title', 'Link']) for title, link in zip(titles, links): writer.writerow([title, link]) ``` 如果需要长期保存大量数据,可以将其存储到关系型数据库如MySQL中。 #### 三级标题:注意事项 在爬取过程中需要注意以下几点: - **编码问题**:确保正确设置响应的编码格式,避免乱码问题[^4]。 - **动态内容**:部分页面内容可能由JavaScript动态生成,需使用`Selenium`等工具加载完整页面。 - **法律合规**:遵守目标网站的`robots.txt`文件规定,合理控制请求频率以避免被封禁[^4]。 ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值