1.1 课题概述
本课题旨在设计并实现一个基于大数据的B站(哔哩哔哩弹幕网)数据分析系统。随着互联网的快速发展和数字媒体的兴起,B站作为国内知名的视频分享平台,积累了海量的用户行为数据、视频信息和评论等数据资源。这些数据蕴含着丰富的商业价值,对于用户需求分析、个性化内容推荐及运营策略优化具有重要意义
1.2 设计内容与要求
1.2.1 设计目标
实现数据采集与清洗:通过Python爬虫技术从B站获取数据,并进行清洗和预处理,确保数据的质量和准确性。构建数据存储与管理模块:利用MySQL数据库存储和管理B站的用户信息、视频信息等关键数据,支持数据的增删改查操作。实现数据分析与挖掘功能:运用统计分析、文本挖掘和机器学习等技术对B站数据进行分析,发现用户偏好、热门话题等有价值的信息。提供可视化展示与报告生成功能:利用Echarts等可视化工具生成直观且具有信息密度的图表展示分析结果,并提供报告生成功能,方便用户理解和使用。确保系统的高可用性和可扩展性:设计合理的系统架构,确保系统能够高效处理大量数据请求,并具备良好的可扩展性,以适应未来数据量和用户需求的增长。
1.2.2 设计任务
系统需求分析:深入调研B站数据分析系统的功能需求和非功能性需求,明确系统需要实现的具体功能和性能指标。技术选型与架构设计:根据系统需求,选择合适的技术栈和架构设计方案,包括前端框架、后端框架、数据库管理系统和可视化工具等。系统开发与实现:按照系统设计方案,逐步实现数据采集、清洗、存储、分析和展示等模块的功能,并进行模块集成和测试。系统测试与优化:对系统进行全面的测试,包括功能测试、性能测试和安全测试等,根据测试结果对系统进行优化和改进。文档编写与成果展示:编写详细的系统设计文档和使用说明文档,准备系统演示材料,展示系统功能和性能。
2 系统总体设计方案
2.1 系统开发环境
基于Python的B站数据分析系统的设计与实现使用了多个开发工具,其中包括:
Xbuild:作为前端开发工具,Xbuild用于处理前端资源文件的构建、优化和部署,提高前端性能和用户体验。
MySQL:能存储和管理数据,对web系统中实现数据的增删改查,并为可视化提供数据支持,起到数据引擎的作用。
PyCharm:能高效地编写和调试Python代码,其强大的整合能力,能将不同的库融合一起,同时还支持错误定位和跟踪,方便开发者快速处理问题。
2.2 整体方案设计
整体方案设计是系统设计与实现的核心部分,它决定了系统的架构、功能模块以及各模块之间的交互方式。
系统架构:系统采用分层架构,包括数据层、业务处理层和应用层。数据层负责数据的采集、清洗和存储,使用Python爬虫技术从B站获取数据,并进行清洗和预处理后存入MySQL数据库。业务处理层负责数据的分析和挖掘,运用统计分析、文本挖掘和机器学习等技术对B站数据进行分析,发现用户偏好、热门话题等有价值的信息。应用层负责提供用户界面和交互功能,使用Flask框架搭建Web应用,通过Echarts生成直观且具有信息密度的图表展示分析结果。
模块交互:各模块之间通过接口进行交互,确保数据的流畅传递和处理。前端通过AJAX请求与后端进行交互,获取分析结果并展示在用户界面上。后端通过数据库查询和数据分析算法获取需要的数据,并将处理结果返回给前端。
2.3 主要技术简介
2.3.1 django框架技术
2.3.2 Request爬虫技术
2.3.3 MySQL技术
2.4 功能需求分析
基于Python的B站数据分析系统的设计与实现满足以下功能需求:
数据采集与清洗
数据存储与管理
数据分析与挖掘
可视化展示与报告生成
通过满足这些功能需求,基于Python的B站数据分析系统可以帮助用户深入理解B站数据,发现有价值的信息,并提供基于数据的决策支持和个性化服
![]() |
务。功能结构图如下图3.1所示。
2.4.1 用户用例图
这是该系统的用户用例图,如下3.2所示。
![]() |
图3.2 用户用例图
2.5 非功能性需求
2.5.1 可扩展性需求
2.5.2 易用性需求
2.5.3 响应时间需求
2.6 设计约束
2.6.1 技术可行性
Python生态系统:Python拥有强大而丰富的生态系统,提供了各种数据处理、分析和可视化的库和工具,如pandas、NumPy、scikit-learn、matplotlib等,能够满足数据分析系统的需求。
2.6.2 操作可行性
数据获取和处理:通过B站提供的API或爬虫技术,可以获取到视频信息、用户评论和弹幕等数据,并通过Python进行数据处理和清洗,以便后续的分析和展示。
3 系统设计
3.1 系统架构设计
基于Python的B站数据分析系统的设计与实现可以采用以下系统架构设计,包括数据层、业务处理层和应用层。
3.2 功能详细设计
本系统对照功能实现,用户模块也就是系统使用者拥有登录注册、用户管理、数据采集、数据展示、数据可视化等功能。
3.2.1 数据采集模块
B站数据分析系统实现的首要前提就是该数据采集模块,通过request爬虫技术,获取所需的数据并进行数据整理、清洗和储存,后续的所有数据展示的内容都来自于该模块。
3.2.2 注册登录模块
注册登录模块的功能结构图如图3.1所示,用户在使用该系统的一些功能之前需要登录。该系统的使用者都可以注册系统内的用户,成为系统内用户即可使用系统所有功能。
3.2.3 用户管理模块
用户管理模块的功能结构图如图3.2所示,用户可以对本用户信息进行修改和查看,同时能登录注册。
3.2.4 数据展示模块
数据展示模块功能图如图3.3所示,可以查询B站视频信息,包括视频标题、转发数、收藏数、播放量、博主信息等内容;可以查询B站弹幕信息,包括视频标题、弹幕内容等。
3.2.5 B站视频信息分析模块
该模块是对B站的数据进行可视化分析。B站视频信息模块功能图如图3.4所示
3.2.6 弹幕信息分析模块
该模块是对B站的视频弹幕数据进行可视化分析,包括弹幕数量分析和弹幕关键词分析。视频弹幕数据分析模块功能图如图4.6所示。
3.3 数据库设计
3.3.1 逻辑设计
根据该系统的数据库表的设计,将系统的数据种类归分为用户、B站视频弹幕、B站视频详细信息、lda主题4个实体。
3.3.2 物理设计
本数据分析系统数据逻辑结构设计如下:
表3.1 用户表(userinfo)
字段名 | 类型 | 长度 | 说明 |
id | int | 0 | 用户编号(主键、自增) |
username | varchar | 255 | 用户名 |
password | varchar | 255 | 密码 |
| text | 0 | 邮箱 |
content | text | 0 | 简介 |
address | text | 0 | 地址 |
phone | text | 0 | 手机号 |
注:这个表是用来保存用户详细信息的
表3.2 B站弹幕表
字段名 | 类型 | 长度 | 说明 |
cid | varchar | 255 | cid |
博主 | varchar | 255 | 博主 |
标题 | varchar | 255 | 标题 |
弹幕 | varchar | 255 | 弹幕 |
注:这个表是用来保存弹幕详细信息的
表3.3 B站视频信息表
字段名 | 类型 | 长度 | 说明 |
aid | varchar | 255 | aid |
bvid | varchar | 255 | bvid |
cid | varchar | 255 | cid |
时间 | varchar | 255 | 时间 |
mid | varchar | 255 | mid |
博主 | varchar | 255 | 博主 |
地区 | varchar | 255 | 地区 |
硬币数 | varchar | 255 | 硬币数 |
弹幕数 | varchar | 255 | 弹幕数 |
不喜欢 | varchar | 255 | 不喜欢 |
收藏 | varchar | 255 | 收藏 |
热度 | varchar | 255 | 热度 |
点赞 | varchar | 255 | 点赞 |
评论 | varchar | 255 | 评论 |
分享 | varchar | 255 | 分享 |
观看人数 | varchar | 255 | 观看人数 |
标题 | varchar | 255 | 标题 |
类别 | varchar | 255 | 类别 |
生日 | varchar | 255 | 生日 |
性别 | varchar | 255 | 性别 |
标签 | varchar | 255 | 标签 |
会员等级 | varchar | 255 | 会员等级 |
关注人数 | varchar | 255 | 关注人数 |
关注 | varchar | 255 | 关注 |
总观看 | varchar | 255 | 总观看 |
总点赞 | varchar | 255 | 总点赞 |
转换后的时间 | varchar | 255 | 转换后的时间 |
注:这个表是用来保存B站视频详细信息的
4 系统实现
4.1 数据采集实现
通过调用B站API接口,采集热门视频的详细信息并保存为CSV文件。为了防止被B站检测到是爬虫,通过设置请求头和指定URL格式,通过发送HTTP请求获取指定页面的数据。其中 pn 参数控制了请求的页面,ps 参数则表示每页返回的视频数量。循环爬取前100页的数据,每一页返回的视频信息存储在 列表中。对于每个视频,提取了如视频ID(aid)、BVID、CID、视频发布时间、博主ID、博主名称、视频发布地点、硬币数、弹幕数、点赞数、热度、评论数、分享数、观看人数、视频标题和分类等多个属性。提取出的信息被组织成一个列表,并通过 csv.writer 写入到 CSV 文件中,每一条数据按行追加保存。最后,通过设置延时和随机性,避免过于频繁的请求,从而减少被封禁的风险。采集好数据后导入数据库中,如下图所示:
图4.1 数据采集结果图
4.2 主要功能实现
4.2.1 用户模块
(1)用户注册:用户进入注册页面,填写所需的注册信息,包括用户名、密码等。系统会对输入的信息进行验证,确保符合规定的格式要求。之后,系统会将用户信息保存到数据库中,并生成唯一的用户ID。注册成功后,用户可以使用所创建的账号登录系统,享受视频信息采集和分析的功能。。用户注册页面如图4.2所示,用户登录页面如图4.3所示:
图4.2 用户注册页面图
图4.3 用户登录页面图
- 用户登录界面:用户进入登录页面,输入正确的用户名和密码。系统会对输入的信息进行验证,检查用户名和密码是否匹配。如果验证通过,用户将被授权登录系统,并跳转到主页或相应功能页面。如果验证失败,系统会提示用户重新输入正确的用户名和密码。登录成功后,用户可以使用系统提供的各种功能。如下图4.4所示
图4.4 系统首页页面图
- 用户管理页面:管理员登录系统后,进入用户管理界面。在该界面,管理员可以查看注册的信息,并进行增删改查等操作。管理员可以通过搜索功能查找编辑信息或重置密码。如下图4.5所示,密码修改如下图4.6所示。
图4.5 用户信息页面图
图4.6 密码修改页面图
4.2.2 数据展示模块
(1)B站热门视频数据展示:在这个板块,可以通过关键词搜索特定的信息,还可以分页显示。如下图4.7所示:
图4.7 B站热门视频数据展示图
- B站弹幕数据界面:在这个板块,可以通过关键词搜索特定的信息,还可以分页显示全部弹幕数据。如下图4.8所示。
图4.8 B站弹幕数据界面图
4.2.3 B站视频信息模块
(1)类别标签词云图和观看人数分析:在该页面,用户可以选择进行类别标签词云图和观看人数柱形图的分析。系统会从数据库中获取相应的数据,并根据用户选择生成对应的可视化图表。用户可以通过类别标签词云图来了解不同视频类别的热度和关注程度;通过观看人数柱形图来分析不同视频的受欢迎程度和观众数量。用户还可以进行交互操作,如筛选类别等,以更好地观察和分析数据。这样,用户可以利用该功能深入探索视频数据的特点和趋势。类别标签词云图和观看人数页面如图4.9所示:
图4.9 类别标签词云图和观看人数页面图
(2)不同类别点赞数分析:在该页面,用户可以选择进行不同类别点赞数分析柱形图的生成。系统会从数据库中获取相应的数据,并根据用户选择生成对应的柱形图。用户可以通过该柱形图来比较不同视频类别的点赞数量,了解哪些类别的视频更受欢迎。如下图4.10所示:
图4.10 不同类别点赞数分析图
4.2.4 B站弹幕信息模块
(1)弹幕数量分析:在该页面,用户可以选择进行弹幕数量分析的饼图和折线图生成。系统会从数据库中获取相应的弹幕数据,并根据用户选择生成对应的饼图和折线图。用户可以通过饼图了解不同类型弹幕的比例分布情况,以及占总弹幕数量的比例。折线图则展示了不同视频弹幕数量变化趋势,帮助用户观察弹幕活动的趋势。如图4.11所示:
图4.11 弹幕数量分析图
(2)弹幕关键词分析:在该页面,用户可以选择生成弹幕关键词分析的柱形图和树形图。系统会从数据库中获取相应的弹幕数据,并根据用户选择生成对应的可视化图表。柱形图展示了不同关键词出现的频率,帮助用户了解热门话题和关注点。树形图则呈现了关键词之间的层级关系,帮助用户探索弹幕内容的结构和相关性。如图4.12所示:
图4.12 弹幕关键词分析图