Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网易云音乐评论爬取。

网易云音乐评论爬取。

作者头像
挖数
发布于 2019-06-20 02:01:06
发布于 2019-06-20 02:01:06
4.3K20
代码可运行
举报
文章被收录于专栏:挖数挖数
运行总次数:0
代码可运行
作者: 小F 公众号: 法纳斯特

近日,民谣歌手花粥被爆出涉嫌抄袭。

具体的我就不细说了,音乐圈的抄袭风波也是喜闻乐见。

比如,李袁杰的「离人愁」,展展与罗罗的「沙漠骆驼」还有陈柯宇的「生僻字」。

本次通过爬取网易云音乐的评论,即目前热歌榜第一名「出山」的评论。

来看看,在没被指出抄袭时,歌曲的评论画风是如何。

被指出抄袭后,又是怎样的一个画风。

/ 01 / 网页分析

网上关于爬取网易云音乐评论的方法,大多数都是讲如何构建参数去破解。

事实上不用那么复杂,直接调用接口就可以。

而且网易云音乐对评论也做了限制,只放出了2万条的评论数据。

前后各一万,即评论的前500页和后500页。

最后一页为10079,减500页应该是9579,然后你会发现9575页和9579页的数据是一模一样的。

同样,501页和502页的数据也是一模一样的。

所以何必想着去构造参数,直接调用网易云音乐的评论API就是了,用户信息也是一个道理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 网易云音乐评论API,其中1313354324为音乐ID,limit为页面结果限制数,最大可设为100,offset为页面偏移量
http://music.163.com/api/v1/resource/comments/R_SO_4_1313354324?limit=20&offset=0

# 用户信息API
https://music.163.com/api/v1/user/detail/{用户ID}

这里就以花粥的「出山」为例,具体情况如下。

第一页妥妥的差评。这两天「出山」的评论区热闹非凡。

大部分的评论都是希望能尊重原创,然后下架花粥的歌。

当然,也有不少给花粥洗白的水军在评论区游荡...

/ 02 / 评论获取

具体代码如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json
import time
import requests

headers = {
        'Host': 'music.163.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}


def get_comments(page):
    """
    获取评论信息
    """
    url = 'http://music.163.com/api/v1/resource/comments/R_SO_4_1313354324?limit=20&offset=' + str(page)
    response = requests.get(url=url, headers=headers)
    # 将字符串转为json格式
    result = json.loads(response.text)
    items = result['comments']
    for item in items:

        # 用户名
        user_name = item['user']['nickname'].replace(',', ',')
        # 用户ID
        user_id = str(item['user']['userId'])
        # 获取用户信息
        user_message = get_user(user_id)
        # 用户年龄
        user_age = str(user_message['age'])
        # 用户性别
        user_gender = str(user_message['gender'])
        # 用户所在地区
        user_city = str(user_message['city'])
        # 个人介绍
        user_introduce = user_message['sign'].strip().replace('
', '').replace(',', ',')
        # 评论内容
        comment = item['content'].strip().replace('
', '').replace(',', ',')
        # 评论ID
        comment_id = str(item['commentId'])
        # 评论点赞数
        praise = str(item['likedCount'])
        # 评论时间
        date = time.localtime(int(str(item['time'])[:10]))
        date = time.strftime("%Y-%m-%d %H:%M:%S", date)
        print(user_name, user_id, user_age, user_gender, user_city, user_introduce, comment, comment_id, praise, date)

        with open('music_comments.csv', 'a', encoding='utf-8-sig') as f:
            f.write(user_name + ',' + user_id + ',' + user_age + ',' + user_gender + ',' + user_city + ',' + user_introduce + ',' + comment + ',' + comment_id + ',' + praise + ',' + date + '
')
        f.close()


def get_user(user_id):
    """
    获取用户注册时间
    """
    data = {}
    url = 'https://music.163.com/api/v1/user/detail/' + str(user_id)
    response = requests.get(url=url, headers=headers)
    # 将字符串转为json格式
    js = json.loads(response.text)
    if js['code'] == 200:
        # 性别
        data['gender'] = js['profile']['gender']
        # 年龄
        if int(js['profile']['birthday']) < 0:
            data['age'] = 0
        else:
            data['age'] = (2018 - 1970) - (int(js['profile']['birthday']) // (1000 * 365 * 24 * 3600))
        if int(data['age']) < 0:
            data['age'] = 0
        # 城市
        data['city'] = js['profile']['city']
        # 个人介绍
        data['sign'] = js['profile']['signature']
    else:
        data['gender'] = '无'
        data['age'] = '无'
        data['city'] = '无'
        data['sign'] = '无'
    return data


def main():
    # 前500页
    # for i in range(210000, 230000, 20):
    # 后500for i in range(0, 25000, 20):
        print('
---------------' + str(i // 20 + 1) + '---------------')
        get_comments(i)


if __name__ == '__main__':
    main()

最后成功获取评论信息。

包含了用户名、用户ID、年龄、性别、区域编码、个人介绍、评论、评论ID、点赞数、评论发表时间。

按理说获取前500页,应该是有1w条的评论。

这里主要是因为大家刷的太快,页面信息一直在改变,所以必然会遗漏一些数据。

后500页还算完整的,就差了500条。

总共加起来1.7w条,数据量还是比较可观的,而且能发现不少信息。

/ 03 / 数据可视化

1 评论词云图

评论的词云图,经过抄袭风波,画风绝对不同。

第一张为歌曲发布后的评论词云,第二张为被爆抄袭后的评论词云。

前者是「喜欢」「好听」,后者却是「抄袭」「侵权」。

两相比较,真的天差地别。

2 评论用户的年龄分布

二者的评论用户年龄分布都差不多,大多集中在「14-25」。

这也符合网易云的定位,文艺小青年的聚集地。

其中「28」有异常情况出现,这里我是不清楚的...

3 评论用户的年龄分布

歌曲刚发布的时候,男女比例几乎为「1:1」。

在被爆抄袭后,评论里男性明显比女性多。

那么,这能说明什么呢?说明男的更耿直,更嫉恶如仇吗?

大学时的一位舍友特喜欢花粥,天天在放花粥的「老中医」。

那一句「姐是老中医 专治吹牛逼」,简直要把我耳朵听出茧来了。

每次我们都会吐槽这是什么**歌,真**难听...

哈哈,花粥的抄袭该不会伤到了他的心。

4 评论用户的地区分布

大体上差别不大,前后都是集中在「河南」「山东」「江苏」「广东」这几个地方。

无非就是,变一变评论用户最多省份。

5 评论的时间分布

歌曲发布后,评论数以「13:00」这个时间点最高,这是因为歌曲是在那个时间点发布的。

大家都急着抢个前排,占个座,混个脸熟。

第二高峰就是大家所熟悉的黄金时间「19:00」。

被爆抄袭后的评论,评论数是一直在上升的。

8000多条评论,全部都是在3月11号,时间也都是在「14:00-23:00」。

一路飙升,一点没有下降的意思。

直到现在,评论区还在时时更新。

6 评论的日期分布

这里只看歌曲发布后的情况,因为最近的根本没法看。

大家都在疯狂刷评论,一天的评论已经远超1w条了。

第一天最多,慢慢的后面就下来了,这也是常态。

7 挖掘水军

最后来看一下谁的评论数最多,发现水军党啦!!!

这位用户果真花粥的铁粉,愣是刷了43条评论,其中还有一条评论点赞数四十几万。

其中红圈为评论ID,都不一样,说明评论都是唯一的,不重复。

第二位用户,一共25条评论,不过她并没有点赞数多的。

第三位用户,一共24条评论,同样没有点赞数多的评论。

好了,列举三位花粥的铁粉,点到为止。

下面来看一下被爆抄袭后的评论用户。

这位用户愣是评论了99条,其中评论都是一样的,不信看上图,就是末尾变了。

妥妥的水军,疯狂复制粘贴。

这位用户,和评论区喷起来了...

一共94条评论。

这位用户是狂喷类型的,一共69条评论。

好了点到为止,感兴趣的可以自己去操作一把。

由于用户信息相对隐私,我都打上马赛克了,仅供学习。

/ 04 / 总结

最后来看一下评论的反差(以点赞数为排序)。

总而言之,一句话,且行且珍惜。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 挖数 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
大佬现在还能爬那么多吗,我咋才2000条而已
大佬现在还能爬那么多吗,我咋才2000条而已
回复回复点赞举报
前辈,数据可视化部分代码可以发一下吗
前辈,数据可视化部分代码可以发一下吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
使用Python分析网易云歌曲评论信息,通过可视化处理我发现了这些有趣的规律
前几天有个学生娃子找我帮忙做点可视化的作业,作业内容包括采集网易云音乐热评评论内容,数据量1W作业足够,然后就是做点数据分析相关的工作即可。这份大作业里边有网络爬虫,有数据分析和数据处理,还有可视化,算是一个大实验了,还需要上交实验报告。这里拿出来部分知识点,给大家分享。学生娃的作业,参考了这个文章:网易云音乐评论爬取。
Python进阶者
2022/03/04
6800
使用Python分析网易云歌曲评论信息,通过可视化处理我发现了这些有趣的规律
爬取网易云音乐精彩评论
故事的小黄花 从出生那年就飘着 童年的荡秋千 随记忆一直晃到现在 Re So So Si Do Si La So La Si Si Si Si La Si La So 吹着前奏望着天空 我想起花瓣试着掉落 ……
猴哥yuri
2018/08/16
5400
Python爬虫 | 如何获取网易云音乐评论
今天看了知乎上的一个问答,关于如何爬取网易云音乐的评论 关于如何爬网易云音乐的评论 我发现,第一位大佬写的方法,嗯,确实看不懂(虽然不妨碍白嫖),然后我自己试了试,params和encSecKey直接F12+ctrlC/V复制的😂 """ 不按照大佬写的加密方法,只能获取第一页的评论/(ㄒoㄒ)/~~ """ import requests from bs4 import BeautifulSoup import json import time def get_song_html(url):
Justlovesmile
2021/12/14
1.3K0
Python爬虫 | 如何获取网易云音乐评论
使用python3爬取网易云音乐的评论
用过很多播放器,之前一直是酷我,偶尔QQ。但是网易云音乐出来后毅然变成了他的忠实用户。精确推荐和乐评都很赞!安利了不少人入坑。前些日子网易云音乐将精选用户评论搬上了地铁,使网易云音乐又火了一把。因此就
听城
2018/04/27
9700
使用python3爬取网易云音乐的评论
Python 获取网易云音乐热门评论
来源:lyrichu www.cnblogs.com/lyrichu/p/6635798.html 最近在研究文本挖掘相关的内容,所谓巧妇难为无米之炊,要想进行文本分析,首先得到有文本吧。获取文本的方式有很多,比如从网上下载现成的文本文档,或者通过第三方提供的API进行获取数据。但是有的时候我们想要的数据并不能直接获取,因为并不提供直接的下载渠道或者API供我们获取数据。那么这个时候该怎么办呢?有一种比较好的办法是通过网络爬虫,即编写计算机程序伪装成用户去获得想要的数据。利用计算机的高效,我们可以轻松快速
顶级程序员
2018/05/03
1.3K0
Python 获取网易云音乐热门评论
44万条数据揭秘:如何成为网易云音乐评论区的网红段子手?
之前由于懒,总是评论区放个代码就草草了事,技术号们也不太好转载,以后争取《凹凸数读》的每篇文章都在这个《凹凸玩数据》里写下流程。
龙哥
2019/08/06
6260
收藏这些API,获取网易云音乐数据超轻松
这应该是最最最常见的了,毕竟80%的网易云音乐的爬虫/数据分析文章都是关于评论数据~
朱小五
2019/11/26
18.8K0
44万条数据揭秘:如何成为网易云音乐评论区的网红段子手?
之前由于懒,总是评论区放个代码就草草了事,技术号们也不太好转载,以后争取《凹凸数读》的每篇文章都在这个《凹凸玩数据》里写下流程。
朱小五
2019/11/26
7640
Python爬虫爬取网易云音乐全部评论
beautiful now.png 思路整理 访问网易云音乐单曲播放界面,我们可以看到当我们翻页的时候网址是没有变化的,这时候我们大致可以确定评论是通过post形式加载的; .
Awesome_Tang
2018/09/11
1.5K0
Python爬虫爬取网易云音乐全部评论
网易云音乐歌曲评论爬虫(附源码)
用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的全部评论,由于网易云音乐的评论都做了混淆加密处理,因此我们需要深入了解它的加密过程之后才能爬取到网易云音乐歌曲的全部评论.
Python中文社区
2018/10/25
2K0
网易云音乐歌曲评论爬虫(附源码)
用Python爬取网易云音乐的用户评论文本
本文利用Python2.7根据网易云音乐歌曲ID爬取了该歌曲的所有用户评论数据。以id是28875120的歌曲《小岁月太着急》为示例,通过Chrome的DevTools工具获取已加密评论数据,然后基于
机器学习AI算法工程
2018/03/15
1.4K0
用Python爬取网易云音乐的用户评论文本
网易云音乐评论催泪刷屏?我用Python抓取了1008328条热评告诉你为什么!
看了那么多的网易云热评,技术思维作祟,我终于也忍不住写个爬虫,用Python通过对1008328条网易云音乐热评的抓取,我们可以得出一个对百万热评的基本风格画像。
IT阅读排行榜
2018/08/17
1.6K0
网易云音乐评论催泪刷屏?我用Python抓取了1008328条热评告诉你为什么!
Python网易云音乐爬虫进阶篇
年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了~
Awesome_Tang
2018/09/11
2.8K0
Python网易云音乐爬虫进阶篇
爬取网易云音乐热歌榜:从入门到实战
今日推荐:Spring AI再更新:如何借助全局参数实现智能数据库操作与个性化待办管理
LucianaiB
2024/11/21
2310
爬取网易云音乐热歌榜:从入门到实战
【NLP】利用jieba对网易云音乐的评论进行词云分析
这是一篇代码文章,因为所有的文字将会以类似注释的方式进行叙述,文字是对代码的补充说明和解读。
黄博的机器学习圈子
2020/07/23
8850
爬取网易云音乐热歌榜:从入门到实战
在数字化时代,音乐已成为我们日常生活中不可或缺的一部分。网易云音乐以其丰富的音乐资源和个性化推荐系统,赢得了广大用户的喜爱。然而,你是否想过,如何将这些音乐资源爬取下来,以便在没有网络的情况下也能随时欣赏呢?本文将带你走进爬虫的世界,手把手教你如何爬取网易云音乐热歌榜。
LucianaiB
2025/05/28
2080
爬取网易云音乐热歌榜:从入门到实战
爬取《Five Hundred Miles》在网易云音乐的所有评论
在使用 Ajax 技术加载数据的网站中, JavaScript 发起的 HTTP 请求通常需要带上参数,而且参数的值都是经过加密的。如果我们想利用网站的 REST API 来爬取数据,就必须知道其使用的加密方式。破解过程需要抓包,阅读并分析网站的 js 代码。这整个过程可能会花费一天甚至更长的时间。
猴哥yuri
2018/08/16
8470
Python数据可视化 | 网易云音乐年度歌曲
网易云音乐2018年度听歌报告—遇见你,真好。 相信有不少人在上周,应该已经看过自己网易云音乐的年度报告了。 小F也是去凑凑热闹,瞅了一波自己的年度听歌报告。 那么你在云村又听了多少首歌,听到最多的歌词又是什么呢? 2018年你的年度歌手又是谁,哪些又是你最爱的歌呢? 不过相比去年,我的票圈并没有很多发自己年度报告的朋友。 不得不说,版权之争开始,网易云音乐似乎就在走下坡路。 很多喜欢的歌听不了,这应该是大家共同的痛点。 最大的印象就是周董的歌,在愚人节时下架了,原以为只是个玩笑,不想却是真的。 本次通过
龙哥
2019/04/25
1.8K1
Python数据可视化 | 网易云音乐年度歌曲
Python3爬虫抓取网易云音乐热评实战
前一段时间刚刚入门python爬虫,有大概半个月时间没有写python了,都快遗忘了。于是准备写个简单的爬虫练练手,我觉得网易云音乐最优特色的就是其精准的歌曲推荐和独具特色的用户评论,于是写了这个抓取
小小科
2018/05/02
1.7K0
Python3爬虫抓取网易云音乐热评实战
网易云音乐直链
以下提供的方法简单、快捷并且直到现在依然可用。已经稳定几年了,网易云音乐外链用官方的就好。
NikoDos
2022/03/29
2.8K0
推荐阅读
相关推荐
使用Python分析网易云歌曲评论信息,通过可视化处理我发现了这些有趣的规律
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验