python爬取网易云音乐歌单ID
本文最后更新于:2024年12月14日 下午
python爬取网易云音乐歌单ID
前言
前几天建了个在线听音乐的音乐馆页面,这几天使用了一下,感觉每次听都要自己在网址栏添加歌单的参数信息,而且歌单ID这一串数字也不容易记住,觉得比较麻烦。索性就直接添加了一个随机切换歌单的按钮,这样只要点击一下按钮就可以随机切换歌单了。本文记录如何使用python获取网易云歌单ID。
歌单ID来源
aplayer播放器目前支持服务商,例如netease
(网易云音乐),tencent
(腾讯),kugou
(酷狗),xiami
(小米音乐),baidu
(百度音乐)
因为我自己比较常听的是网易云,所以这次就先搞个网易云的歌单,废话不多说,开搞!!!
编写代码
import requests
from lxml import html
# 定义请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# 获取的页数,这里看了一下网易云的页数是20页,所以直接循环爬取20页的全部歌单ID
for i in range(20):
# 构建请求链接,因为每页是35个歌单,所以这里是累加后乘以35
url = f'https://music.163.com/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset={i * 35}'
# 发送请求
response = requests.get(url, headers=headers)
# 使用lxml解析HTML
tree = html.fromstring(response.text)
# 使用XPath提取标题和链接
titles = tree.xpath('//body/div[3]/div/ul/li/div/a/@title')
hrefs = tree.xpath('//body/div[3]/div/ul/li/div/a/@href')
# 将结果保存到文件
with open('data.txt', 'a', encoding='utf-8') as file:
for title, href in zip(titles, hrefs):
file.write(f'name: {title}\n')
file.write(f'id: {href}\n\n')
print(f'第{i+1}页提取完成')
# 更新下一页的offset
offset = (i + 1) * 35
url = f'https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset={offset}'
print('全部提取完成')
运行完代码后将会在当前运行目录生成一个data.txt的文档,歌单的名字以及歌单的ID就保存在这个文档里了
微信支付
支付宝支付
“请博主喝咖啡☕️”