python基于大数据对B站热门视频的数据分析与数据研究系统
🍅 作者主页:Selina .a
🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
🍅文末获取源码联系🍅
目录
课题的提出
在互联网飞速发展的当下,视频平台竞争激烈,B站作为深受年轻人喜爱的视频社区,拥有庞大的用户群体和海量视频资源。对B站热门视频进行数据分析与研究,能为平台运营、内容创作提供有价值的参考,具有重要的现实意义。系统采用B/S开发模式,以Python为开发语言,利用Flask框架搭建Web应用,结合Hadoop实现对大规模数据的存储和处理。系统赋予管理员强大的管理功能,可对用户进行全面管理,包括注册信息审核、用户权限分配等。在热门视频管理方面,管理员可依据播放量、点赞数、评论数等多维度指标评估视频热度,动态更新热门视频榜单,还能进行视频分类管理和标签优化。
该系统的应用价值显著。对B站平台来说,通过数据分析优化推荐算法,提高用户体验,增强用户粘性,促进平台持续发展。对内容创作者而言,可根据系统分析结果了解用户喜好,调整创作方向,提升作品质量。从行业角度看,本系统为视频行业提供了有效的数据研究手段,有助于洞察行业发展趋势,推动整个视频行业的创新与进步。
功能角色描述
在需求分析阶段,首先需要对系统中涉及的角色及其功能进行深入分析。接着,基于这些角色和功能,对系统的功能模块进行全面的整合和优化。这一步骤的目的是明确各个角色的职责和他们需要完成的任务,然后根据这些信息来调整和完善系统的各个功能模块,以确保它们能够高效地满足用户的需求。本系统的总体功能模块如下图4.2所示。

系统界面展示
在未登录状态下,系统的首页允许用户查看系统首页、热门视频、公告信息等功能。首页如图5.1所示。

该模块主要用于用户注册,用户首次使用B站热门视频的数据分析与数据研究系统时需要先进行注册。用户可以通过填写相关信息完成在B站热门视频的数据分析与数据研究系统中的注册。如图5.2所示。

该模块主要用于用户登录,用户首次使用B站热门视频的数据分析与数据研究系统时需要先进行登录。用户可以通过填写相关信息完成在B站热门视频的数据分析与数据研究系统中的登录,如图5.3所示。

当用户点击热门视频时,可以在热门视频页面的查询栏中输入标题、类型、up主进行查询。可以查看标题、类型、封面、时长(秒)、up主、播放量、弹幕量、点赞等信息;还可以点击收藏等操作;如图5.4所示:

当用户点击公告信息时,可以在公告信息页面的查询栏中输入标题等进行查询,可以查看公告信息等信息;还可以进行点赞或者收藏等操作;如图5.5所示:

用户点击个人中心后,系统将跳转至个人中心页面,用户可在该页面修改并保存个人信息;还可以对修改密码、我的收藏等操作。如图5.6所示:

管理员通过登录页面填写账号、密码后,点击登录按钮以完成身份验证并进入系统,如图5.7示。

管理员登录系统后,可以访问首页、用户管理、热门视频管理、系统管理、个人中心等管理功能模块,并进行详细的操作。如图5.8所示。

当管理员点击用户时,可以在用户页面中输入用户名、姓名、性别进行查询。查询结果会显示用户的详细信息,管理员还可以执行添加或删除等操作。如图5.9所示:

当管理员点击热门视频时,可以在热门视频页面中输入标题、类型、up主进行查询。查询结果会显示标题、类型、封面、时长(秒)、up主、播放量、弹幕量、点赞、收藏、分享、评论数、投币等详细信息,管理员还可以执行添加、爬取数据、生成数据、数据清洗或删除等操作。如图5.10所示:

当管理员点击公告信息时,可以在公告信息页面中输入标题进行查询。查询结果会显示公告信息的详细信息,管理员还可以执行添加或删除等操作。如图5.11所示:

基于大数据对B站热门视频的数据分析与数据研究系统看板展示界面上方显示了基础数据统计,用户总数为8,热门视频总数达3515,让使用者对整体数据规模有宏观了解。可视化分析模块丰富多样:词云展示呈现出如“华农兄弟”等B站相关UP主或热门词汇,直观反映受关注的主体。播放量统计折线图、投币数量统计柱状图,分别展示播放量、弹幕量及投币数量情况,分析用户互动热度;点赞收藏分享统计折线图可呈现三者趋势,鼠标悬停能查看如点赞374,888、收藏51,068、分享23,140等具体数值。视频类型统计以饼图展示,MAD・AMV占47.79%等占比清晰明了;地区统计通过雷达图呈现不同地区相关数据。热门视频(播放量TOP10)榜单列出分区、UP主及各项数据,方便掌握热门内容。评论统计虽仅展示部分内容,但也可用于分析用户评论倾向和关注点。如图5.12示。

关键代码
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
专栏推荐
Spring Boot+Vue+CSS+JavaScript+HTML等技术项目专栏推荐
推荐项目
基于Node.js+Vue+MySQL的小型企业工资管理系统
基于Spring Boot+Android+MySQL的记录生活管理系统
源码获取
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
更多推荐
所有评论(0)