用python分析《大侦探第七季之蔷薇下的罪恶》的90000条弹幕
大家应该都知道密室逃脱吧,最近有个综艺节目叫《大侦探》,是一个解密找线索类得综艺节目,那可谓是刻刻激动人心,非常的nice呀。借此,我爬取了《大侦探之蔷薇下得罪恶》这篇得90000条弹幕,来分析大家弹幕都说了啥!
一、爬虫
芒果TV的的弹幕是动态加载的,所以它的表面网站并不能提取出来弹幕,我们可以右键网页检查源代码,
查看network中的XHR选项找到真实的url(https://bullet-ws.hitv.com/bullet/2022/04/22/154401/15873099/{i}.json)
,是json字典格式数据,从这里可以观察到网页变化(页码.json),因此我们可以直接利用json()函数进行提取数据。
而最大的页码是由视频的时常得来,《大侦探蔷薇下的罪恶》的时常为91.21分,向上取整92,最大页码为92页。具体爬取方法如下:
import requests
import pandas as pdheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"} df = pd.DataFrame()for i in range(0, 92):url = 'https://bullet-ws.hitv.com/bullet/2022/04/22/154401/15873099/{}.json'respose = requests.get(url.format(i), headers=headers)# json格式 直接用json提取数据for j in respose.json()['data']['items']:ids = j['ids'] # 用户idcontent = j['content'] # 弹幕内容time = j['time'] # 弹幕发生时间text = pd.DataFrame({'ids': [ids], '弹幕': [content], '发生时间': [time]})df = pd.concat([df, text])
df.to_csv('大侦探蔷薇下的罪恶弹幕_上.csv', encoding='utf-8-sig', index=False)
爬取出来的数据长这个样子
二、分析
1、读取数据
# 读取数据并处理
danmu1 = pd.read_csv('大侦探蔷薇下的罪恶弹幕_中.csv',encoding='utf-8-sig',sep=',')
danmu2 = pd.read_csv('大侦探蔷薇下的罪恶弹幕_下.csv',encoding='utf-8-sig',sep=',')
danmu3 = pd.read_csv('大侦探蔷薇下的罪恶弹幕_上.csv',encoding='utf-8-sig',sep=',')
danmu = pd.concat([danmu1,danmu2,danmu3],axis=0).reset_index().drop(['index','ids'],axis=1)
danmu
结果如下:弹幕 发生时间
0 是不是通过自己自杀 来让其他人陪葬 0
1 甄是自杀的吧 邮件是鸥发的 让他们忏悔他们的堆+ 0
2 甄是自杀的吧 邮件是鸥发的 让他们忏悔他们的堆+ 0
3 爱了爱了 0
4 噗噗诶~柚子的维尼也叫噗噗 0
... ... ...
82650 白白去拍剧去了吗?没空来了? 5449000
82651 第一版《无罪说》yyds 5450565
82652 我的无罪说啊啊啊 5456990
82653 爱死明侦啦 5475235
82654 考研上岸呀 5480295
82655 rows × 2 columns
2、分词并去除停用词
import jieba # 分词 库
from wordcloud import WordCloud # 词云图库
import collections # 对分词计数用# 读取停用词数据 停用词从网上下载的百度停词库
stopwords = pd.read_csv('D:/搜狗高速下载/stopwords-master/baidu_stopwords.txt', encoding='utf8', names=['stopword'], index_col=False)# 停用词转为列表
stop_list = stopwords['stopword'].tolist()# 弹幕转为字符串
str1 = ''.join(danmu['弹幕'])
# 将弹幕分割成词
text = jieba.cut(str1)
result_list= []
for word in text: # 对每个分割后的词语进行遍历筛选:词长度>1 且不在停用词中if word not in stop_list and len(word) > 1:result_list.append(word)
result_list
# 分割后的词长这样:
['自杀','其他人','陪葬','甄是','自杀','邮件','忏悔','甄是','自杀',
3、对出现次数最多的前100个词语进行词云图展示
# 筛选后统计
word_counts = collections.Counter(result_list)
# 获取前100最高频的词
word_counts_top100 = word_counts.most_common(100)
print(word_counts_top100)
# 最火的100个词语
[('哈哈哈', 6663), ('老师', 4373), ('真的', 3121), ('侦探', 2859), ('哈哈哈哈', 2821),('一个', 2322), ('女人', 1831), ('这期', 1735), ('凶手', 1548), ('阿蒲', 1520),
('张若昀', 1456), ('感觉', 1429), ('女生', 1275), ('病娇', 1160), ('现实', 1115),
('恶人', 978), ('女性', 947), ('一期', 943), ('自杀', 913), ('人设', 898), ('全员', 877),
('保护', 759), ('妈宝', 740), ('理解', 740), ('妈妈', 738), ('喜欢', 717), ('角色', 694),
('故事', 688), ('雨衣', 665), ('啊啊啊', 621), ('好像', 614), ('可爱', 591), ('别人', 573),
('封神', 569), ('凤凰', 567), ('好人', 565), ('好帅', 561), ('有人', 560), ('仪式', 547),
('希望', 539), ('死者', 538), ('蔷薇', 533), ('上位', 528), ('世界', 505), ('朋友', 504),
('完美', 487), ('发现', 473), ('控制', 472), ('好看', 471), ('受害者', 458),
('救命', 435), ('肯定', 434), ('蒲鱼', 430), ('兔子', 429), ('变态', 426), ('剧本', 413),
('身份', 413), ('小蒲', 410), ('终于', 395), ('三个', 388), ('第一次', 385), ('伤害', 382),
('无辜', 378), ('女孩子', 378), ('剧情', 375), ('所有人', 375), ('浑浊', 375),
('呜呜', 362), ('打卡', 358), ('想到', 354), ('回来', 353), ('甄是', 352), ('两个', 348),
('同歌', 344), ('网络', 342), ('高能', 341), ('嫌疑人', 339), ('戚薇', 334),
('未知', 332), ('男性', 328), ('确实', 326), ('担心', 324), ('真人', 323), ('情商', 323),
('报仇', 318), ('吴昕', 317), ('好好看', 309), ('镜头', 308), ('一案', 304),
('可怕', 303), ('大案', 299), ('厉害', 296), ('时间', 294), ('这是', 294), ('事情', 289),
('合同', 289), ('雪花', 286), ('有没有', 285), ('人类', 285), ('弹幕', 283)]
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = Falsemy_cloud = WordCloud(background_color='black', # 设置背景颜色 默认是blackwidth=600, height=600,max_words=200, # 词云显示的最大词语数量font_path='simhei.ttf', # 设置字体 显示中文max_font_size=99, # 设置字体最大值min_font_size=16, # 设置子图最小值random_state=50 # 设置随机生成状态,即多少种配色方案
).generate_from_frequencies(word_counts)# 显示生成的词云图片
plt.figure(figsize=(20,6))
plt.imshow(my_cloud, interpolation='bilinear')
# 显示设置词云图中无坐标轴
plt.axis('off')
plt.show()
4、对出现次数最多的前30个词语进行条形图展示
word_counts_top30 = word_counts.most_common(30)
df = pd.DataFrame(word_counts_top30,columns=['word','num'])fig = plt.figure(figsize=(20,8))ax = fig.add_subplot(111)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)plt.bar(range(30),df['num'],color='blue')
plt.xticks(range(30),df['word'],rotation=60,size=15)
plt.title('出现次数最多的前30个词',size=15)plt.savefig("出现次数最多的前30个词.jpg")
plt.show()
- 从词云图和条形图可以看出来,“哈哈哈哈,哈哈哈” 的次数是排在第一位的,这个情节可能还是比较搞笑的,逗得大家乐呵呵。其次就是词语:女性、妈宝、自杀、全员恶人之类的,看起来这剧情刷起来是很爽的。出现的人物名字有张若昀,还是比较火的;还有阿蒲,剧情里的人物,最后自杀了。还是值得推荐的一部推理解密类综艺。
用python分析《大侦探第七季之蔷薇下的罪恶》的90000条弹幕相关推荐
- python大数据分析实例-如何用Python分析大数据(以Twitter数据挖掘为例)
原标题:如何用Python分析大数据(以Twitter数据挖掘为例) 来源:艾翻译(http://www.itran.cc/) 原文标题:Twitter Data Mining: A Guide to ...
- 【Python】大数据挖掘课程作业1——使用爬虫爬取B站评论、弹幕与UP主的投稿视频列表
[Python]大数据挖掘课程作业1--使用爬虫爬取B站评论.弹幕与UP主的投稿视频列表 数据挖掘部分的基本目标是:对于指定的UP主,能够获取其投稿视频列表:对于指定的视频,能够获取其视频标签.评论( ...
- 明星大侦探数据分析-第一季~第五季
开年啦.人间小苦瓜再次上线继续努力努力. 算是明星大侦探的忠实粉丝,在看节目的同时,经常会看到弹幕写着:"XXX的直觉很准","XXX当了好多次凶手了,这次也没跑了&qu ...
- python 分析大数据
Python是一种高级编程语言,可用于分析大数据.常用的 Python 库如 Pandas 和 NumPy 可用于数据清洗.数据分析和数据可视化.此外,还有许多其他库,如 Scikit-learn.T ...
- 如何用python分析大数据_Twitter数据挖掘:如何使用Python分析大数据
,拥有16年的程序员培训经验,上市公司品牌,口碑极好,一线名师授课,强大的教研团队研制开发最新的课程,与中关村软件园战略合作保障人才输出,与学员签订就业协议保障就业问题!真正的靠谱品牌! 大数据无处不 ...
- Python分析《权力的游戏》最终季...... | 附源码
译者 | 刘畅 编辑 | 琥珀 出品 | AI科技大本营(id:rgznai100) [导读]<权力的游戏>最终季已于近日开播,对于全世界翘首以待的粉丝们来说,其最大的魅力就在于" ...
- python 分析大数据日志_大数据Web日志分析 用Hadoop统计KPI指标实例
可以带着下面问题来阅读文章 问题: 1.MapReduce在日志分析的作用 思考: 该如何架构kpi系统,需要考虑什么问题. kpi:关键绩效指标法,即KPI绩效考核,是企业绩效考核的方法之一,其特点 ...
- Python怎么用大数据分析_用Python制作大数据教程/如何使用Python分析大数据
✅作者简介:华为云开发者联盟优质内容创作者.CSDN内容合伙人.GitHub专业技术人员
- 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读
利用python爬取猫眼电影,分析<大侦探皮卡丘>,看看当皮卡丘长出绒毛,"丑拒"还是"真香"都在猫眼短评里了. 本文首发于微信公众号<凹凸数 ...
最新文章
- 美团确定进军自动驾驶,滴滴如何应对?
- c语言中的目标程序的正确含义,C语言程序设计练习题整理要点.doc
- Windows phone msdn 索引
- 为什么开源的代码没有注释_代码注释那些事儿
- correct ways to define variables in python
- jq之$(“[href]“)
- 三种主流流媒体协议比较
- TikZ学习笔记(四)圆的进一步探索与复杂几何图形
- java eden区_(转)可能是把Java内存区域讲的最清楚的一篇文章
- IDLDrawWidaget Activex
- Java 8之新特性详解
- 第三讲 配置SCCM客户端并添加角色
- 收藏!示波器探头的选择与使用
- 疑犯追踪第五季/全集Person of Interest迅雷下载
- 手机长时间不用自动断网_手机自动断网怎么回事
- java开发手机app_java 怎么开发手机app接口?
- Fuzzy C-Means(模糊C均值聚类)算法原理详解与python实现
- Java中打印程序执行的开始时间和结束时间
- 责任心与态度比技术更重要
- 你究竟多想成功?(nba励志视频)
热门文章
- linux软AP实现,hostapd+dhcpd+dnsmasq
- 如何彻底删除电脑安装的软件程序?
- 王一博豆瓣电影海报抓取
- Squid中文权威指南-目录
- 黑马程序员--C#语言编码实现九九乘法表
- solaris 10 java_Solaris 10安装jdk1.6及修改成默认JDK
- Java通过itextpdf架包实现报表导出为pdf文件
- 在字节跳动实习后,程序员是这样写简历的
- sql 语句left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on下去?
- 鼠标经过时反转遮罩层(1+X Web前端开发初级 例题)