基于python的B站弹幕数据分析

基于python的B站弹幕数据分析(爬虫+可视化) python--B站弹幕数据分析 1 背景 在视频网站上,一边看视频一边发弹幕已经是网友的习惯

本文包含相关资料包-----> 点击直达获取<-------

基于python的B站弹幕数据分析(爬虫+可视化)

python--B站弹幕数据分析

1 背景

在视频网站上,一边看视频一边发弹幕已经是网友的习惯。B站就是其中一个比较出名的弹幕网站,许多年轻人都喜欢逛B站,看喜欢的动漫亦或某些UP主做的一些剪辑。本项目,就是对B站弹幕数据进行分析。选取分析的对象是B站上一部国漫《全职高手》。

2 环境的安装

本项目实在pycharm中实现,使用到的第三方库有requests,bs4,pandas,jieba.posseg,pyecharts。具体如何安装,百度都有详细的步骤,我在这里就不啰嗦了。

3 相关代码代码实现

3.1 爬虫部分

在《全职高手》动漫的播放页查看网页源码,找到cid

因为b站需要通过格式为:"https://api.bilibili.com/x/v2/dm/history?type=1&oid={}&date=2018-{}-{}" 的链接获取弹幕历史文件,所以我们到时候可以通过url拼接,来爬取我们想要的具体哪一天的弹幕。

存放B站弹幕的是网站是xml格式的,如下图所示

其中每个字段都有对应的含义:

  • 第一个参数是弹幕出现的时间以秒数为单位

  • 第二个参数是弹幕的模式1..3 滚动弹幕 4底端弹幕 5顶端弹幕 6.逆向弹幕 7精准定位 8高级弹幕

  • 第三个参数是字号, 12非常小,16特小,18小,25中,36大,45很大,64特别大

  • 第四个参数是字体的颜色以HTML颜色的十进制为准

  • 第五个参数是Unix格式的时间戳。基准时间为 1970-1-1 08:00:00

  • 第六个参数是弹幕池 0普通池 1字幕池 2特殊池【目前特殊池为高级弹幕专用】

  • 第七个参数是发送者的ID,用于“屏蔽此弹幕的发送者”功能

  • 第八个参数是弹幕在弹幕数据库中rowID 用于“历史弹幕”功能

遍历爬取弹幕历史文件,存入csv中,保存格式为:['弹幕出现时间', '弹幕格式', '弹幕字体', '弹幕颜色', '弹幕时间戳','弹幕池','用户ID','rowID','弹幕信息']

3.2 可视化部分

保存了所有数据之后,先对数据进行处理:先读取csv文件,再进行可视化分析

每一集弹幕总量变化--折线图:逐个读入弹幕历史文件:d1.csv,d2.csv,……经过去重后,统计出每集的弹幕总量:

python data = pd.read_csv(path.strip(),encoding='gbk',engine='python')

统计每一集的弹幕总量,存放在字典中

python episode_comment_dic[i] = every_episode_comment(data)

之后便进行可视化绘图了

python def every_episode_comment_change(episode_comment_dic):line = pyecharts.Line("每一集弹幕变化总量",'2018-12-27',width=1200,height=600) keys = [] values = [] for i in episode_comment_dic: keys.append("第%d集" % i) values.append(episode_comment_dic[i]) '''每一集弹幕总量的折线变化图''' line.add("每一集弹幕总量的折线变化图",keys,values) es = pyecharts.EffectScatter() es.add("",keys,values) overlap = pyecharts.Overlap() overlap.add(line) overlap.add(es) return overlap

发送弹幕总量TOP5用户:1.统计每一集弹幕数量,把用户排序,每一集排序后的结果都是一个DataFrame, 结果的大致结构:user_sort_dic = {1: DataFrame1, 2:DataFrame2, ......,12: DataFrame12}。

python '''每一集用户发送弹幕数量排序''' def every_episode_usersort(data): df = data.drop_duplicates() dd = df.groupby("用户ID").count() user_sort = dd.sort_values(by = '弹幕信息',ascending=False).loc[:,['弹幕信息']] return user_sort

用户发弹幕长度分布,统计发送弹幕的字符串长度:

用户发弹幕数量分布,统计一集,用户发送弹幕数量的百分比分布图。

python user_sort_dic[i] = every_episode_usersort(data) '''统计用户发送弹幕数量的百分比分布图''' for i in user_sort_dic: d_tmp = user_sort_dic[i] pie = every_episode_barrage_pie(d_tmp,i) timeline1.add(pie,i) del d_tmp

每集弹幕密度变化图:每个弹幕都有一个时间参数,代表了用户在视频的什么时间发了弹幕。所以我们可以统计出在相同时间参数发出的弹幕量,然后再画出“时间--弹幕数量”折线图,就可以看到弹幕量的变化了。

词云图:对所有的弹幕文本进行分析。先用jieba词库进行分词,然后逐行对弹幕进行词频统计,最后用pyecharts的WordCloud画出词云图,wordcloud = pyecharts.WordCloud("全职高手-词云图")

3.3 统计结果

全职高手动漫12集用户发送弹幕条数饼图--轮播:

每一集弹幕总量的变化:

每一集用户发送弹幕的字数饼图--轮播:

12集用户发送弹幕总量排名--直方图:

一集视频中用户发送的弹幕密度图:

12集动漫的词云图:

3.4 结果分析

通过以上的图表数据可以看出用户的弹幕的一些行为。

12集剧里,第一集,第二季和最后一集,弹幕数量是最多的,说明这部动漫刚上线的时候关注度还是很高的,之后的弹幕数量不高可能是因为剧情发展比较平稳,最后一集弹幕数量又多了起来,说明动漫结束,用户们都纷纷发表感慨,从词云中的‘散场’也可看出。

统计了12集的弹幕,用户ID为5ff19abd的用户共发送了480多条弹幕,算是超级粉丝了。

通过弹幕数量和长度的分布,可以看出:绝大部分用户只会发送2条以内的弹幕。参与弹幕讨论的用户以10个字符以内的短语为主。

统计每一集的弹幕密度,可以通过用户观看时的讨论,大致确定视频的精彩点。

通过词云图,可以大致看出用户的分布。例如‘散场’作为热词显示里。说明许多用户都为动漫的结束发表感慨。

4 总结

因为绘制热词云图的代码运行太久了,所以本实验的词云图只截取了某些天的弹幕,或许可以引入多线程使程序效率更高。因为B站的网页是动态的,当时做爬虫的时候准备用webdriver,无奈环境搞不会,放弃了。本项目还是有许多缺陷的,当时做的时候借鉴了一篇博客,又把它给改进了一下,然后才实现出了该项目。(大三上python数据分析大作业,本人很菜,不完全原创,内有许多不足。)

参考文献

  • 基于协同过滤的视频推荐系统研究与实现(江苏科技大学·浦艺钟)
  • 互联网招聘数据分析与可视化系统设计与实现(西南大学·田书丽)
  • 视频检索与推荐系统的设计与实现(华中科技大学·陈凡)
  • 基于Web的信息发布与信息交流平台的设计与实现(吉林大学·许昭霞)
  • 视频处理平台的设计与实现(北京交通大学·时月月)
  • 电影网站数据挖掘可视化系统设计与实现(华中科技大学·王志)
  • CLARANS改进算法在音乐网站智能推荐系统中的应用(吉林大学·魏佳)
  • 基于视频分享社交系统后台的设计与研发(中国地质大学(北京)·刘昌瑞)
  • 面向视频网站的自感知通用爬虫系统的设计与实现(北京邮电大学·黄国锴)
  • 基于Spark的社交网络数据分析平台(山东大学·王海林)
  • 逼真流数据测试集的弹性并行生成框架技术(华东师范大学·顾伶)
  • 视频推荐系统数据分析决策平台(华南理工大学·贺栋博)
  • 融合多特征的弹幕视频推荐算法的研究与实现(西北民族大学·黄昌昊)
  • 电子商务网站的数据分析系统研究与开发(北方工业大学·韩杰)
  • 互联网招聘数据分析与可视化系统设计与实现(西南大学·田书丽)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码项目助手 ,原文地址:https://m.bishedaima.com/yuanma/35396.html

相关推荐

  • python网页开发

    详细设计与实现 网页数据展示部分 该模块使用flask开源网络框架组织网页,同时使用jQuery,echarts等开源技术控制网页的显示,程序后台流程图如图4-2-1所示: 程序前端流程图如图4-2-2所示: flask框架 由于flask网络框架比较轻量
    2024年05月14日
    3 1 1
  • JavaWeb书城

    JavaWeb 书城项目 表单验证的实现 表单验证主要使用 jQuery 实现,IDE 为 IDEA, 导入项目 新建一个模块 新建模块 把原有的文件导入
    2024年05月14日
    7 1 2
  • 基于SSM和MySQL实现的多业务农情信息云平台

    基于SSM和MySQL实现的多业务农情信息云平台 摘 要 在当今网络技术迅速发展的时代,如果能借助网络平台的优势,创建一个农业领域的数据交流平台,让用户通过平台收集和共享数据
    2024年05月14日
    6 1 1
  • SSM实现值班管理系统排班管理系统

    这是一个🔥🔥SSM实现值班管理系统排班管理系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 班务管理系统开发技术栈为SSM项目,可以作为毕业设计课程设计作业基于Spring
    2024年05月23日
    6 1 2
  • SSM框架酒店预订系统_JavaWeb客房预定管理系统

    酒店行业的快速发展带来了对客房预订管理的不断需求,在这一背景下,设计和实现一个高效的酒店预订系统变得尤为重要,本研究基于SSM整合框架,旨在开发一个JavaWeb客房预定管理系统
    2024年05月07日
    13 1 4
  • 基于Java+JSP+Servlet+Mysql的考勤管理系统

    基于Java+JSP+Servlet+Mysql的考勤管理系统具有重要意义,随着信息技术的飞速发展,企业对于高效管理人力资源的需求日益迫切,传统的考勤管理方式已经不能满足现代企业的需求
    2024年05月07日
    8 1 2
  • 基于JSP和MySQL的进销存管理系统的设计与实现

    基于JSP和MySQL的进销存管理系统的设计与实现 摘 要 进入21世纪以来,商业管理中需要处理的数据和信息越来越多,大量的数据和繁杂的数据使得古老的手工处理数据的方式渐渐显得力不从心
    2024年05月14日
    8 1 1
  • 基于SSM+layui框架开发酒店管理系统

    SSM-Graduation design(SSM-毕业设计) 一,系统介绍 这是本人2021年的毕业设计(基于SSM+layui框架开发的酒店管理系统)
    2024年05月14日
    15 1 3
  • 基于ssm框架的在线医院挂号系统

    HospitalSystem 参考文献 医疗挂号系统服务端的设计与实现(北京邮电大学·郑朝杰) 基于MVC模式的医院预约挂号管理系统的设计与实现(广西大学·戴铭孚) 基于SSM的综合医养平台的设计与实现(吉林大学·宋恩旭) 网上预约挂号系统的设计与实现(华中科技大学·游国强) 基于Android平台的预约挂号系统的设计与实现(江西财经大学·赵震) 在线医疗管理系统的研究与实现(辽宁科技大学·薄翔) 基于J2EE架构的医疗信息服务平台的设计与实现(北京交通大学·张颖彬) 医疗挂号系统运营支撑平台的设计与实现(北京邮电大学·孟祥建) 基于Android平台的预约挂号系统的设计与实现(江西财经大学·赵震) 基于J2EE架构的医疗信息服务平台的设计与实现(北京交通大学·张颖彬) 基于
    2024年05月14日
    9 1 3
  • 基于SpringBoot框架的校园网上店铺

    这是一套采用Java编程语言,基于SpringBoot框架构建的📚校园电商系统源代码,该项目运用了SpringBoot和Vue技术栈,开发工具为Idea或Eclipse
    2024年05月23日
    9 1 4

发表回复

登录后才能评论