基于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://bishedaima.com/yuanma/35396.html

相关推荐

  • 基于Python的数据库实现

    基于Python的数据库实现 1,需求分析 1,1 概述 从底层做起,实现数据库的组织,存储,检索,更新和索引等功能, 1,2 基本功能 设计特定的数据结构
    2024年05月14日
    2 1 2
  • 中小型医院网站

    这是一个🔥🔥基于SpringBoot框架的中小型医院网站设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    3 1 1
  • 基于SpringBoot框架的宠物领养系统

    这是一份采用Java语言编写的🔥🔥SpringBoot框架宠物领养应用的源代码项目,开发中融入了SpringBoot和Vue技术,支持使用Idea或Eclipse作为开发工具
    2024年05月23日
    5 1 1
  • Java+SSH线上课程学习系统

    这是一个🔥🔥SSH线上课程学习系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 Java线上课程开发技术栈为SSH项目,可以作为毕业设计课程设计作业使用ssh框架
    2024年05月23日
    8 1 1
  • 基于python的信号集问题

    基于python的信号集问题 题目 借助计算机编程分别给出下图所示的两个信号集的功率效率(BER与Eb/N0的关系),并通过比较其功率效率解释编码负增益现象
    2024年05月14日
    1 1 1
  • 口红色号识别器之Python

    口红色号识别器 选题 程序名称: 口红色号识别器 选题: 基于图像处理
    2024年05月14日
    4 1 1
  • 基于SpringBoot框架的制造装备物联及生产管理ERP系统

    这是一套采用🔥🔥SpringBoot为核心的智能制造设备联网及生产管理ERP系统的源代码,主要编程语言为Java,并结合了SpringBoot和Vue技术进行构建,开发工具包括Idea或Eclipse
    2024年05月23日
    15 1 3
  • 基于Python实现简易C语言编译器

    参考文献 基于Python的非结构化数据检索系统的设计与实现(南京邮电大学·董海兰) 山西思软科技实训管理系统的设计与实现(大连理工大学·李勇兵) 基于C#的甜品店现金交易系统的设计与实现(电子科技大学·张晟) 基于Web系统的计算机编程语言书籍交流系统设计与开发(吉林大学·刘峰兵) 基于动易网的B/S结构学校网站设计与实现(吉林大学·於月红) 在线考试系统的设计与实现(山东大学·张莉) 基于ASP
    2024年05月14日
    2 1 1
  • 基于SpringBoot框架的星之语明星周边产品销售网站

    这是一套采用Java语言构建的🌟🌟SpringBoot为核心的星之语明星周边商品售卖网站源代码,该项目运用了SpringBoot和Vue框架,开发工具为Idea或Eclipse
    2024年05月23日
    4 1 1
  • 基于Java的寝室公共财产管理系统

    基于Java的寝室公共财产管理系统 摘 要 我们所学的《java面向对象》和我们以前所学的C++大同小异,整体上差不多却有各有各的特点,在学习了理论课程之后
    2024年05月14日
    1 1 1

发表回复

登录后才能评论