Python爬取李荣浩最短歌曲贝贝的网易云评论并做成词云图

前言

在18 年的 10 月 17 号,李荣浩发了一张新专辑「耳朵」,专辑里有一首歌「贝贝」,只有 4 秒,歌词也就两个字。而且这首歌的作曲 、作词 、编曲、制作人、和声、录音师、混音师、录音室、混音室、母带后期制作人、母带后期处理工程师、母带后期处理录音室一样都没少。这首歌在网易云音乐里的评论截止到我写这篇文章时已经有 7.4 万多的评论。这些评论都说了什么呢?

我用 Python 把热门评论和全部评论提取出来做成了词云图,我们一起来看看大家都说了什么。

热门评论词云图如下。大家都很意外,这竟然是一首歌!这应该是年度最短的一首歌,看来大家还是意犹未尽啊,哈哈

全部评论词云图如下,全部评论大家都在哈哈大笑,感觉都被浩哥 4 秒的歌曲逗笑了,还有些朋友以为手机卡了,还有单曲循环听这首歌的,也许在年度网易听歌报告单上:10 月 17 日是一个特别的日子,「贝贝」这首歌你听了三百次。

由于有些爱学习的小伙伴需要教程,接下来我就把给大家分析下。

程序环境

语言:Python 3
编辑器:Pycharm

主要库

  • jieba:一个强大的分词库,完美支持中文分词。
  • matplotlib:一个 Python 的 2D 绘图库。
  • wordcloud:制作文字云图片库。
  • PIL:Python 中图像处理库。

页面分析

打开网页版网易云音乐中「贝贝」这首歌,F12 打开谷歌调试工具。在 Network 中查看评论数据。我们看到第一页 json 信息中存在热门评论和普通评论信息。

要想提取出这些评论,需要知道它的请求,我们切到 Headers 查看请求链接,发现请求方式是 POST。

Headers 页面向下滑动,发现有两个参数,而且参数 params 和 encSecKey 是加密后的,每页都不一样。

怎么去解密今天就不讲了,因为在我苦苦探索中,我发现了一个没有加密的评论接口可以直接调用。

通过在页面中打开,可以看到评论的 json 格式,其中 R_SO_4 后面的数字是歌曲的 id,limit 和 offset 分别表示页面评论数和偏移量,评论数是 20 条,偏移量每 20 条往上递增。

这样我们就可以改变页面的偏移量来切换页面了。

代码分析

首先我们定义一个获取页面 json 信息的方法。

制作热评词云图

因为热门都在第一页,所以链接是固定的。热门评论在 json 信息的 hotComments 里。提取出来并用 jieba 库进行分词处理。把词云图的背景图放在固定目录下,定义词云背景图颜色、尺寸、字体大小,字体颜色。

制作评论词云图

获取全部评论重点在分页上,每页的评论都在 0 到 20 json 格式里面。用双层 for 循环进行提取全部评论,外层循环控制页数,内层循环提取 0 到 20 条评论。截止到我写文章时已经有 7 万多评论,3 千多页,全部爬取下来比较耗时,为了节省时间,我只爬取了前 100 页面的评论信息。大家注意下,在切换页面时加一个随机等待时间,防止 ip 被封。以下是提取前 100 页评论的代码,制作词云图代码和上面一样就不放出来了,本文全部源码获取方式见文末。

在我的公众号「Python知识圈」回复「贝贝」获取本文源码。

 

文章为pk哥原创,我在我的公众号: Python 知识圈 上会分享更多心得体会,你也可以关注。

***版权申明:本文为 Python知识圈 pyzhishiquan.com 原创,没有Python知识圈书面授权,请勿以任何形式转载,摘编,复制或镜像。***

为您推荐

发表评论

电子邮件地址不会被公开。