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

引子:记得高中的时候,一位同桌是五月天的超级粉丝,一下课就大声哼唱(丝毫不在意旁边人的感受,哈哈),刚开始还挺烦的(我下课要赶紧补觉),后来也就慢慢的习惯了,以至于五月天的歌曲成为了记忆中青涩而又躁动的青春的触发器。刚好最近在学习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",其中前者存放的是歌词,后者存放的是曲子。我们分别打开看看:

爬取的歌词
爬取的歌曲

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容