抓取网易云音乐歌曲热门评论生成词云

    • 前言
    • 抓数据
      • 抓包分析
      • 加密信息处理
      • 抓取热门评论内容
    • 词云
      • 词云运行效果
    • 总结

前言

网易云音乐一直是我向往的“神坛“,听音乐看到走心的评论的那一刻,高山流水。于是今天来抓取一下歌曲的热门评论。并做成词云来展示,看看相对于这首歌最让人有感受的评论内容是什么。

做成词云的好处就是直观以及美观, 其他的我也想不出来有什么了。

抓数据

要想做成词云,首先得有数据才行。于是需要一点点的爬虫技巧。

  • 抓包分析
  • 加密信息处理
  • 抓取热门评论内容

抓包分析

使用Chrome控制台。我们可以轻松的找到评论所在的链接。如下图:

现在URL算是找到了,下一步就是进行数据抓取了。但是简单尝试了一下,发现并不能获取到详细的信息,而是返回了空空的字符串。
再次查看hreaders的信息,发现浏览器使用的是POST的方式进行的请求。具体字段如下图:

加密信息处理

然后经过我的测试,直接把浏览器上这俩数据拿过来就可以。但是要想真正的解决这个加密处理,还需要有点加解密的只是存储。GitHub上有大牛分析了网易云音乐的字段加密的详情。有兴趣的可以参照下面的链接。

网易云音乐新登录API分析

这里我就使用这么个临时的方法好了,而且对于不同的歌曲是可以重用的。待会我们可以验证一下。

抓取热门评论内容

从第一步拿到了接口,而返回的数据就是一个JSON字符串,获取一下稍作处理即可使用。

# coding: utf8

# @Author: 郭 璞
# @File: 网易云音乐歌曲热门评论.py
# @Time: 2017/4/26
# @Contact: 1064319632@qq.com
# @blog: http://blog.csdn.net/marksinoberg
# @Description: 热门评论获取

import requests
import json

def getcomments(musicid):
    url = 'http://music.163.com/weapi/v1/resource/comments/R_SO_4_{}?csrf_token=5594eaee83614ea8ca9017d85cd9d1b3'.format(musicid)
    payload = {
        'params': '4hmFbT9ZucQPTM8ly/UA60NYH1tpyzhHOx04qzjEh3hU1597xh7pBOjRILfbjNZHqzzGby5ExblBpOdDLJxOAk4hBVy5/XNwobA+JTFPiumSmVYBRFpizkWHgCGO+OWiuaNPVlmr9m8UI7tJv0+NJoLUy0D6jd+DnIgcVJlIQDmkvfHbQr/i9Sy+SNSt6Ltq',
        'encSecKey': 'a2c2e57baee7ca16598c9d027494f40fbd228f0288d48b304feec0c52497511e191f42dfc3e9040b9bb40a9857fa3f963c6a410b8a2a24eea02e66f3133fcb8dbfcb1d9a5d7ff1680c310a32f05db83ec920e64692a7803b2b5d7f99b14abf33cfa7edc3e57b1379648d25b3e4a9cab62c1b3a68a4d015abedcd1bb7e868b676'
    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
        'Referer': 'http://music.163.com/song?id={}'.format(musicid),
        'Host': 'music.163.com',
        'Origin': 'http://music.163.com'
    }

    response = requests.post(url=url, headers=headers, data=payload)
    data = json.loads(response.text)
    hotcomments = []
    for hotcomment in data['hotComments']:
        item = {
            'nickname': hotcomment['user']['nickname'],
            'content': hotcomment['content']
        }
        hotcomments.append(item)

    # 返回热门评论
    return [content['content'] for content in hotcomments]

if __name__ == '__main__':
    hot = getcomments(439915614)
    print(hot)

看下运行的结果吧。

['初恋很单纯,跟她好了快一年了,终于带她回家见家长。席间老妈不停的给她夹菜,“闺女,来,吃完了待会让他送你回去”。女友可能是误会我妈的意思了,立马放下碗筷,一脸委屈“叔叔阿姨你们别赶我走,我是真心喜欢他的,我以后少吃点”。听到女友说这句话,心瞬间化了。', '李玉刚合唱团已上线,女高音李玉刚、女低音李玉刚、男高音李玉刚、男低音李玉刚[大笑][大笑][大笑]', '2012年,那年大一,军训,我们相识。异乡的冬天冻伤了她的初恋,我却没有理由给她一个安慰的拥抱。此后的日子我们依然是朋友,偶尔碰面寒暄,而后走散在汹涌的人潮。她又有了一个他,继而凋谢。2015年,大三。我们一起散步,夜色的掩护下我向她表白了,她牵起我的手,哭着说:你终究说出来了。', '大学毕业后我去了北京,而她留在了老家,刚开始每天一个电话,后来越来越少,甚至断了联系,直到两年后的一次我坐火车回家,出了站之后看见她一个人站在外面,头发被风吹得很凌乱,看到我之后也没有动,我放下行李过去把她抱住,她立马大哭对我说我还以为你不要我了。那一刻起我就知道这辈子就是你。', '「刚」好「玉」见「李」', '96年离开家奔波闯荡,06年星光大道让全国观众认识了你,16年出道整十周年,你用十年时间向世界证明你不是当初那个初登央视舞台稚嫩的李玉刚,你是历经十年岁月积淀的玉先生,你是传播传统文化的先行者,你是摆脱桎梏追求艺术突破的追梦人  世界之大欣喜相逢 我们17日十周年演唱会见[亲亲]', '副歌有毒…画室今天放了三遍[大哭]第一次听这唱的什么鬼…第二次感觉还不错…第三次就开始中毒了拿起手机听歌识曲,单曲循环走起[大哭]', '曾经和一个女人躺在同一个床上一整夜,不是恋人。什么都没干,天南海北纯侃纯聊天。那天晚上我清唱了这首歌给她听。早上起来后,感觉双方之间亲密指数成几何增长到以前的n次方。现在,她是我的女人。再过几个月就结婚了。初恋,感谢刚好遇见你', '高一遇见他,考试的时候一见钟情,考试结束我去看了他桌子上的考号,他叫穆佳明,我喜欢他的名字,他去打球,不管多远我都会跑过去,他生病,我跑去买药,他运动会跑步,我去给他送水,用肚子暖好,我打针的时候知道他在附近打球,就跑过去,结果感冒加重,全世界都知道我很爱他,全世界都知道他不爱我', '相识7年,在一起却才8个月,怪我当初没有足够的勇气,没想到你会为我坚持那么久。感谢上天让我刚好遇见你,是你的坚持让我们最后能走在一起,希望你能在我的一生中留下漫长的回忆,我会珍惜这场来之不易的相遇。在今后的日子里,让我来给你走下去的勇气,给我机会保护你、呵护你,刘小瘦我爱你。。。', '大一异地,我放假早回来坐在网吧打魔兽,这首歌被点播了N遍,脑袋里有了简单的旋律:因为我刚好遇见你。   晚上抱着手机互说晚安,梦里梦到她了,现在刚醒,找到这首歌无限循环。  祝福所有异地恋终成眷属。[爱心]', '我们哭了,我们笑着。[大哭]开口就已经泪流满面,好怀念那段时光', '我用网易云音乐,当初的信任给她买的手机,给她安装了网易云登录了我的帐号,可她不怎么用,16年12月22号她送走了我,至今虽然不再联系就在昨天我突然发现我喜欢的音乐列表内多了一首歌就是这首《刚好遇见你》。', '因为我刚好遇见你 距离高考还有一百四十多天 和你成为同学大概一年多了 没想到你居然偷偷喜欢了我很久 这次我们省模拟考总分一模一样 要填模拟志愿 你说大学的事就交给我了 你说我们可以去北方看雪吃火锅 你说我喜欢的专业都不错 你说我们很有缘 可是啊 最重要的那一句 你怎么不说呢', '那年你18,我20。我去酒店实习,下班,刚好遇见你……我不相信一见钟情,可你是例外。现在,我25,你23。感谢你,来我的世界,就不曾离开。明年,我们要结婚了']

词云

词云我使用的一个第三方库Wordcloud,可以使用pip进行安装。官网上有非常详细而且清晰的案例可供参考,这里就不重复的描述了。有兴趣的参考下面的链接。
https://amueller.github.io/word_cloud/auto_examples/index.html

下面就直接上代码好了。

但是官网也好,其他地方也罢,都没有说对于中文的处理。然后我找啊找啊的,终于找到了解决办法,那就是在WordCloud的构造方法上指定字体文件的路径。这样就可以解决中文乱码的问题了。具体设置如下:

WordCloud(random_state=1, font_path = r’C:/Users/Windows/fonts/simkai.ttf’)

# coding: utf8

# @Author: 郭 璞
# @File: 词云测试.py
# @Time: 2017/4/26
# @Contact: 1064319632@qq.com
# @blog: http://blog.csdn.net/marksinoberg
# @Description: 词云测试
from wordcloud import WordCloud

from temp import 网易云音乐歌曲热门评论 as hot
text = " ".join(hot.getcomments(439915614))

wordcloud = WordCloud(random_state=1, font_path = r'C:/Users/Windows/fonts/simkai.ttf').generate(text)

import matplotlib.pyplot as plt
plt.figure()
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

词云运行效果

最后来对比一下运行的效果。

总结

最后来回顾一下,文章针对网易云音乐的热门评论做了爬取,并通过词云生成器制作出了相对应的词云。

可以拓展的地方:

  • 词云mask,支持特定背景的词云生成
  • 热门评论批量爬取,只需要获取对应歌曲的ID即可。
  • 封装起来,提取接口,对外界提供热评服务,或者词云生成服务。
  • … …
时间: 2024-07-30 07:55:54

抓取网易云音乐歌曲热门评论生成词云的相关文章

网易云音乐歌曲识别功能使用方法

网易云音乐怎么识别歌曲 首先打开手机网易云音乐软件,"搜索"按键,-"识别"按键,如上图一样哦! 看了上面的教程发现是不是相当的简单我们只需要搜索然后找到之后点击识别即可实现呀,希望文章对各位能够带来帮助.

网易云音乐下载的歌曲在哪里

  网易云音乐自从发布以来一直都备受欢迎,其社交式的音乐模式与非常高质量的音质让很多网友都非常满意. 不过网易云音乐播放器功能上有些用户还不是很清楚,经常有网友问网易云音乐下载的歌曲在哪里,这里就给大家介绍下. 网易云音乐下载的歌曲在哪: 安卓版网易云音乐歌曲下载目录: 网易云音乐下载的歌曲存放在:我的文件/sdcard/netease/cloudmusic/music,不过下载下来的歌曲没有名字,是一些乱码,各位只能一首一首的试听哦. pc版网易云音乐歌曲下载目录: 打开网易云音乐,点击左侧功

网易云音乐用户四千万创新和细节是利器

网易云音乐在上线一年半的时间里,于今年9月宣布用户数触线4000万.在音乐 应用市场上,网易云音乐不是先行者,但却不妨碍其作为领军者.据文化部发布<2013中国网络音乐市场年度报告>显示,截至2013年底,我国网络音乐用户规模达到4.5亿,我国网络音乐企业为695家.这个世界从不缺乏互联网产品,但模仿多,创新少,更不用谈精益求精的细节.有用户说网易云音乐给他最大的感触是"魔鬼细节,把用户当人看".让我们来看看上线一年半的时间里,网易云音乐给数字音乐市场带来了哪些改变.发现和

网易云音乐的评论中出现众多的求赞的评论是否有利于社区的发展?

这是一个软件/社区从小众走向大众的过程.以前知乎的评论水平也很高,现在连答案都水了,几年前网易的跟贴都是非常有才华的跟贴,现在都变得有点乌烟瘴气了.大量用户涌入必然会导致发言平均水准下降的现象,毕竟不是每个人都能写出有水准的文字和观点.点赞可以激发用户评论热情,这是不可否认的.网易云音乐作为一个把社交作为重要卖点的音乐软件/社区需要这样的功能来推动社交互动的发展. 网易云音乐没见到什么好的评论可能是与早期运营方向有关.云音乐早期的用户大多数都是中高端用户,这些人应该更能写出好的音乐评论.但那时官

网易云音乐怎么导入本地歌曲

  怎么导入本地歌曲到网易云音乐: 1.首先下载网易云音乐客户端并安装软件,安装完毕后会有个默认勾选开机自启的选项这个会影响开机速度给勾掉. 2.选择一个账号登陆网易云音乐,因为网易云音乐是一款具有社交功能的音乐播放客户端所以是必须登陆账号的,最好用自己使用比较频繁的账号可以跟好友互动的. 3.进入程序主界面后点击右侧功能栏处的本地音乐 4.进入本地音乐界面后会显示已经添加的本地音乐,初次使用的话是空的,点击上面的选择本地音乐文件夹. 此处会默认勾选电脑中可能有音乐文件的文件夹,如果我们的本地音

网易云音乐付费及下架歌曲怎么下载

  网易云音乐付费及下架歌曲怎么下载?网易云音乐一直是小编在用的,但每次下载音乐总是因为付费而下载不了,今天终于让小编找到了方法,不用下载破解版什么的,用官方安装包就可以下载正版音乐. 网易云音乐一直被大家称为良心软件.音乐软件神器等等.但是,现在使用网易云音乐听歌,发现好多的歌曲已经不能播放和下载了.会显示灰色,播放时会提示"由于版权保护,您所在的地区暂时无法使用."或者是"因合作方要求,该资源暂时下架"等.不过,现在被网络大神破解了,通过客户端反代,可播放及下载

网易云音乐怎么下载音乐歌曲

  网易云音乐怎么下载音乐歌曲           首先,我们打开网易云音乐,如果我们的账号的,我们就注册一个就可以了,网易的邮箱就是可以的. 打开以后,我们就在上面的搜索框里面输入我们的歌曲名字了,然后进行搜索就就可以了. 我们搜索以后,我们下面会显示歌曲的列表的,我们会看到前面有一个下载的按钮的,我们就点击一下. 下载的时候,我们就会看到上面有一个按钮的,我们就会看到上面显示的就是下载的情况的,我们可以打开看看. 下载完成以后,我们就会看到上面显示的这个消息了,就是就是下载成功了,我们就可以

网易云音乐怎么查看下载的歌曲

网易云音乐下载的歌曲在哪里   网易云音乐下载的歌曲在哪里: 1.打开网易云音乐电脑版,进入软件界面,点击"下载管理". 2.在右方有个存储目录,点击"打开目录"即可找到,其就会自动弹出音乐的存储路径了

网易云音乐电脑版怎么查看歌曲ID

  网易云音乐PC版歌曲ID查看教程 1.打开网易云音乐,选择歌曲,右键点击复制链接 2.将链接粘贴到任何地方,查看链接中带有歌曲ID(图中红色圈出来的就是)