# 爬虫分析网易云古风歌词

# 项目介绍

截图

# github 地址

# 开发目的

目前古风已经作为一个潮流名词出现在了大众眼中,而我作为爱好者中的一员,打算以此为方向,进行一次统计调查。以爬虫为工具,对古风歌曲的歌词进行数据分析,从而获取到一些古风歌曲风格等方面的信息。预期目的为得到歌词中的内容信息,以及歌词的相互关系等。

# 数据选取

本次调研的数据来源于网易云音乐,通过 Python 编写的爬虫自动化获取。而内容是我选取了目前在网络上出现次数较高,并且广为人熟知的 30 位古风歌手(包含音乐工作室)。歌曲范围是以网易云音乐的歌手个人主页为参考,选取每位歌手个人主页的热门单曲 top50(如图 2-1 所示)的歌词作为本次调查的数据。通过合并以及清洗整理,获取到最后可用的用于数据分析的文件,并以此进行之后的分析工作。

图 2-1 网易云歌手个人主页

以下为 30 位歌手、音乐工作室:

Aki 阿杰、Assen 捷、HITA、KBshinya、NL 不分、smile _小千、Tacke 竹桑、Winky 诗、不才、橙翼、董贞、贰婶、河图、卡修 Rui、流浪的蛙蛙、伦桑、满汉全席、慕寒、排骨教主、少司命、双笙、五色石南叶、小爱的妈、小曲儿、小旭音乐、玄觞、音频怪物、银临、云の泣、重小烟。

因为热门单曲 top50 有歌手主页不足 50 首以及部分歌曲为纯音乐的情况存在,所以数据以最终获取到的数据为准。接下来我就开始分析页面。

# 抓取数据

本次调查我采用了爬虫爬取数据,然后对获取到的数据进行分析。通过分析,我已经获取到了所需数据的位置,接下来通过爬虫爬取数据。整个抓取过程如下。

# 获取歌手热门单曲 top50 歌单列表

图 3-1 歌单列表标签

如图 3-1 所示,通过浏览器开发者工具分析网页源代码找到歌单列表是一个名为 tbody 的标签下的 a 标签的内容文本。接下来我开始获取歌单列表。

# 获取歌曲歌词在网络中的传递信息

图 3-2 网络抓包分析

通过对网页数据的抓包分析,我找到歌词的 json 文件(如图 3-2 所示),并确定了请求页面的 URL,随后我在网上搜索该 API 接口及其相关的参考资料。找到的资料如图 3-3 所示:

图 3-3 网易云音乐歌词 API 接口

根据找到的资料我写了一个 demo,用于测试使用该 API 是否可以接受到返回的歌词数据。结果如图 3-4 所示:

图 3-4 返回的歌词文件

经过比对确定返回的 json 格式的内容是歌曲歌词,然后我们需要的内容是 lrc 里的 lyric 中的文本内容。

图 3-5 无歌词音乐返回的歌词文件

后来发现部分歌曲无歌词(如图 3-5 所示),然后通过和有歌词的歌词文件比对找到在文件中存在数据项 nolyric 是否存在的区别,因此通过过滤含有该数据项的返回值来清洗不存在歌词的歌曲,同时提高了代码的兼容性和可执行性。

# 以文本形式保存歌词

图 3-6 保存的歌词文件

在爬取到歌词数据并清洗以后,把歌词保存在 txt 文本中,并设置编码格式为 utf-8,同时把保存下来的歌词按歌手分文件夹保存,为下一步合并文本做准备。

图 3-7 初次合并后的歌词文件

为了方便后期的数据分析,因此把每一个歌手文件夹的歌词文件合并为同一个 txt 文件,然后再把这些文件放在同一个文件夹 lyric 里准备二次合并。

图 3-8 二次合并后的文本文件

二次合并把所有歌词合并在同一个文件中,方便后期的统计及处理工作。

# 总结

图 3-9 最终文本文件字数统计

通过 word 的字数统计,得到此次收集到的数据最后的结果为,30 位古风歌手及工作室的 1401 首歌曲的歌词,共计约 66 万字。

# 数据处理

# 词频统计

  1. 使用 jieba 库对所有歌词进行分词处理
  2. 进行字数过滤,将一个字以上的词存入字典,然后统计出现的次数
  3. 将处理好的词频数据存入 txt 文本文件中

图 4-1 词频文本文件

  1. 将处理好的词频数据存入 Excel 表中

图 4-2 词频表格文件

  1. 将已有数据中一些脏数据清除,例如:作曲、作词、人名、英文词语等

图 4-3 清洗后的词频表格文件

最终排序后的词频文件如图 4-3 所示。

# 词云制作

  1. 在网上搜索并找到合适的图片素材,如图 4-4 所示

图 4-4 图片素材

  1. 整理分词信息,并放在 txt 文本中导入使用,如图 4-5 所示

图 4-5 词频信息文件

  1. 通过 Python 库将词频文件导入,以素材图片为蒙版,生成词云图,如图 4-6 所示

图 4-6 初次生成的词云图

  1. 初次生成的词云颜色并不满足我的预期,于是对代码进行修改,再次生成词云图,如图 4-7 所示

图 4-7 再次生成的词云图

再次生成的词云图符合我的预期,确定为最终效果。所以词云图这一步已经完成。

# 统计结果

  • 根据所有歌词的词频制作的词云图

图 5-1 词频词云

  • 根据专项名词统计后制作的图表

图 5-2 城市出现次数表

图 5-3 颜色出现次数表

图 5-4 歌词关键词情感分析饼图

发布日期: 7/29/2020, 3:09:22 AM