文章转载自公众号  凹凸玩数据

作者 朱小五

上周六晚,爱奇艺的独家综艺《乐队的夏天》总决赛终于落下了帷幕,虽然决赛过程有些“曲折”,但是我最喜欢的刺猬乐队,仍然凭借自己的硬实力,最终排在第二名!

值得一提的是,这只乐队的吉他手兼主唱也是一位程序员。

刺猬乐队其实成立10多年了,很有实力。

但是在老牌乐队云集的这次比赛中,第一次31进16时仅仅排在第12名,那么他又是如何逆风翻盘的?

让我来复盘一下。

获取数据

获取爱奇艺视频《乐队的夏天》各期节目的下面的评论。

F12,Network查看异步请求XHR,找到评论接口。

不要以为这里结束了,我们来看一下Request URL

https://sns-comment.iqiyi.com/v3/comment/get_comments.action?
content_id=2537368600&types=time&last_id=213811925021
&business_type=17&agent_type=119&agent_version=9.9.0&authcookie=

经过测试,大部分参数都是不变的,只有“content_id”和“last_id”,content_id对于每一期节目是固定的,我们可以自己手动获分析获得。那么last_id是怎么来的?

给大家放一下连续几页的 last_id 看一下吧。

213811925021213372828221212600215021211973666621

它们之间并没有什么累加的规律。

放弃的同学可以直接翻到上一张图,标黄的部分“213811925021”,正是我们看到的第一个 last_id 参数。

也就是说每个json里的最后一个 CommentId ,作为下一个url的 last_id 使用。

那么我们需要注意的就是在解析json的过程中需要返回最后一个 CommentId 。

def get_comments(url):data = []doc = get_json(url)jobs=doc['data']['comments']for job in jobs:dic = {}global CommentIdCommentId=jsonpath.jsonpath(job,'$..id')[0] #iddic['id'] = CommentIddic['content']=jsonpath.jsonpath(job,'$..content')[0] #评论add_Time=jsonpath.jsonpath(job,'$..addTime')[0]  #时间dic['addTime'] = stampToTime(add_Time)  #转化时间格式dic['uid']=jsonpath.jsonpath(job['userInfo'],'$..uid')[0] #用户iddic['uname']=jsonpath.jsonpath(job['userInfo'],'$..uname')[0] #用户名称dic['gender']=jsonpath.jsonpath(job['userInfo'],'$..gender')[0] #性别data.append(dic)return data,CommentId #获得每个json里的最后一个CommentId
剩下的循环爬取就好。
汇总后就获得了2.6万条评论数据。

数据分析

一个乐队名称在每期评论中的提及次数,可以侧面反映这只乐队在这期节目后受到观众喜欢的程度。

#乐队在评论中的提及数
a = {'痛仰':'痛仰', '新裤子':'裤子','猴子军团':'猴子军团','鹿先森':'鹿先森','旺福':'旺福','九连真人':'九连','盘尼西林':'盘尼西林|青霉素','反光镜':'反光镜','click15':'click15|#15','海龟先生':'海龟先生','皇后皮箱':'皇后皮箱','面孔':'面孔','和平和浪':'和平和浪','MR.MISS':'MR.MISS|MISS','VOGUE5':'VOGUE5|VOGUE','薄荷绿':'薄荷绿','熊猫眼':'熊猫眼','果味VC':'果味VC','BONGBONG':'BONGBONG','醒山':'醒山','刺猬':'刺猬','旅行团':'旅行团','麋鹿王国':'麋鹿王国','宇宙人':'宇宙人','黑撒':'黑撒','南无':'南无','斯斯与帆':'斯斯与帆','葡萄不愤怒':'葡萄不愤怒','茶凉粉':'茶凉粉','青年小伙子':'青年小伙子','Mr.WooHoo':'Mr.WooHoo|WooHoo',}
for key, value in a.items():data1[key] = data1['content'].str.contains(value)
staff_count = pd.Series({key: data1.loc[data1[key], 'content'].count() for key in a.keys()}).sort_values()
print(staff_count)

以第一期为例,结果如下。

每期节目的乐队排名都依次降序盘点汇总一下。

结果还蛮惊讶的。

除去第二期他们没有参加,也就是说从第三期开始,刺猬乐队便开始展现实力,几乎每一期都能让观众如此喜欢。

数据可视化

筛选出评论中提到刺猬乐队的评论数据。

data_ciwei= data[data['content'].str.contains('刺猬')]

爬取得到的数据字段其实没几个。

简单看一下喜欢他们的观众的性别分布。

from pyecharts import Pie
# 生成饼图gender_data = data_ciwei.groupby(['gender'])
gender_cw = gender_data['gender'].agg(['count'])
gender_cw.reset_index(inplace=True)attr = ['女', '男', '无']
v1 = gender_cw['count']
pie = Pie("评论提及刺猬乐队的用户性别分布", title_pos='center', title_top=0)
pie.add("", attr, v1, radius=[40, 70], label_text_color=None, is_label_show=True, legend_orient="vertical", legend_pos="left", legend_top="%10")
pie

使用pyecharts作图。

至于评论的长度之类的就不做分析了。

最后看一下词云,不用jieba分词试试。

from pyecharts import WordCloud
# 生成词云bj_tag = []
for st in data_ciwei.dropna(subset=['content'])['content']:bj_tag.extend(st.split(' '))name, value = WordCloud.cast(Counter(bj_tag))
wordcloud = WordCloud(width=1000, height=500)
wordcloud.add("", name, value, word_size_range=[18, 250])
wordcloud

还是使用pyecharts作图。

可以看出观众对于刺猬乐队的要么是直接夸,要么是和其他强队做对比,总体都是希望它能越来越好。

刺猬总是强调摇滚乐是属于年轻人的,35岁之后可能就不那么摇滚了。

不过35岁之后,他们又将去向哪里呢?

也许等到中年的子健,面对着年轻的乐手们会说:

我不是针对谁,我是说在坐的各位,都没我代码写的好!

◆ ◆ ◆  ◆ ◆

长按二维码关注我们


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

会唱歌的程序员为何如此受欢迎?相关推荐

  1. linux中波浪号代表什么_Linux有什么吸引力,在程序员中如此受欢迎?

    在过去的几十年里,操作系统已经取得了很大的前进.曾经由微软Windows或苹果macOS主导的操作系统,现在已不再是常态. 千禧年之后,随着人们对核算环境的探索,各种操作系统开端发挥作用.Linux是 ...

  2. 程序员:我受够了!不想再在小厂里干Java了!

    你是否熟悉这样的情形: 每天10点到公司,打开电脑:10个小时的增删改查,搬砖写代码的一天就这样开始了. 刚毕业时候的你踌躇满志,按照自己的原定计划,这时候应该混到了阿里P6.可现在在小厂苦苦挣扎,无 ...

  3. 漫谈程序员系列:怎么告别“混日子”

    我在"漫谈程序员系列:咦,你也在混日子啊"一文中描述了一种混日子的现状,有朋友说该文只提到了设置目标告别混日子而没有展开论述"如何设立目标"."怎样为 ...

  4. 漫谈程序员系列 怎么告别 混日子

    我在"漫谈程序员系列:咦,你也在混日子啊"一文中描述了一种混日子的现状,有朋友说该文只提到了设置目标告别混日子而没有展开论述"如何设立目标"."怎样为 ...

  5. 程序员门槛再被“神器”降低:只要会英文,就能写代码!

    近日,OpenAI带着他们最新.最神自动编码神器Codex霸榜各大科技媒体头条,我们知道OpenAI是微软投资的通用人工智能平台,而GitHub是微软旗下的代码托管平台,这样微软出算力.OpenAI出 ...

  6. 一个老程序员的30年生涯回顾(译文)

    前几天,我读到一篇文章[1],一个60多岁老程序员回顾自己的人生. 读完以后,我很受触动,觉得对于软件行业的很多看法,我也有同感.下面就是这篇文章的翻译. 一个老程序员的30年生涯回顾(译文) 原文网 ...

  7. 困扰程序员的30种软件开发问题,你是否时曾相识?

    来自:程序师 链接: https://www.techug.com/post/30-programmer-meet-problems.html 开发应用程序是一项压力很大的工作,人无完人,工作中遇到各 ...

  8. 《Ruby程序员修炼之道》(第2版)目录—导读

    版权 Ruby程序员修炼之道(第2版) • 著 [美] David A. Black 译 钟凤鸣 陈雪静 责任编辑 杨海玲 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 ...

  9. Bug面前程序员的30种反应,戳中你了没

    开发应用程序是一项压力很大的工作,人无完人,工作中遇到bug是很正常的事,有些程序员会生气,沮丧,郁闷,甚至泄气,也有一些程序员则会比较淡定.如何进行修复bug的过程,是值得我们好好推敲的. 我想分享 ...

  10. 盘点程序员开发遇到的30个问题

        1.我不知道该删掉还是重写 回归曾经写的源代码,总有一种想要重新返工的冲动,逻辑性差,冗余代码多,让人难以理解.但是,如果功能没出现问题,千万不要去修改.这是我经常要面对的困扰,相信也困扰了其 ...

最新文章

  1. 洛谷 P2573 [SCOI2012]滑雪
  2. 第三个spring冲刺第5、6、7天(三天汇总)
  3. java遍历集合选择题_Java集合知识测试B
  4. asp.net2.0导出pdf文件完美解决方案
  5. python实现多表格合并_用python实现多个表格合并按字段去重
  6. 转帖-Linux学习(Find命令使用实例)
  7. 融合存储超越统一存储
  8. C 字符串转换为c语言字符串,OC字符串与C语言字符串之间的相互转换
  9. CSS RESET —— 浏览器样式重置
  10. 使用说明 思迅收银系统_思迅天店标准版收银系统条码秤+计价秤操作指南
  11. 华为网络设备-构建简单IPv6网络实验
  12. HTML空格符号 nbsp; ensp; emsp; 介绍以及实现中文对齐的方法
  13. 【吐槽大会】互联网大厂秋招版
  14. WPF界面-手机QQ_DEMO
  15. HTTP传输协议详解(传输过程及数据格式详细)
  16. 如何写公式提取车牌号
  17. windows10 企业版激活处于通知模式怎么处理
  18. 如何将m4v视频格式快速转换成mp4视频呢
  19. pygame 等有缘人接盘
  20. c语言字符串的题库,C考试系统题库含答案程序题

热门文章

  1. Boundary loss for highly unbalanced segmentation
  2. linux 添加用户到组命令,linux下添加用户组和用户
  3. 编解码学习笔记(九):QuickTime系列
  4. (ECCV 2022)E-NeRV: Expedite Neural Video Representation with Disentangled Spatial-Temporal Context
  5. P3324 [SDOI2015]星际战争(洛谷刷题记录)
  6. Xcode 6 删除 DerivedData后,编译异常
  7. [已解决]消除Flutter Sliver之间存在的间隙
  8. mysql 99乘法表_MySQL 通过sql输出99乘法表
  9. Gradle学习笔记(二)
  10. 蝇量级的JSON模型转换库(OC,Swift通用)