Python下载网易云音乐(云音乐飙升榜)

这篇博客分享了如何使用Python结合Selenium自动化下载网易云音乐飙升榜的歌曲。作者解析网页源码,找到歌曲信息的位置,包括歌曲名、ID、图片和作者。在获取嵌套标签数据时,需要通过`switch_to.frame`切换到子界面。文章提供了获取歌曲和歌词的API链接,并给出了实现代码。

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

最近突然想用python写一个自动下载的工具,于是就先拿网易云来练练手,并把过程中的心得写下来便于后面有想玩这个的童鞋们参考。
首先我们分析网页源码,找到我们想要的获取数据位置:
在这里插入图片描述
每一个标签对应着飙升榜中的一首歌曲,想要查看歌曲的详细信息,可以点开标签查看。
在这里插入图片描述

点开后,我们发现,关于歌曲时长,歌曲名称,歌曲id,图片,以及作者都可以在两个标签下找到,且想要获取的歌曲名,ID,图片以及作者都是后一个标签的不同属性值,分别对应的是‘data-res-nam’,‘data-res-id’,‘data-res-pic’,'data-res-author’属性的值。
知道我们要获取的数据具体位置后,我们就可以直接写代码来获取了。

在写代码前,我们再仔细看下网页源码,我们发现一个很有意思的现象:
在这里插入图片描述
我们发现我们要获取的数据,位于一个标签再嵌套的一个标签下面,然后我们发现中间有一个标签节点,其实这相当于是当前界面的子界面,最外层的是父界面,里面的是子界面(可以这么理解),当我们想要用Selenium获取子界面的节点时,是直接获取不到的,需要切换到子界面,然后再去获取才可以。
切换方法很简单,直接用:
driver.switch_to.frame(‘contentFrame’)
其中‘contentFrame’为到name属性的值。

关于获取歌曲名称,作者,时长以及下载图片的方式可以从上面网页源码中直接获取,但是下载歌曲以及歌词时,直接通过API来获取。
获取歌曲:url = “https://music.163.com/song/media/outer/url?id=”+str(id)+".mp3"
获取歌词:url = “http://music.163.com/api/song/lyric?id=”+str(id)+"&lv=1&kv=1&tv=-1"

好了,接下来就可以直接上代码了:

# --encode:utf-8 --
from selenium import webdriver
import pymongo
import requests
import os
import json
'''
实现思路:
1.将网易云音乐'云音乐飙升榜'中的歌曲名,歌手,歌曲时长,图片,歌词获取下来
2.将获取的信息存入本地文档,以"云音乐飙升榜/歌曲名/歌曲名.mp3"的格式存放
3.将获取的信息存入mongo数据库中         
'''
class wangyiyun():
    def __init__(self, url, headers, num):
        self.url = url
        self.headers = headers
        self.num = num
        self.songs_name_list = []            # 用于存放歌曲名的列表
        self.songs_times_list = []           # 存放歌曲时长的列表
        self.songs_author_list = []          # 存放歌曲歌手的列表
        self.songs_pic_list = []             # 存放歌曲图片的列表
        self.songs_href_list = []            # 存放歌曲链接的列表(非歌曲下载链接)
        self.songs_id_list = []              # 存放歌曲id的列表(网易云中显示的歌曲id)
        self.songs_download_url_list = []    # 存放歌曲下载链接的列表
        self.songs_info_list = []            # 存放歌曲所有信息的列表(便于后面存入数据库)

    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值