那些年,我们听过的五月天——基于Python3爬取并下载网易云歌曲

作者 : 开心源码 本文共1384个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共169人阅读

引子:记得高中的时候,一位同桌是五月天的超级粉丝,一下课就大声哼唱(丝毫不在意旁边人的感受,哈哈),刚开始还挺烦的(我下课要赶紧补觉),后来也就慢慢的习惯了,以至于五月天的歌曲成为了记忆中青涩而又躁动的青春的触发器。恰好最近在学习Python3网络爬虫,如是想把网易云音乐上面的关于五月天的歌曲及歌词给下载下来,下面将详细的详情操作过程。

1. 总体思路分析

在行动之前,首先想象一下我们要将目标歌曲及歌词下载下来,需要经过哪些步骤?

爬虫思路

按照上面的大体思路,我们可以自己设置函数模拟爬取过程。

2. 具体爬取步骤

2.1 获取网页

导入包获取网页

我们使用的是requests库来获取网页,其中请求头head中的参数信息可以从网站上粘贴过来:

请求头信息

可以看到这里面的请求头参数中并没有 ‘Host’ 的参数信息,因而在上面的自己设置函数中可以不用这个参数。

2.2 网页解析

接下来我们即可以用beautifulsoup来解析网页了:

网页解析

上面函数中find中要查找的内容需要我们肉眼从网站源代码中搜寻:

网易云音乐客户界面网页源码

从上面的观察中我们可以发现,我们需要获取的歌曲信息都在源码属性 class=’f-hide’的<ul>标签中,然后面的 herf=’/song?id=55331024′ 中的 id 信息则是每一首曲子的地址。根据这些信息再去了解我们上面写的函数就比较清晰了。

2.3 信息提取

按照上面的写法,获取的信息里面还有很多我们不想要的杂质,因而为了获取更纯净的歌词信息,我们找到了网易云音乐的API,只需把歌曲的ID放在API链接上便可以获取歌词了。在API中歌词信息是以json格式加载的,所以需要利用json将其进行序列化解析出来,并配合正则表达式进行清洗歌词。具体代码如下:

歌词提取

这样的话我们就能获取每一首音乐的歌词了。

2.4 歌词存储

接下来我们将刚刚提取的歌曲歌词存储在指定的文件夹中:

存储歌词

这一步比较简单,需要强调的是文件的写入格式,‘a’表示的是以追加方式打开一个文件。假如该文件已存在,文件指针将会放在文件结尾。也就是说,新的内容将会被写入到已有内容之后。假如该文件不存在,则创立新文件来写入。

2.5 下载并存储歌曲

除了下载歌词外,我们还有一个任务就是要将曲子给下载下来:

下载并保存歌曲

这里面我们用到的是 urllib.request 版块中的urlretrieve函数,该函数的作用是将远程数据下载到本地。

2.6 主函数

以上,我们将主要的函数都完成了,接下来的工作便是将这些函数进行组合已达到我们爬取的目的。

主函数

在主函数中,我们用到了异常解决机制,由于我们在爬取的过程中发现有些歌曲的命名方式的问题导致存储失败,从而造成程序出现bug,这里截取的 FileNotFoundError 异常就是主要避免这种问题。

2.7 运行结果

运行以上所有的函数,假如正常的话将会出现如下的结果:

运行的结果

其中我们需要输入歌手的 ID,这个可以在网易云音乐上查找出来。

而后,我们可以在本地的文件中找到两个文件夹 “lyrics1″和”songs1″,其中前者存放的是歌词,后者存放的是曲子。我们分别打开看看:

爬取的歌词爬取的歌曲

接下来,我们可以好好的享受一下我们的劳动成果了。

结语:越来越觉得通过这种输出方式来学习是一种非常有效的方法,而后最重要的是能体会到快乐。希望本文能够帮助到需要的人…

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 那些年,我们听过的五月天——基于Python3爬取并下载网易云歌曲

发表回复