python爬取网易云音乐歌单ID

本文最后更新于:2023年11月20日 下午

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就保存在这个文档里了


微信二维码

微信支付

支付宝二维码

支付宝支付

“文章不错,请博主喝咖啡☕️”

文章作者: Wenbin
版权声明: 本站所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wenbin !