[计算机毕业设计]大数据的B站数据分析与可视化

news2025/7/9 5:11:23

目录

前言

课题背景和意义

实现技术思路

数据爬取

数据可视化

实现效果图样例


前言


    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

本次分享的课题是

🎯大数据的游戏数据分析系统

课题背景和意义

B站是长视频平台的代表之一,长视频类型的平台就是指通过大量优质自制剧、综艺和电影版权来获取会员,对标的是Netflix。比如一部有可能要火的电视剧或者资源,各大视频平台会疯狂砸重金买版权。因为大家都明白,买下这块版权,就会吸引到想要关注这块内容的海量用户(中国在线视频用户以每年28%的增速在增长),也就会有很多的人去充值会员,甚至于超前点播等。但中国目前三大视频平台后面站的正是BAT IT三巨头,谁都不缺钱。那这就意味着谁都想吃下这块蛋糕,所以都将内容版权炒上了天价,以至于目前这个赛道上,各家都是集体亏损的状态,而到了真正垄断的那天,很难预测会是什么样的局面。

实现技术思路

数据爬取

python爬虫是收集互联网数据的常用工具,近年来随着互联网的发展而快速发展。使用网络爬虫爬取网络数据首先要了解网络概念和主要分类,各类爬虫的系统结构、运作方式,常用策略,以及主要的应用场景,同时,出于版权和数据安全的考虑,还需了解目前有关爬虫的应用合法性以及爬取网站是的需要遵守的协议。

import requests  
from bs4 import BeautifulSoup  
import xlwt  
import time  
import urllib3  
import requests  
import json  
  
# 爬取B站热榜排行  
# 格式解析,[0-当前排名,1-视频标题,2-播放数目,3-弹幕数量,4-综合得分,5-作者,6-视频地址,7-时长,8-评论数,9-收藏数,10-投币数,11-分享数,12-点赞数]  
  
# 格式化  
def whitespace(st):  
    st = st.replace('\n', '')  
    st = st.strip()  
    st = st.replace(' ', '')  
    return st  
  
  
# 详情页  
def info_Page(bv):  
    url = 'http://api.bilibili.com/x/web-interface/view?bvid=' + bv  
    headers = {  
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"  
    }  # 请求头,模拟浏览器的运行  
    urllib3.disable_warnings()  # 从urllib3中消除警告  
    response = requests.get(url, headers=headers)  
    content = json.loads(response.text)  
    # 很迷,获取到的是str字符串 需要解析成json数据  
    statue_code = content.get('code')# print(statue_code)  
    if statue_code == 0:  
        duration = content['data']['duration'] # 时长  
        reply = content['data']['stat']['reply'] # 评论  
        favorite = content['data']['stat']['favorite'] # 收藏  
        coin = content['data']['stat']['coin'] # 投币  
        share = content['data']['stat']['share'] # 分享  
        like = content['data']['stat']['like'] # 点赞  
  
    return duration,reply,favorite,coin,share,like  
  
while(True):  
    url = 'https://www.bilibili.com/v/popular/rank/all'  
    headers = {  
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'}  
  
    rank = requests.get(url, headers=headers)  # 请求页面  
    soup = BeautifulSoup(rank.text, 'lxml')  
    all_rank = soup.find_all('li', class_='rank-item')  
  
    num = 0  
    lst=[]  
    for i in all_rank:  
        record = []  
        rank_num = i.find('div', class_='num').text  # 获取排名  
  
        info = i.find('div', class_='info')  # 筛选出视频详细信息的标签  
        href = info.find('a', class_='title').attrs['href']  # 获取链接  
        title = info.find('a', class_='title').text  # 获取标题  
  
        play_num = info.find('i', class_='b-icon play').parent.text  # 获取播放量  
        view_num = info.find('i', class_='b-icon view').parent.text  # 获取弹幕数  
        author = info.find('i', class_='b-icon author').parent.text  # 获取作者名  
        scores = info.find('div', class_='pts').find('div').text  # 获取综合得分  
        # 播放,弹幕,作者  
        play_num = whitespace(play_num)  
        view_num = whitespace(view_num)  
        author = whitespace(author)  
  
        bv = href.split('/')[-1]  
        duration,reply,favorite, coin,share,like = info_Page(bv)  
  
        record.append(rank_num)  
        record.append(title)  
        record.append(play_num)  
        record.append(view_num)  
        record.append(scores)  
        record.append(author)  
        record.append(href)  
  
        record.append(duration)  
        record.append(reply)  
        record.append(favorite)  
        record.append(coin)  
        record.append(share)  
        record.append(like)  
        num += 1  
        lst.append(record)  
  
    # 爬取的数据存入文件,避免多次爬取且提高响应速度  
    with open('./bilibili.txt', 'w',encoding='utf-8') as f:  
        for line in lst:  
            for i in line:  
                f.write(str(i)+',')  
            f.write('\n')  
    time.sleep(300)  
#print(lst[0])  

数据可视化

哔哩哔哩综合得分,是视频是否能排上排行榜的依据,若能知道其规则,对于视频内容的倾向,up主是否需要请求“一键三连”,观众们需不需要吝啬手中的币,是有很大的价值的,所以在此首先进行综合得分计算指标的分析及其可视化,此处采取灰色关联度分析(Grey Relation Analysis,GRA)来进行数据的处理,

GRA是一种多因素统计分析的方法。简单来讲,就是在一个灰色系统中,我们想要了解其中某个我们所关注的某个项目受其他的因素影响的相对强弱,本项目中,就是说:我们假设B站综合得分可能是与播放、评论、收藏、投币、分享、点赞几个因素相关的,那么我们想知道综合得分与这几个因素中的哪个相对来说更有关系,而哪个因素相对关系弱一点,把这些因素排个序,得到一个分析结果,我们就可以知道哔哩哔哩综合得分,与因素中的哪些更相关,因而也就可以看出观众的一键三连的作用以及up主们更应该求的是赞、币亦或是其他。

with open('./bilibili.txt', 'r+',encoding='utf-8') as f1:  
    lst2=[]  
    for line in f1.readlines():  
        lst2.append(line.split(','))  
  
mom_ = [int(i[4]) for i in lst2[0:50:]]  
  
view = []  
reply = []  
favorite = []  
coin = []  
share = []  
like = []  
  
for i in lst2[0:50]:  
    view.append(float(i[2].strip("万"))*10000)  
    reply.append(int(i[8]))  
    favorite.append(int(i[9]))  
    coin.append(int(i[10]))  
    share.append(int(i[11]))  
    like.append(int(i[12]))  
son_ = [view,reply,favorite,coin,share,like]

然后要对数据进行预处理,因为我们的这些要素是不同质的东西的指标,因此可能会有的数字很大有的数字很小,但是这并不是由于它们内禀的性质决定的,而只是由于量纲不同导致的,因此我们需要对它们进行无量纲化。这个操作一般在数据处理领域叫做归一化(normalization),也就是减少数据的绝对数值的差异,将它们统一到近似的范围内,然后重点关注其变化和趋势。按公式归一化即可。

最终结果:B站综合得分与播放、评论、收藏、投币、分享、点赞几个因素都具有很强的相关性。

实现效果图样例

 

 

 

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么 NGINX 的 reload 不是热加载?

作者:刘维 这段时间在 Reddit 看到一个讨论,为什么 NGINX 不支持热加载?乍看之下很反常识,作为世界第一大 Web 服务器,不支持热加载?难道大家都在使用的 nginx -s reload 命令都用错了? 带着这个…

入职阿里必会199道SpringCloud面试题,你能掌握多少?

前言 Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间。这 4 年时间里,Spring Cloud 一共发布了 46 个版本,支持的组件数从 5 个增加到 21 个。 Spring C…

linux用户及用户组的分类、管理

一、分类 1.用户和用户组分类 (1)用户分类 超级用户(root)——它具有一切权限,只有进行系统维护(例:建立用户)或其他必要情形下才用超级用户登录,以避免系统出现安全问…

Qt程序打包成一个单独exe的方法

目录 Qt程序打包成一个单独exe的方法 程序发布 程序打包 问题 Qt程序打包成一个单独exe的方法 Qt程序发布及打包,同时修改可执行文件的图标。本教程使用Qt自带的 windeployqt 工具外加Enigma Virtual Box打包工具。首先需要知道的是,Qt程序发布需要的…

【MM小贴士】物料主数据的中止与后继(3)

话不多说,直接上3, 前两篇的blog可以参考: 【MM小贴士】物料主数据的中止与后继(1)_竹大的博客-CSDN博客https://yanshoushuai.blog.csdn.net/article/details/125660495【MM小贴士】物料主数据的中止与后继(2)_竹大的博客-CSDN博客https:/…

QT 事件处理

03 Qt中是事件处理_哔哩哔哩_bilibili 1&#xff0c;新加mylabel文件&#xff0c;并 修改mylabe的基类QLabel 2 label提升为类 3&#xff0c;鼠标事件 myLabel.h #ifndef MYLABEL_H #define MYLABEL_H#include <QLabel>class myLabel : public QLabel {Q_OBJECT public…

TCP三次握手四次挥手简介

TCP三次握手四次挥手简介 图解三次握手、四次挥手 建立连接&#xff1a;三次握手 关闭连接&#xff1a;四次挥手 上图传递过程中出现的几个字符&#xff08;SYN,ACK,FIN,seq,ack&#xff09;各代表什么意思 SYN&#xff0c;ACK&#xff0c;FIN存放在TCP的标志位(标志位一共有…

【设计模式】设计模式的七大原则

目录标题4. 设计模式的七大原则4.1 开闭原则&#xff08;对扩展开发&#xff0c;对修改关闭&#xff1a;需要接口和抽象类来实现&#xff09;Demo: 搜狗输入法 的皮肤设计4.2 里氏替换原则&#xff08;任何基类可以出现的地方&#xff0c;子类一定可以出现&#xff1a;尽量不要…

[Redis]-四种部署方式

森格 | 2022年11月 本文是对Redis部署方式的学习&#xff0c;主要学习基本原理&#xff0c;以及几种方式的优缺点。 一、部署方式概况 对于Redis的安装部署主要可以分为单机版、主从同步、Sentinel哨兵、Cluster集群部署四种方式&#xff0c;下面一起看下几种方式的优缺点。 二…

Python闭包

目录 变量作用域规则(LEGB规则) 闭包 闭包的用途 &#xff08;一&#xff09;读取函数内部的变量 &#xff08;二&#xff09;让函数内部的局部变量始终保持在内存中 &#xff08;三&#xff09;总结 变量作用域规则(LEGB规则) 在下面的实例中,我们定义一个测试函数,它读取…

112. 路径总和

文章目录2.示例3.答案①递归②BFS③DFS给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返…

智慧电力解决方案-最新全套文件

智慧电力解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 智慧电力全套最新解决方案合集一、建设背景 电力能源是支撑整个社会运行的最重要基础体系之一。伴随着经济和社会生活的发展&#xff0c;人们对电力需求不断增长&#xff0c;同时随着能源需求日…

docker 安装 portainer 来管理容器 (记录 1)

docker 安装 portainer 来管理容器 &#xff08;记录 1&#xff09; 初docker 安装 portainer前置条件&#xff1a;安装docker下载镜像 portainer部署容器配置进入监控初 希望能写一些简单的教程和案例分享给需要的人 docker 安装 portainer 前置条件&#xff1a;安装docker…

【JavaSE】异常处理

文章目录什么是异常异常的分类异常的处理流程throw异常的抛出throws 和 try-catch捕获异常finally自定义异常类什么是异常 在生活中我们头疼脑热都是身体出现的异常&#xff0c;在代码中也是一样的&#xff0c;尽管程序员在写代码时已经非常追求完美&#xff0c;但是总会有一些…

【真北读书】弗兰克意义三途径,让你人生的意义不漂移

维克多弗兰克&#xff0c;意义疗法创始人&#xff0c;出生于奥地利维也纳一个贫困的犹太人家庭。弗兰克15岁时质疑化学老师说的生命只是化学燃料&#xff0c;开始思考生命的意义&#xff0c;曾学习弗洛伊德、阿德勒、海德格尔和尼采&#xff0c;在被囚禁之前&#xff0c;已形成…

终于有人把大数据的相关知识讲全了(大数据基础框架、数据库、大数据分析分布式技术),从入门到进阶全部涵盖了!

前言 经常有初学者在博客和微信问我&#xff0c;自己想往大数据方向发展&#xff0c;该学哪些技术&#xff0c;学习路线是什么样的&#xff0c;觉得大数据很火&#xff0c;就业很好&#xff0c;薪资很高。如果自己很迷茫&#xff0c;为了这些原因想往大数据方向发展&#xff0…

用VB设计年级人员管理系统

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 课题研究背景 1 1.2 课题研究目的和任务 1 1.3 课题研究的意义 2 1.4 论文的主要内容和章节安排 2 第二章 运行环境开发工具 3 2.1 运行环境 3 2.2 开发工具简介 3 2.2.1 VB6.0基础 3 2.2.2 SQL Server2000数据库基础 3 第三章 需…

【HDU No. 2874】 城市之间的联系 Connections between cities

【HDU No. 2874】 城市之间的联系 Connections between cities 杭电OJ 题目地址 【题意】 由于大部分道路在战争期间已被完全摧毁&#xff0c;所以两个城市之间可能没有路径&#xff0c;也没有环。 已知道路状况&#xff0c;想知道任意两个城市之间是否存在路径。若答案是肯…

11.一键分析你的上网行为(web页面可视化)

## 一键分析你的上网行为, 看看你平时上网都在干嘛? ## Chrome浏览器历史记录文件可视化### 简介**想看看你最近一年都在干嘛&#xff1f;看看你平时上网是在摸鱼还是认真工作&#xff1f;想写年度汇报总结&#xff0c;但是苦于没有数据&#xff1f;现在&#xff0c;它来了。*…

国外顶尖程序员手写,402页汉译版微服务与事件驱动架构开发手册

为什么用事件驱动型微服务&#xff1f; Marshall McLuhan认为&#xff0c;影响人类并给社会带来根本性变革的不是媒介的内容&#xff0c;而是与媒介的互动过程。在我们的集体参与下&#xff0c;报纸、广播、电视、互联网、即时通信和社交媒体改变了人类的互动方式以及社会结构…