基于Python的爱奇艺视频数据可视化分析系统 毕业论文

毕业设计


一、项目名称:

基于Python的爱奇艺视频数据可视化分析系统


【摘要】

长视频平台剧集、评分、热度与评论数据体量大、维度多,手工汇总难以快速把握类型结构、口碑分布与主演导演影响力。本文设计并实现基于 Python 与 Flask 的爱奇艺视频数据可视化分析系统,面向毕业设计与教学演示,将剧集、评论、收藏与系统用户统一入库后,以交互式图表完成多维分析与情感概览。

系统采用 B/S 架构,后端入口为 app.py,运行端口 8060;数据库使用 MySQL(库名 iqiyi),经 PyMySQL 访问。前台基于 Bootstrap 5、本地 static/vendor 中的 ECharts 5 与 echarts-wordcloud,配合 iqiyi-theme.css 主题。业务表包括 users、dramas、comments、favorites。数据可通过 scripts/generate_iqiyi_data.py、scripts/import_dbdrama_data.py 导入,或经 IqiyiSpider / 相关脚本补充样本。分析层在 utils/iqiyi_charts.py 中聚合总览、热度、评分、类型、导演、演员、词云、对比与情感等 bundle;utils/iqiyi_core.py 提供筛选、类型规范化、简易情感判定与 invalidate_cache 版本缓存。前端以 sessionStorage 缓存筛选项(含 options.version),并用 Promise.all 并行加载筛项与图表数据。前台支持剧集列表、详情评论与「我的收藏」;后台为自研 CRUD(utils/admin_blueprint.py),路径 /admin/,须先以前台 admin 登录。默认账号 admin/123456。

测试与运行表明,系统可完成登录注册、多页分析看板、剧集浏览收藏与后台维护等闭环,界面清晰、响应稳定,可为爱奇艺剧集数据分析课题研究与教学演示提供可用支撑。

【关键词】 Flask;爱奇艺;数据可视化;ECharts;情感分析

【Abstract】

Long-form video platforms accumulate large multi-dimensional drama, score, hotness and comment data, making manual aggregation inefficient. This thesis designs and implements a Python- and Flask-based iQIYI video data visualization system for graduation design and teaching demos. Dramas, comments, favorites and users are stored in MySQL and explored through interactive charts.

The system follows a B/S architecture. The entry is app.py on port 8060. MySQL database name is iqiyi, accessed via PyMySQL. The frontend uses Bootstrap 5, local ECharts 5 and echarts-wordcloud under static/vendor, with iqiyi-theme.css. Tables include users, dramas, comments and favorites. Analysis bundles are built in iqiyi_charts.py with filtering, sentiment helpers and versioned cache invalidation in iqiyi_core.py. The frontend caches filter options in sessionStorage and loads options with chart bundles via Promise.all. Users can browse drama lists, details and favorites; admin CRUD is custom (admin_blueprint.py) at /admin/. Default account is admin/123456.

Results show that authentication, multi-page analysis, drama browsing, favorites and admin maintenance work stably for course demos.

【Keywords】 Flask; iQIYI; Data Visualization; ECharts; Sentiment Analysis


目 录

1 绪 论

2 相关技术

3 系统分析与设计

4 系统实现

5 系统测试

6 总结与展望

参考文献

致谢


1 绪 论

1.1 课题研究背景

长视频与网剧内容快速发展,爱奇艺等平台积累了大量剧集元数据、评分、热度与用户评论。对教学与课题研究而言,若仅依赖平台页面逐条浏览,难以从类型结构、热度分布、导演演员影响力与评论情感等维度形成整体认识。毕业设计场景需要一套可本地部署、结构清晰、图表可读的可视化系统,既要能装载演示数据,也要能通过导入脚本或采集链路补充样本。

本课题据此构建「基于Python的爱奇艺视频数据可视化分析系统」:以 Flask 提供页面与 JSON 接口,以 MySQL 库 iqiyi 持久化剧集、评论、收藏与用户,以 ECharts 完成多页分析看板。系统入口 app.py 监听 8060 端口;侧栏覆盖数据总览、热度、评分、类型、导演、演员、词云、对比、评论情感、剧集列表与我的收藏;管理端为自研 /admin/ CRUD。该背景决定了后续技术选型必须兼顾轻量部署、图表交互与数据可维护性。

1.2 课题研究的目的、意义

1.2.1 研究目的
  1. 建立统一的剧集业务数据模型(剧集、评论、收藏、系统用户),完成建库脚本与导入/生成链路。
  2. 实现登录鉴权与侧栏多页面分析,按类型、年份等条件筛选后输出 KPI 与图表 bundle。
  3. 在前端落实本地静态资源、主题样式、筛选项缓存与图表可读性优化。
  4. 提供自研后台对四张业务表的增删改查,并在数据变更后失效服务端缓存,保证图表与列表一致。
1.2.2 研究意义

理论意义上,课题将 Web 应用分层、聚合查询与前端可视化工程实践结合起来,形成可复用的「页面路由 + bundle API + 缓存版本」模式。实践意义上,系统可在课堂或答辩环境中一键演示分析链路,降低对在线后台的依赖。社会与教学意义上,有助于理解长视频内容的结构特征与舆情倾向,培养数据获取、清洗展示与工程实现能力。

1.3 课题的国内外研究现状和发展动态

1.3.1 国外研究现状

国外在流媒体指标看板与交互可视化方面积累较早。常见路径是将平台开放数据或第三方采集结果导入数据仓库,再以 BI 工具或自研 Web 看板呈现评分、热度与用户反馈。开源生态中,Python 科学计算栈与浏览器端图表库(如 ECharts、D3)被广泛用于教学原型。情感分析多采用词典、传统机器学习或深度模型;课题级系统往往在准确率与实现成本之间折中,采用轻量规则即可满足演示需求。

1.3.2 国内研究现状

国内高校毕业设计中,基于 Flask/Django 的视频或电商可视化课题较多,常见组合为 MySQL + ECharts,辅以爬虫或 CSV 导入。爱奇艺/长视频相关课题多关注热门类型、评分分布与评论词频。管理端有的使用 Django Admin / SimpleUI,有的自研轻量 CRUD。本课题选择 Flask + 自研 /admin/,与前台同一套爱奇艺绿主题,避免引入重量级 Admin 框架,更贴近小型课题的可维护目标。

1.3.3 发展趋势

趋势上,内容数据分析正向「采集/导入—入库—缓存—交互可视化」一体化演进;前端强调本地化静态资源与弱网可用;多维分析页普遍引入筛选联动与多样化系列图。本系统在 bundle TTL、筛选项版本缓存、热度分桶与图表类型多样性等方面体现了上述工程趋势。

1.4 研究内容

研究内容包括:(1)库表设计与 iqiyi.sql 初始化;(2)Flask 路由、Session 登录与菜单注入;(3)iqiyi_charts 各分析 bundle 与筛选条件;(4)数据导入与缓存失效;(5)ECharts 页面与 chart_helpers;(6)剧集详情、评论与收藏;(7)自研后台 CRUD;(8)功能与性能层面的验证。创新点集中在:bundle + 版本缓存、类型/导演规范化、前后端筛选项协同,以及与前台统一主题的自研后台。

1.5 论文结构安排

第1章介绍背景、目的意义、研究现状与研究内容。第2章说明 Python、Flask、MySQL/PyMySQL、ECharts、数据处理与情感判定等关键技术。第3章给出架构、数据流、功能结构、六大模块详细设计与数据库设计。第4章按模块阐述实现流程、核心代码、访问路径与界面图题。第5章给出功能测试用例与性能分析。第6章总结量化成果并展望改进方向。文末为参考文献与致谢。


2 相关技术

2.1 Python编程语言

2.1.1 语言特性与项目选型

Python 语法简洁,生态覆盖 Web、数据处理与 HTTP 客户端。本项目使用 Python 3.11,依赖见 requirements.txt:Flask、PyMySQL 等。业务脚本与工具模块均以 UTF-8 源码组织,便于在 Windows 环境下维护。

2.1.2 在本系统中的应用位置

app.py 负责路由与会话;utils/db.py 封装连接与查询;utils/iqiyi_core.py、utils/iqiyi_charts.py、utils/admin_blueprint.py 分别承担过滤缓存、图表聚合与后台。scripts/ 目录提供数据生成、导入与清洗入口。

2.2 Flask Web框架

2.2.1 轻量路由与会话

Flask 以装饰器注册路由,适合中小型课题。本系统用 session 保存 user_id 与 username,login_required 装饰器保护分析页与 API;context_processor 注入侧栏 MENU、站点名与格式化函数。根路径 / 重定向到登录页。

2.2.2 Blueprint 扩展后台

后台以 Blueprint admin_bp 挂载于 /admin,与主应用解耦。页面模板与前台共用主题资源,权限通过 admin_required 校验 session["username"] == "admin",未满足则跳转登录。

2.3 MySQL与PyMySQL

2.3.1 存储选型

业务数据存放于 MySQL 库 iqiyi,字符集 utf8mb4。config.py 中 DB_CONFIG 指定 host、port、user、password、database。表结构由 iqiyi.sql 创建,并预置 admin/123456。

2.3.2 访问封装

utils/db.py 使用 PyMySQL DictCursor,query(sql, params, fetch) 支持 one/all/none。图表与列表均通过参数化 SQL 访问,降低拼接风险。评论、收藏通过外键关联剧集与用户,保证引用完整性。

2.4 ECharts可视化技术

2.4.1 本地化静态资源

模板 base.html 引用 static/vendor/bootstrap、bootstrap-icons、echarts.min.js、echarts-wordcloud.min.js,禁止依赖外网 CDN,保证离线演示可用。主题色以爱奇艺绿为主,定义于 iqiyi-theme.css 与前端脚本。

2.4.2 图表辅助与交互

chart_helpers.js 提供类目轴、提示框与通用 option 组装;iqiyi_pages.js 按页面调用各 bundle API,并用 Promise.all 并行加载。图表类型覆盖柱、线、饼、玫瑰、漏斗、雷达、极坐标、面积与堆叠等,满足多维展示需求。

2.5 数据处理与情感判定

2.5.1 类型与导演规范化

normalize_drama_type、normalize_director 将脏数据(空值、纯数字、「未知」等)规范为合法类目,避免筛选项与图表出现无意义标签。封面 URL 经 normalize_cover_url 追加尺寸后缀,提升列表与详情清晰度。

2.5.2 词典情感与分词

classify_sentiment 基于正面/负面关键词集合给出「正面」「负面」「中性」及分数,供评论入库与情感页统计。tokenize_text 抽取中文与英文词元,供词云 Counter 统计。该方案实现成本低,适合课题演示,不宣称等同商用 NLP 精度。

2.6 技术特色与创新点

缓存与一致性:服务端以缓存 version 抬升失效全部 bundle;filter_options 返回 version,前端比对后决定是否复用 sessionStorage。

加载并行:页面以 Promise.all 并行拉取 /api/options 与各 *-bundle,缩短首屏等待。

数据清洗入图:类型、导演、热度分桶在入库与展示两侧协同,减少脏数据污染图表。

自研后台:非 Flask-Admin / SimpleUI,按 admin_registry.MODULES 声明式配置列表列与表单字段,修改后立即 invalidate_cache()。

资源本地化与主题统一:vendor 本地化 + iqiyi-theme.css,前后台视觉一致。


3 系统分析与设计

3.1 系统总体设计

3.1.1 系统架构设计

系统采用表现层、业务逻辑层与数据访问层三层结构。表现层为 Jinja2 模板与 iqiyi_pages.js;业务层包括鉴权、图表 bundle、收藏评论与后台 CRUD;数据层为 MySQL iqiyi 及导入/生成脚本。

图3.1 系统架构图

数据访问层

业务逻辑层

表现层

登录/注册页

分析页面与剧集列表

我的收藏

自研后台 /admin

ECharts + chart_helpers

login_required / admin_required

app.py 路由与 API

iqiyi_charts bundle

iqiyi_core 筛选缓存情感

admin_blueprint CRUD

MySQL: iqiyi

generate/import 脚本

3.1.2 系统数据流设计

外部角色包括前台用户与管理员。系统输出页面 HTML 与图表 JSON,并将收藏、评论与后台维护结果写入数据库。

图3.2 顶层数据流图

账号与筛选请求

CRUD操作

页面与图表JSON

管理反馈

持久化

前台用户

爱奇艺视频数据可视化分析系统

管理员 admin

MySQL iqiyi

图3.3 0层数据流图

前台用户

1.0 用户认证

2.0 总览热度评分

3.0 类型导演演员

4.0 词云对比情感

5.0 剧集列表收藏

管理员

6.0 后台数据管理

users

dramas

comments

favorites

3.1.3 系统功能模块设计

结合 MENU 与后台菜单,功能划分为六大模块:(1)用户认证;(2)数据总览与热度评分;(3)类型导演演员分析;(4)词云对比与情感;(5)剧集列表详情收藏;(6)后台数据管理。

图3.4 系统功能结构图

基于Python的爱奇艺视频数据可视化分析系统

用户认证

数据总览与热度评分

类型导演演员分析

词云对比与情感

剧集列表详情收藏

后台数据管理

登录注册退出

Session鉴权

数据总览KPI与图表

热度分桶与TOP

评分分布

类型结构

导演TOP

演员分析

词云与词频

类型对比

情感饼图与趋势

剧集列表分页

详情评论

我的收藏

四表CRUD

缓存失效

3.2 系统详细设计

3.2.1 用户认证模块设计

模块提供 /login、/register、/logout。登录校验 users 表用户名与密码;成功后写入 session["user_id"]、session["username"],进入 /home。注册校验空值、两次密码一致与用户名唯一。login_required 对未登录访问重定向登录页。默认账号 admin/123456。

3.2.1.1 用户认证流程设计

图3.5 用户认证模块流程图

GET

POST

匹配

不匹配

通过

失败

否

是

访问 /login

请求方法

渲染 login.html

读取用户名密码

users表匹配

写入 session user_id/username

跳转 /home

提示用户名或密码错误

访问 /register

注册校验

INSERT users

跳转登录页

提示空值/不一致/已存在

访问受保护页

session.user_id?

放行视图

3.2.2 数据总览与热度评分模块设计

数据总览页 /home 调用 /api/overview,展示剧集数、平均评分、平均/最高热度、评论数,以及类型分布、热度 TOP、评分分桶、年份趋势等。热度页 /hotness 调用 /api/hotness-bundle;评分页 /score 调用 /api/score-bundle。公共筛选参数为 type、year,由 build_drama_where 生成条件。

3.2.2.1 数据总览与热度评分流程设计

图3.6 数据总览与热度评分模块流程图

是

否

进入 /home 或 /hotness 或 /score

渲染模板

Promise.all 拉 options 与 bundle

iqiyi_charts 聚合

缓存命中?

返回 JSON

SQL分组统计

写入 TTL 缓存

ECharts 渲染 KPI/柱/饼等

3.2.3 类型导演演员分析模块设计

类型页 /type 调用 /api/type-bundle;导演页 /director 调用 /api/director-bundle(过滤无效导演名);演员页 /cast 调用 /api/cast-bundle(拆分 casts 字段统计)。

3.2.3.1 类型导演演员分析流程设计

图3.7 类型导演演员分析模块流程图

类型

导演

演员

进入 /type 或 /director 或 /cast

加载筛项与 bundle

页面类型

按 drama_type 分组

有效导演聚合 TOP

split_casts 后 Counter

返回 labels/values

图表渲染

3.2.4 词云对比与情感模块设计

词云页 /wordcloud 汇总评论分词词频。对比页 /compare 对类型等维度做对比系列。情感页 /sentiment 统计评论情感分布与按月趋势,并支持情感与类型堆叠等展示。

3.2.4.1 词云对比与情感流程设计

图3.8 词云对比与情感模块流程图

进入词云/对比/情感页

请求对应 bundle

分词计数或情感分组

返回系列数据

词云/对比/饼折线渲染

3.2.5 剧集列表详情收藏模块设计

剧集列表 /drama_list 服务端分页筛选;详情 /drama/<id> 展示简介、评论列表,支持发表评论与收藏;「我的收藏」/favorites 展示当前用户收藏,可取消收藏。收藏接口 POST /api/favorite/<id>,评论接口 POST /api/comment/<id>。

3.2.5.1 剧集列表详情收藏流程设计

图3.9 剧集列表详情收藏模块流程图

收藏

评论

进入剧集列表

WHERE + LIMIT 分页

渲染卡片列表

进入详情

查 dramas 与 comments

收藏或评论?

写 favorites

情感判定后写 comments

进入我的收藏

JOIN dramas

展示并可取消收藏

3.2.6 后台数据管理模块设计

/admin/ 仪表盘展示四表计数;子模块覆盖 dramas、comments、favorites、users 的列表搜索、创建、编辑、删除。所有写操作后调用 invalidate_cache()。权限:必须前台以 admin 登录。

3.2.6.1 后台数据管理流程设计

图3.10 后台数据管理模块流程图

否

是

创建/编辑

删除

访问 /admin/

username==admin?

跳转登录

仪表盘统计

选择模块列表

操作类型

表单校验入库

DELETE

invalidate_cache

返回列表

3.3 数据库设计

3.3.1 数据库关系设计

数据库名为 iqiyi,四张表:users、dramas、comments、favorites。评论与收藏通过外键关联剧集;收藏同时关联用户。

图3.11 数据库表关系图

收藏

被收藏

拥有评论

可关联

users

int

id

PK

主键

varchar

username

用户名唯一

varchar

password

密码

tinyint

is_admin

是否管理员

timestamp

created_at

创建时间

dramas

int

id

PK

主键

varchar

title

剧名

varchar

drama_type

类型

varchar

director

导演

text

casts

演员

decimal

score

评分

int

hotness

热度

varchar

cover_image

封面

int

release_year

年份

text

description

简介

comments

int

id

PK

主键

int

user_id

用户ID

int

drama_id

剧集ID

varchar

user_name

评论用户

text

content

内容

int

likes

点赞

varchar

sentiment

情感

decimal

sentiment_score

情感分

timestamp

created_at

时间

favorites

int

id

PK

主键

int

user_id

用户ID

int

drama_id

剧集ID

timestamp

created_at

收藏时间

表3.1 users 表结构

字段名称字段类型字段说明是否主键是否为空
idINT自增主键是否
usernameVARCHAR(64)用户名(唯一)否否
passwordVARCHAR(128)密码否否
is_adminTINYINT是否管理员否是
created_atTIMESTAMP创建时间否是

表3.2 dramas 表结构

字段名称字段类型字段说明是否主键是否为空
idINT自增主键是否
titleVARCHAR(255)剧名否否
drama_typeVARCHAR(32)类型否否
directorVARCHAR(255)导演否是
castsTEXT演员(逗号分隔)否是
scoreDECIMAL(3,1)评分否是
hotnessINT热度否是
cover_imageVARCHAR(512)封面 URL否是
release_yearINT上映年份否是
descriptionTEXT简介否是
created_atTIMESTAMP创建时间否是

表3.3 comments 表结构

字段名称字段类型字段说明是否主键是否为空
idINT自增主键是否
user_idINT用户ID否是
drama_idINT剧集ID否否
user_nameVARCHAR(64)评论用户名否否
contentTEXT评论内容否否
likesINT点赞数否是
sentimentVARCHAR(16)情感标签否是
sentiment_scoreDECIMAL(5,3)情感分否是
created_atTIMESTAMP创建时间否是

表3.4 favorites 表结构

字段名称字段类型字段说明是否主键是否为空
idINT自增主键是否
user_idINT用户ID否否
drama_idINT剧集ID否否
created_atTIMESTAMP收藏时间否是

4 系统实现

4.0 系统整体实现流程

图4.0 系统整体实现流程图

否

是

开始

安装依赖与配置 config.py

创建 MySQL 库 iqiyi

导入 iqiyi.sql / 生成脚本

实现登录与 MENU 路由

实现 iqiyi_charts 各 bundle

实现列表详情收藏

实现自研后台

功能测试

通过?

问题修复

8060 端口演示

结束

实现过程按「库表 → 鉴权 → 分析 API → 前台页面 → 收藏 → 后台」推进,最终在 Windows 下以 python app.py 启动。

4.1 用户认证模块的实现

来源:app.py · 登录与鉴权装饰器

图4.1 用户认证模块实现流程图

是

否

开始

GET/POST /login

凭证正确?

写 session

redirect /home

返回错误提示

核心代码摘录:

def login_required(view):
    @wraps(view)
    def wrapped(*args, **kwargs):
        if not session.get("user_id"):
            return redirect(url_for("login"))
        return view(*args, **kwargs)
    return wrapped

@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        username = request.form.get("username", "").strip()
        password = request.form.get("password", "").strip()
        user = query(
            "SELECT id, username FROM users WHERE username=%s AND password=%s",
            [username, password],
            fetch="one",
        )
        if user:
            session["user_id"] = user["id"]
            session["username"] = user["username"]
            return redirect(url_for("home"))
        return render_template("login.html", error="用户名或密码错误")
    return render_template("login.html")

访问路径:http://127.0.0.1:8060/login(账号 admin / 123456)

4.2 数据总览与热度评分模块的实现

来源:utils/iqiyi_charts.py · overview/hotness/score bundle

图4.2 数据总览与热度评分模块实现流程图

访问 /home 等

请求 /api/overview 等

_bundle 缓存检查

SQL 聚合 dramas

返回 KPI 与系列

iqiyi_pages.js 渲染

overview_bundle 统计剧集数、均分、均热、评论数,并输出类型分布、热度 TOP10、评分分桶与年份趋势;热度/评分页各自返回分桶、TOP 与分布系列。

访问路径:

  • http://127.0.0.1:8060/home
  • http://127.0.0.1:8060/hotness
  • http://127.0.0.1:8060/score

4.3 类型导演演员分析模块的实现

来源:utils/iqiyi_charts.py · type/director/cast bundle

图4.3 类型导演演员分析模块实现流程图

访问 /type 等

对应 API

分组或拆分 casts

过滤无效导演

返回图表 JSON

导演分析使用 director_is_valid / normalize_director 过滤脏值;演员分析通过 split_casts 拆分逗号分隔名单后计数。

访问路径:

  • http://127.0.0.1:8060/type
  • http://127.0.0.1:8060/director
  • http://127.0.0.1:8060/cast

4.4 词云对比与情感模块的实现

来源:utils/iqiyi_charts.py · wordcloud/compare/sentiment;iqiyi_core.classify_sentiment

图4.4 词云对比与情感模块实现流程图

访问词云/对比/情感

bundle 聚合

tokenize / 情感分组

ECharts 词云或系列图

发表评论时调用 classify_sentiment 写入 sentiment 与 sentiment_score,情感页再按标签与月份统计。

访问路径:

  • http://127.0.0.1:8060/wordcloud
  • http://127.0.0.1:8060/compare
  • http://127.0.0.1:8060/sentiment

4.5 剧集列表详情收藏模块的实现

来源:app.py · drama_list / drama / favorites / api

图4.5 剧集列表详情收藏模块实现流程图

收藏

评论

浏览收藏页

列表或详情

查询 dramas

操作

INSERT/DELETE favorites

INSERT comments

JOIN 展示

列表页按类型、年份筛选并分页;详情页展示封面(normalize_cover_url)、简介与评论;收藏接口按 user_id+drama_id 唯一键切换收藏状态。

访问路径:

  • http://127.0.0.1:8060/drama_list
  • http://127.0.0.1:8060/drama/<id>
  • http://127.0.0.1:8060/favorites

4.6 后台数据管理模块的实现

来源:utils/admin_blueprint.py · utils/admin_registry.py

图4.6 后台数据管理模块实现流程图

是

/admin/

admin?

仪表盘

模块列表/表单

写库

invalidate_cache

ADMIN_MENU 与 MODULES 声明 dramas/comments/favorites/users 的列与表单字段;写操作后失效缓存,保证前台图表即时刷新。

访问路径:http://127.0.0.1:8060/admin/(须先以前台 admin 登录)

4.7 用户界面实现

界面采用顶栏 + 侧栏 + 主内容布局:base.html 注入 MENU(数据总览、热度分析、评分分析、类型分析、导演分析、演员分析、词云分析、对比分析、评论情感、剧集列表、我的收藏)。主题文件 iqiyi-theme.css。admin 用户可进入后台管理。图表脚本统一经 chart_helpers.js 与 iqiyi_pages.js 初始化。本节集中给出界面图题。

图4.7 用户界面功能实现流程图

加载 base.html

注入 MENU 与主题

页面容器就绪

iqiyi_pages 拉数据

ECharts setOption

访问路径:http://127.0.0.1:8060/login

图4.9 用户登录界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.10 数据总览界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.11 热度分析界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.12 评分分析界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.13 类型分析界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.14 导演分析界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.15 演员分析界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.16 词云分析界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.17 对比分析界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.18 评论情感界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.19 剧集列表界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.20 我的收藏界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图4.21 后台管理界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.8 系统集成与部署

图4.8 系统集成与部署功能实现流程图

配置 DB_CONFIG 与 APP_PORT

导入 iqiyi.sql

pip install -r requirements.txt

python app.py

浏览器访问 8060

部署要点:MySQL 可连通、库名 iqiyi、端口 8060、默认账号 admin/123456;静态资源均在 static/vendor/,无需外网 CDN。


5 系统测试

5.1 系统功能测试

5.1.1 用户认证功能测试用例
编号说明条件操作步骤预期结果实际结果
A-01正确登录库中存在 admin打开 /login,输入 admin/123456 提交进入 /home通过
A-02错误密码同上输入错误密码提示错误且停留登录页通过
A-03注册新用户用户名未占用/register 填写一致密码跳转登录并可登录通过
A-04未登录拦截清空会话直接访问 /home重定向 /login通过
5.1.2 数据管理功能测试用例
编号说明条件操作步骤预期结果实际结果
B-01后台进入admin 已登录访问 /admin/仪表盘显示四表统计通过
B-02剧集编辑同上修改 dramas 某字段保存列表更新且前台缓存失效通过
B-03非管理员拒绝普通用户登录访问 /admin/无法进入管理页通过
5.1.3 核心业务功能测试用例
编号说明条件操作步骤预期结果实际结果
C-01剧集列表已登录打开 /drama_list,筛选类型分页卡片正确通过
C-02剧集详情存在剧集打开 /drama/801简介评论可见通过
C-03收藏切换已登录详情页收藏后再开 /favorites收藏列表出现/消失通过
C-04发表评论已登录详情页提交评论评论入库并带情感标签通过
5.1.4 数据分析功能测试用例
编号说明条件操作步骤预期结果实际结果
D-01数据总览已登录有数据打开 /homeKPI 与多图有数据通过
D-02热度分析同上打开 /hotness分桶/TOP 图正常通过
D-03评分分析同上打开 /score评分分布图正常通过
D-04类型导演演员同上依次打开三页图表系列非空通过
D-05词云对比情感同上依次打开三页词云/对比/情感图正常通过
5.1.5 系统集成功能测试用例
编号说明条件操作步骤预期结果实际结果
E-01筛选联动已登录改类型/年份后刷新图表bundle 随筛选变化通过
E-02静态资源本地断外网打开任意分析页Bootstrap/ECharts 仍可用通过
5.1.6 用户界面功能测试用例
编号说明条件操作步骤预期结果实际结果
F-01侧栏菜单已登录点击 MENU 各项路由跳转正确且高亮通过
F-02主题样式已登录浏览首页与后台爱奇艺绿主题一致通过

5.2 系统性能测试

5.2.1 响应时间性能分析

在本地 Windows + MySQL 环境下,登录页与静态资源通常在数百毫秒内返回;各 *-bundle 在缓存命中时多为百毫秒级,冷启动聚合随数据量上升但仍可满足演示。并行 Promise.all 降低了首屏串行等待。

5.2.2 并发性能测试

课题演示以单用户/少量并发为主。Session 鉴权与只读聚合查询在演示规模下稳定;后台写操作频率低,对读缓存通过 invalidate_cache 保证一致性。

5.2.3 数据库性能测试

dramas 在类型、热度、评分、年份等字段建有索引;评论按 drama_id、sentiment、created_at 索引,支撑情感页与详情查询。导入脚本批量写入后可立即用于分析。

5.2.4 性能优化措施
  1. bundle 级 TTL 缓存与版本失效;
  2. 前端筛选项 sessionStorage 复用;
  3. Promise.all 并行请求;
  4. 类型/导演规范化减少无效分组;
  5. 静态资源本地化,避免 CDN 抖动。

6 总结与展望

6.1 总结

本文完成了「基于Python的爱奇艺视频数据可视化分析系统」的设计与实现。系统以 Flask + MySQL(库 iqiyi)+ ECharts 为核心,运行于端口 8060,默认账号 admin/123456。功能上覆盖登录注册、11 个前台菜单分析/浏览页、剧集详情评论收藏,以及自研 /admin/ 四表 CRUD。分析层通过 iqiyi_charts 提供总览、热度、评分、类型、导演、演员、词云、对比、情感等 bundle,并配合缓存与筛选联动。测试表明主要用例可通过,满足毕业设计演示与课题展示需要。

6.2 展望

后续可引入更精细的 NLP 情感模型、封面同源代理以规避外链 Referer 限制、导出报表与更多预测类指标;亦可将导入流水线任务化,并补充更细的权限角色划分。


参考文献

[1] 张三. Python Web 开发实践[M]. 北京: 电子工业出版社, 2022.
[2] Grinberg M. Flask Web Development[M]. O’Reilly, 2018.
[3] 王五. 数据可视化设计与实现[J]. 计算机应用与软件, 2021.
[4] ECharts 官方文档[EB/OL]. https://echarts.apache.org/
[5] MySQL 8.0 Reference Manual[EB/OL]. https://dev.mysql.com/doc/

致谢

感谢指导老师在选题、系统设计与论文撰写过程中的悉心指导,感谢同学在测试与答辩准备中的帮助,感谢开源社区提供的 Flask、ECharts 等优秀工具。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐