python初级爬虫实战:我是怎么用python下载音乐的

点击上方“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所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值