网易云音乐评论爬取。
欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
作者: 小F
公众号: 法纳斯特
近日,民谣歌手花粥被爆出涉嫌抄袭。
具体的我就不细说了,音乐圈的抄袭风波也是喜闻乐见。
比如,李袁杰的「离人愁」,展展与罗罗的「沙漠骆驼」还有陈柯宇的「生僻字」。
本次通过爬取网易云音乐的评论,即目前热歌榜第一名「出山」的评论。
来看看,在没被指出抄袭时,歌曲的评论画风是如何。
被指出抄袭后,又是怎样的一个画风。
/ 01 / 网页分析
网上关于爬取网易云音乐评论的方法,大多数都是讲如何构建参数去破解。
事实上不用那么复杂,直接调用接口就可以。
而且网易云音乐对评论也做了限制,只放出了2万条的评论数据。
前后各一万,即评论的前500页和后500页。
最后一页为10079,减500页应该是9579,然后你会发现9575页和9579页的数据是一模一样的。
同样,501页和502页的数据也是一模一样的。
所以何必想着去构造参数,直接调用网易云音乐的评论API就是了,用户信息也是一个道理。
# 网易云音乐评论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 / 评论获取
具体代码如下。
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):
# 后500页
for 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 / 总结
最后来看一下评论的反差(以点赞数为排序)。
总而言之,一句话,且行且珍惜。
Python的爱好者社区历史文章大合集:
2018年Python爱好者社区历史文章合集(作者篇)
2018年Python爱好者社区历史文章合集(类型篇)
关注后在公众号内回复“ 课程 ”即可获取:
小编的转行入职数据科学(数据分析挖掘/机器学习方向)【最新免费】
小编的Python的入门免费视频课程!
小编的Python的快速上手matplotlib可视化库!
崔老师爬虫实战案例免费学习视频。
陈老师数据分析报告扩展制作免费学习视频。
玩转大数据分析!Spark2.X + Python精华实战课程免费学习视频。
网易云音乐评论爬取。相关推荐
- python爬取网易云音乐_Python 从零开始爬虫(七)——实战:网易云音乐评论爬取(附加密算法)...
前言 某宝评论区已经成功爬取了,jd的也是差不多的方法,说实话也没什么好玩的,我是看上它们分析简单,又没加密才拿来试手的.如果真的要看些有趣的评论的话,我会选择网易云音乐,里面汇聚了哲学家,小说家,s ...
- php 爬取一个人的网易云评论,网易云音乐评论爬取
# coding=gbk import requests import json c='网易云爬虫实战一' print(c) music_url = 'https://music.163.com/#/ ...
- 网易云音乐评论爬取、情感分析一体化
开局一张图 网易云诞生了很多励志鸡汤,那么多的伤感流行句式,那么多微甜情话,今天我们就看他个天翻地覆,话不多说直接上个干货. 导入包.相关库 import requests import math i ...
- python 网易云音乐评论爬取3
参考链接: 解析网易云音乐的加密方式 https://www.jianshu.com/p/069e88181488 找到参数的加密方法 首先我们先看评论的加载方式,打开一首音乐的主页,然后打开开发工具 ...
- python爬取网易云音乐问题陈述_python 网易云音乐 评论爬取问题
除了使用phantomjs,selenium之外,怎么爬取多页评论,这两个都太慢了.例如http://music.163.com/#/song?i... 的 评论. webapi都是http://mu ...
- python3爬虫进阶之自动登录网易云音乐并爬取指定歌曲评论
** python3爬虫进阶之自动登录网易云音乐并爬取指定歌曲评论 ** 一.访问网易云首页,找到所需元素的位置 用浏览器打开网易云首页https://music.163.com/之后,发现我们要找的 ...
- 利用Python网络爬虫实现对网易云音乐歌词爬取
今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌曲ID: 调用网易云歌曲API,获取歌词: 将歌词写入文件,并存入本地 ...
- java爬取网易云歌单_[原创]基于Java网易云音乐评论抓取~【悠着点玩啊~】
本帖最后由 wushaominkk 于 2018-3-20 10:40 编辑 一般我们爬虫都是采用Python,自己闲的无聊就有Java编写一个简单的网易云音乐评论的抓取,这个仅仅是我开发的一个小小调 ...
- 网易云评论 爬虫 java_网易云音乐资源爬取(登录+评论)
如何爬取网易云音乐的评论呢? 1.文本以华晨宇的<我的滑板鞋2016>为例 2.使用浏览器的工具,查找获取评论的url 3.不难发现,此API是通过POST请求获得我们想要的评论信息的,需 ...
最新文章
- 章磊回答: 姚期智提出的百万富翁难题被破解? 多方安全计算MPC到底是个什么鬼?
- 浅谈虚拟化技术下的云安全如何处置
- PHPCMS V9 采集实例
- 幂等和高并发在电商系统中的使用
- pythonstdin_如何在Python中执行将数据写入stdin的进程?
- python教程视频-Python基础视频教程(600集)【传智播客精品教程】
- HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)
- Linux系统配置静态IP地址步骤
- 看大神如何玩转微信小程序日历插件?
- linux 取消分区,如何在 Linux 中删除分区 | Linux 中国
- 安卓和苹果免填邀请码的功能怎么实现?
- 如何通过KRPano全景资源下载助手来批量下载720yun的全景图
- Laravel和Doctrine的测试驱动开发
- kindle如何导入azw3格式的电子书
- 焦虑症应该怎么办?这六个缓解方法建议试试
- CF1292C Xenon‘s Attack on the Gangs
- 数据加密与安全专题《mbedtls工具篇,实用教程1@mbedtls简介和安装教程》
- 专访天联世纪总裁朱威廉:暴利网游遭遇拐点
- Java Generics
- kettle如何处理块结构文件_型钢混凝土结构节点如何处理?典范示例!