点击上方“python学习与大数据分析”关注
今天分享的内容是如何使用python下载歌曲和歌词信息,文章涉及内容主要为了帮助大家学习python技能,请大家合规合理使用。
首先,我们想要批量下载歌曲,那么需要找到下载源,我这里使用的是某钟音乐网,首页是这样的
我们去爬取数据,通常都是分为几个步骤:分析目标网站的特征–>获取里列表–>通过列表中的数据–>获取具体的内容。
-
分析目标网站特征:
-
1)歌手信息:
我们刷新首页,抓包的时候,看到这个接口是有返回接口数据的,但很快就会发现,这个接口只返回了18个歌手的信息,我们不能通过这个方式来得到歌手的信息;经过分析网站上的多个页面,我并没有找到现成的接口可以获取到。
既然没有现成的接口,那么我们能不能通过解析页面html源码来得到歌手信息呢?答案是可以的,我在页面的html源码中找到了歌手的标签。可以通过bs4这个第三方库来解析html源码得到。(这里不扩展,等后面有空了,再专门写一篇关于bs4的文章吧)
- 2)获取歌手下的歌曲信息:
嘿嘿,这个接口妥妥的有现成的,我已经给大家找到了。我们只需要拼接接口地址,加上歌手名字就可以得到该歌手在该网站上的所有歌曲了。
- 3)获取歌曲的下载地址:
这个也是有现成接口地址的,我们只需要将歌曲id替换成步骤2)中得到的歌曲id即可。
- 4)获取歌词信息:
这个也是有现成接口地址的,我们只需要将歌曲id替换成步骤2)中得到的歌曲id即可。
- 代码编写
好了,现在所需的准备工作我们已经做好了,接下来就是开始写代码了。
- 1)根据歌手名字获取歌曲信息
# 获取张碧晨的所有歌曲信息
url = "https://music-api.tonzhon.com/songs_of_artist/张碧晨"
def get_music_info(url):
music_url = get_url(url).json()
songs_list = music_url['songs']
music_info = {}
if len(songs_list) > 0:
for item in songs_list:
name = item['name']
id = item['newId']
music_info[name] = id
return music_info
music_info = get_music_info(url)
- 2)使用歌曲id获取歌曲下载地址
base_url = "https://music-api.tonzhon.com/song_file/{}"
def get_music_download_url(music_info_list,base_url):
for name,id in music_info_list.items():
url = base_url.format(id)
response = get_url(url).json()
if response:
try:
download_url = response['data']
print(f"歌曲: {name}\n下载地址:https:{download_url}")
except Exception as e:
print(f"歌曲【{name}】已下线,地址:{url}")
music_info_list = get_music_info(music_url)
get_music_download_url(music_info_list,base_url)
- 3)封装下载文件的函数,后续放在步骤2)中调用
# 下载歌曲
def download_music(url,file_name):
response = get_url(url)
print(response)
with open(file_name,'wb') as f:
f.write(response.content)
- 4)封装下载歌词文件的函数,然后再步骤2)中调用
# 下载歌词
def get_music_lyric(id,name):
lrc_base_url = "https://music-api.tonzhon.com/lyrics/{}"
lrc_url = lrc_base_url.format(id)
response = get_url(lrc_url).json()
try:
lrc_content = response['data']
lrc_name = "E:\\音乐下载\\"+name + '.lrc'
with open(lrc_name,'w') as f:
f.write(lrc_content)
print(f"【{name}】的歌词下载完成")
except Exception as e:
print(e)
print(f"【{name}】的歌词内容不存在,地址:{lrc_url}")
- 5)完整代码
- 请看文末
执行效果如下:
感兴趣的小伙伴,完整代码和全套Python学习资料免费赠送,具体看这里。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
