用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

网易云音乐排行榜前200首音乐任意下载

2022-04-10 作者: mikeKil举报

[python]代码库

import requests            # 用于获取网页内容的模块
from bs4 import BeautifulSoup    # 用于解析网页源代码的模块
import easygui as t
import tkinter as tk
from tkinter import messagebox
header={  # 伪造浏览器头部,不然获取不到网易云音乐的页面源代码。
  'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',
}
# 这是网易云音乐热歌榜的链接(其实是嵌套在网页里面含有歌曲数据的页面框架的真实链接)
link = "https://music.163.com/discover/toplist?id=3778678"
# 通过 requests 模块的 get 方法获取网页数据
r = requests.get(link, headers=header)
# 获取网页内容
html = r.content
# 通过 BeautifulSoup 模块解析网页,具体请参考官方文档。
soup = BeautifulSoup(html, "html.parser")
# 通过分析网页源代码发现排行榜中的歌曲信息全部放在类名称为 f-hide 的 ul 中,
# 于是根据特殊的类名称查找相应 ul,然后找到里面的全部 a 标签,
# 限制数量为200,即排行榜的前 200 首歌。
songs = soup.find("ul", class_="f-hide").select("a", limit=200)

root = tk.Tk()
root.withdraw()

namelist = []
linklist = []

for s in songs:    # 遍历输出数组 songs 中的内容
    song_id = s['href'][9:]   # 只截取歌曲链接中的 ID 部分,因为网页中链接的形式为“/song?id=496870798”,从 = 号之后的就是歌曲的 ID 号。
    name = s.text   # 获取 a 标签的文本内容,即歌曲的名称。
    namelist.append(name)
    song_down_link = "http://music.163.com/song/media/outer/url?id=" + song_id + ".mp3"
    linklist.append(song_down_link)
    
song_name = t.choicebox('选择下载的歌曲','Music Download',choices = namelist)

for i in range(len(namelist)):
    if namelist[i] == song_name:
        song_down_link = linklist[i]
        break
        
response = requests.get(song_down_link, headers=header).content
    
with open(song_name + ".mp3", 'ab+') as f:
    f.write(response)
    
messagebox.showinfo("提示", "下载完成")


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...