在开始之前,做一点小小的说明哈:
- 本文需要有简单的python爬虫基础,主要用到两个爬虫模块(都是常规的)
- requests模块
- selenium模块
- 建议使用谷歌浏览器,方便进行抓包和数据获取。
Part1 进行网页分析
首先打开网易云的网页版网易云
然后搜索你喜欢的歌手,这里我就搜陈奕迅,右键选择检查
选择一首歌曲找到这个首歌曲的数字ID,并进行复制
在众多数据中准确的去找到这一串数字
在浏览器上粘贴接口并附上那一串ID,点击回车键
最后你就可以轻松的听完这首歌啦
现在我把那个url贴出来
https://m10.music.126.net/20200715163315/a075d787d191f6729a517527d6064f59/ymusic/0552/0f0e/530f/28d03e94478dcc3e0479de4b61d224e9.mp3
Part2 更高级的
看到这里,你可能会想,为啥根本没用selenium模块呢?能不能直接爬取任何一首我想要的歌,而不用每首都去费心费力的找一个url呢?当然可以哒!
其实网易云在线播放每首歌曲时,都有一个外链地址,这是不会变的,跟每首歌的唯一一个id绑定在一起,每首歌audio文件的url如下:
url = 'https://music.163.com/artist?id=3684'
id值的获取也很简单,播放列表,上方会出现对应的网址,那里有id值,如下图:
所以只需把上面程序中的url改成新的url即可
程序目标是下载当前页面中所有的歌曲。
通过接口下载: 接口链接 + 歌曲ID
- 导包
import os
import time
import requests
from lxml import etree
2.定义请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
3.定义网易云歌单的网址(记得删除/#,否则请求到的不是真是的网 页)
url = 'https://music.163.com/artist?id=3684'
4.发起网络请求,获取网页中的数据
response = requests.get(url, headers=headers)
print(response.text)
5.将网页的html数据(字符串)转换为树形结构
html = etree.HTML(response.text)
6.筛选目标数据(歌曲ID和名称)
music_label_list = html.xpath('//a[contains(@href,"/song?")]')
print(music_label_list)
可以使用os库来新建文件夹
if not os.path.exists('music'):
os.mkdir('music')
7.对标签列表进行循环遍历,得到单首歌曲的标签信息
for music_label in music_label_list:
# 从单个的音乐标签中筛选出ID信息
href = music_label.xpath('./@href')[0]
# print('href数据:', href)
# 从ID信息中切割出ID的数字值
music_id = href.split('=')[1]
# print('ID数据:', music_id)
# 判断字符串中是否是数字(如果是数字结果才为真)
if music_id.isdigit():
# 这是正确的歌曲ID
print('ID数据:', music_id)
# 提取出歌曲的名字
music_name = music_label.xpath('./text()')[0]
print('歌曲名字:', music_name)
# 定义请求歌曲的链接
music_url = 'http://music.163.com/song/media/outer/url?id=' + music_id
# 发送网络请求获取歌曲数据
response = requests.get(music_url, headers=headers)
# 将歌曲数据保存到mp3文件中
with open(f'./music/{music_name}.mp3', 'wb') as file:
file.write(response.content)
print(f'《{music_name}》下载成功。。。。。。')
# 下载一首歌后延时1秒
time.sleep(1)
爬音乐完整代码已做打包
完整源码和资料
扫描下方二维码免领取源码还有案例↓ ↓ ↓
最后,如果你对Python感兴趣的话。可以试试我整理的这一份全套Python学习资料!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!
👉[[CSDN大礼包:《python安装工具&全套学习资料》免费分享]](安全链接,放心点击)
👉Python学习大礼包👈
![](https://i-blog.csdnimg.cn/direct/bb56b28abceb4662a99dde2f2343a1a5.jpeg#pic_center)