基于Python的爱奇艺视频数据可视化分析系统
基于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
目 录
- 4.0 系统整体实现流程
- 4.1 用户认证模块的实现
- 4.2 数据总览与热度评分模块的实现
- 4.3 类型导演演员分析模块的实现
- 4.4 词云对比与情感模块的实现
- 4.5 剧集列表详情收藏模块的实现
- 4.6 后台数据管理模块的实现
- 4.7 用户界面实现
- 4.8 系统集成与部署
1 绪 论
1.1 课题研究背景
长视频与网剧内容快速发展,爱奇艺等平台积累了大量剧集元数据、评分、热度与用户评论。对教学与课题研究而言,若仅依赖平台页面逐条浏览,难以从类型结构、热度分布、导演演员影响力与评论情感等维度形成整体认识。毕业设计场景需要一套可本地部署、结构清晰、图表可读的可视化系统,既要能装载演示数据,也要能通过导入脚本或采集链路补充样本。
本课题据此构建「基于Python的爱奇艺视频数据可视化分析系统」:以 Flask 提供页面与 JSON 接口,以 MySQL 库 iqiyi 持久化剧集、评论、收藏与用户,以 ECharts 完成多页分析看板。系统入口 app.py 监听 8060 端口;侧栏覆盖数据总览、热度、评分、类型、导演、演员、词云、对比、评论情感、剧集列表与我的收藏;管理端为自研 /admin/ CRUD。该背景决定了后续技术选型必须兼顾轻量部署、图表交互与数据可维护性。
1.2 课题研究的目的、意义
1.2.1 研究目的
- 建立统一的剧集业务数据模型(剧集、评论、收藏、系统用户),完成建库脚本与导入/生成链路。
- 实现登录鉴权与侧栏多页面分析,按类型、年份等条件筛选后输出 KPI 与图表 bundle。
- 在前端落实本地静态资源、主题样式、筛选项缓存与图表可读性优化。
- 提供自研后台对四张业务表的增删改查,并在数据变更后失效服务端缓存,保证图表与列表一致。
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 系统架构图
3.1.2 系统数据流设计
外部角色包括前台用户与管理员。系统输出页面 HTML 与图表 JSON,并将收藏、评论与后台维护结果写入数据库。
图3.2 顶层数据流图
图3.3 0层数据流图
3.1.3 系统功能模块设计
结合 MENU 与后台菜单,功能划分为六大模块:(1)用户认证;(2)数据总览与热度评分;(3)类型导演演员分析;(4)词云对比与情感;(5)剧集列表详情收藏;(6)后台数据管理。
图3.4 系统功能结构图
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 用户认证模块流程图
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 数据总览与热度评分模块流程图
3.2.3 类型导演演员分析模块设计
类型页 /type 调用 /api/type-bundle;导演页 /director 调用 /api/director-bundle(过滤无效导演名);演员页 /cast 调用 /api/cast-bundle(拆分 casts 字段统计)。
3.2.3.1 类型导演演员分析流程设计
图3.7 类型导演演员分析模块流程图
3.2.4 词云对比与情感模块设计
词云页 /wordcloud 汇总评论分词词频。对比页 /compare 对类型等维度做对比系列。情感页 /sentiment 统计评论情感分布与按月趋势,并支持情感与类型堆叠等展示。
3.2.4.1 词云对比与情感流程设计
图3.8 词云对比与情感模块流程图
3.2.5 剧集列表详情收藏模块设计
剧集列表 /drama_list 服务端分页筛选;详情 /drama/<id> 展示简介、评论列表,支持发表评论与收藏;「我的收藏」/favorites 展示当前用户收藏,可取消收藏。收藏接口 POST /api/favorite/<id>,评论接口 POST /api/comment/<id>。
3.2.5.1 剧集列表详情收藏流程设计
图3.9 剧集列表详情收藏模块流程图
3.2.6 后台数据管理模块设计
/admin/ 仪表盘展示四表计数;子模块覆盖 dramas、comments、favorites、users 的列表搜索、创建、编辑、删除。所有写操作后调用 invalidate_cache()。权限:必须前台以 admin 登录。
3.2.6.1 后台数据管理流程设计
图3.10 后台数据管理模块流程图
3.3 数据库设计
3.3.1 数据库关系设计
数据库名为 iqiyi,四张表:users、dramas、comments、favorites。评论与收藏通过外键关联剧集;收藏同时关联用户。
图3.11 数据库表关系图
表3.1 users 表结构
| 字段名称 | 字段类型 | 字段说明 | 是否主键 | 是否为空 |
|---|---|---|---|---|
| id | INT | 自增主键 | 是 | 否 |
| username | VARCHAR(64) | 用户名(唯一) | 否 | 否 |
| password | VARCHAR(128) | 密码 | 否 | 否 |
| is_admin | TINYINT | 是否管理员 | 否 | 是 |
| created_at | TIMESTAMP | 创建时间 | 否 | 是 |
表3.2 dramas 表结构
| 字段名称 | 字段类型 | 字段说明 | 是否主键 | 是否为空 |
|---|---|---|---|---|
| id | INT | 自增主键 | 是 | 否 |
| title | VARCHAR(255) | 剧名 | 否 | 否 |
| drama_type | VARCHAR(32) | 类型 | 否 | 否 |
| director | VARCHAR(255) | 导演 | 否 | 是 |
| casts | TEXT | 演员(逗号分隔) | 否 | 是 |
| score | DECIMAL(3,1) | 评分 | 否 | 是 |
| hotness | INT | 热度 | 否 | 是 |
| cover_image | VARCHAR(512) | 封面 URL | 否 | 是 |
| release_year | INT | 上映年份 | 否 | 是 |
| description | TEXT | 简介 | 否 | 是 |
| created_at | TIMESTAMP | 创建时间 | 否 | 是 |
表3.3 comments 表结构
| 字段名称 | 字段类型 | 字段说明 | 是否主键 | 是否为空 |
|---|---|---|---|---|
| id | INT | 自增主键 | 是 | 否 |
| user_id | INT | 用户ID | 否 | 是 |
| drama_id | INT | 剧集ID | 否 | 否 |
| user_name | VARCHAR(64) | 评论用户名 | 否 | 否 |
| content | TEXT | 评论内容 | 否 | 否 |
| likes | INT | 点赞数 | 否 | 是 |
| sentiment | VARCHAR(16) | 情感标签 | 否 | 是 |
| sentiment_score | DECIMAL(5,3) | 情感分 | 否 | 是 |
| created_at | TIMESTAMP | 创建时间 | 否 | 是 |
表3.4 favorites 表结构
| 字段名称 | 字段类型 | 字段说明 | 是否主键 | 是否为空 |
|---|---|---|---|---|
| id | INT | 自增主键 | 是 | 否 |
| user_id | INT | 用户ID | 否 | 否 |
| drama_id | INT | 剧集ID | 否 | 否 |
| created_at | TIMESTAMP | 收藏时间 | 否 | 是 |
4 系统实现
4.0 系统整体实现流程
图4.0 系统整体实现流程图
实现过程按「库表 → 鉴权 → 分析 API → 前台页面 → 收藏 → 后台」推进,最终在 Windows 下以 python app.py 启动。
4.1 用户认证模块的实现
来源:app.py · 登录与鉴权装饰器
图4.1 用户认证模块实现流程图
核心代码摘录:
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 数据总览与热度评分模块实现流程图
overview_bundle 统计剧集数、均分、均热、评论数,并输出类型分布、热度 TOP10、评分分桶与年份趋势;热度/评分页各自返回分桶、TOP 与分布系列。
访问路径:
http://127.0.0.1:8060/homehttp://127.0.0.1:8060/hotnesshttp://127.0.0.1:8060/score
4.3 类型导演演员分析模块的实现
来源:utils/iqiyi_charts.py · type/director/cast bundle
图4.3 类型导演演员分析模块实现流程图
导演分析使用 director_is_valid / normalize_director 过滤脏值;演员分析通过 split_casts 拆分逗号分隔名单后计数。
访问路径:
http://127.0.0.1:8060/typehttp://127.0.0.1:8060/directorhttp://127.0.0.1:8060/cast
4.4 词云对比与情感模块的实现
来源:utils/iqiyi_charts.py · wordcloud/compare/sentiment;iqiyi_core.classify_sentiment
图4.4 词云对比与情感模块实现流程图
发表评论时调用 classify_sentiment 写入 sentiment 与 sentiment_score,情感页再按标签与月份统计。
访问路径:
http://127.0.0.1:8060/wordcloudhttp://127.0.0.1:8060/comparehttp://127.0.0.1:8060/sentiment
4.5 剧集列表详情收藏模块的实现
来源:app.py · drama_list / drama / favorites / api
图4.5 剧集列表详情收藏模块实现流程图
列表页按类型、年份筛选并分页;详情页展示封面(normalize_cover_url)、简介与评论;收藏接口按 user_id+drama_id 唯一键切换收藏状态。
访问路径:
http://127.0.0.1:8060/drama_listhttp://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_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 用户界面功能实现流程图
访问路径: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 系统集成与部署功能实现流程图
部署要点: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 | 数据总览 | 已登录有数据 | 打开 /home | KPI 与多图有数据 | 通过 |
| 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 性能优化措施
- bundle 级 TTL 缓存与版本失效;
- 前端筛选项 sessionStorage 复用;
Promise.all并行请求;- 类型/导演规范化减少无效分组;
- 静态资源本地化,避免 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 等优秀工具。
更多推荐
所有评论(0)