文章目录
import requests
from bs4 import BeautifulSoup as bs
# # url=r'https://music.163.com/#/discover/toplist?id=3779629'
# # url = r'https://music.163.com/discover/toplist?id=3779629'
# # url=r"https://music.163.com/discover/toplist?id=3778678"
url=r"https://music.163.com/artist?id=88145"
# headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36 Edg/80.0.361.111'}
# 头部信息
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.52'}
#发送请求
res=requests.get(url,headers=headers)
# 获取返回html数据
html=res.text
# 解析HTML文档
soup=bs(html,"html.parser")
# print(soup)
# 获取歌曲下载列表
inf = soup.find('ul', class_='f-hide')
# print(inf)
# 获取所有歌曲的链接
infor = inf.find_all('a')
# print(infor)
idlist=[]#歌曲id号
namelist=[]#歌曲名称
num=0
for i in infor:
num=num+1
name = i.text#获取a标签内容,即歌曲名称
namelist.append(name)
# print(i)
href=i.get("href")#获取a标签下的href属性值
# print(href)
id=href[9:]#获取歌曲id号
idlist.append(id)
url='https://music.163.com/'+href#获取每首音乐的详情链接
print(str(num)+' '+name+' '+url)
def download():
while True:
a = input("请输入你要下载歌曲的序号:")
b = int(a) - 1
aa = idlist[b] # 取音乐id
fn = namelist[b] # 取音乐名
# 定义请求路由 > 下载播放链接
url = 'http://music.163.com/song/media/outer/url?id={}.mp3'.format(aa) # 破解
music = requests.get(url, headers=headers).content
# 文件下载
with open('D:\pythonProject1\graduate\music\{}.mp3'.format(fn), 'wb') as f:
f.write(music)
print(fn + ' 下载完毕')
download()