失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python爬取音乐网站排行榜_通过Python轻松访问音乐网站歌曲 python 爬取

python爬取音乐网站排行榜_通过Python轻松访问音乐网站歌曲 python 爬取

时间:2022-12-03 12:04:06

相关推荐

python爬取音乐网站排行榜_通过Python轻松访问音乐网站歌曲 python 爬取

准备工作:

1.在已经安装python开发环境的情况下,还需安装第三方库:requests,安装教程可以参考:

2.对目标网站进行分析,获取目标文件链接

目标文件:第一页中的20个音乐文件

获取到歌曲列表的url后,还需要获取到每个音频文件的url,找任意一首歌曲,查看网站请求的文件信息,可以找到当前文件的地址(查找文件地址的过程需要不断去尝试,不是一开始就能确定)

有一个快速的查找方法:F12进入开发者工具后,把按类型排序由all切换成media,出现的那个就是要找的下载资源的url,如下图所示:

验证下这个地址是不是文件的真正地址,可以把这个url放到浏览器看看:

音频文件开始播放了,说明这个就是想要的文件地址。

这个地址只是当前歌曲的文件地址,其他歌曲的文件地址需要去寻找规律,通过查看列表页面(

/top/hot

)的源代码,可以发现是通过sid属性去判断是哪首歌曲,也就是说sid是歌曲文件的唯一标识符。

通过和上面获取到的歌曲(清晨)进行比对,发现音频文件地址中的参数包含sid的值(33),可以推测,其他歌曲只要获取到sid就能获取到对应的音频文件。

准备工作已经完成,接下来就是编写python代码,爬取文件并将音频文件保存到本地。

爬虫开始:

import requests

import re

import time

songIDs=[] #存放歌曲的sid

songNames=[] #存放歌曲的名称

url="/top/hot" #歌曲列表的url

#获取音乐榜单的网页信息

html=requests.get(url)

strr=html.text

pat1=r'sid="(.*?)"' #用于解析sid的正则

pat2=r'title="(.*?)" sid' #用于解析歌曲名称的正则

idList=re.findall(pat1,strr) #从爬取到的网页内容中获取sid

titleList=re.findall(pat2,strr) #从爬取到的网页内容中获取歌曲名称

songIDs.extend(idList) #将sid追加到列表

songNames.extend(titleList) #将歌曲名称追加到列表

#开始下载音频文件

for i in range(0,len(songIDs)):

songUrl="/play8/"+songIDs[i]+"/mp3/6"

songName=songNames[i]

#请求文件地址,获取文件资源

referer='/play/{}'.format(songIDs[i])

headers={'Referer':referer,'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'}

data=requests.get(songUrl,params="",headers=headers)

print("正在下载第",i+1,"首")

#将文件保存到指定目录

with open("C:\\music\\{}.mp3".format(songName),"wb") as f:

f.write(data.content)

time.sleep(0.5)

程序执行过程中可以看到打印的信息:

歌曲下载完成,可以到指定的文件路径中看到歌曲文件:

到此为止,列表中20首歌曲就被下载到本地了。

如果觉得《python爬取音乐网站排行榜_通过Python轻松访问音乐网站歌曲 python 爬取》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。