基于Flask+Vue的豆瓣音乐分析与推荐系统

基于Flask+Vue的豆瓣音乐分析与推荐系统

一、介绍

本项目基于 Python 编写网络爬虫,从豆瓣音乐网抓取 Top250 音乐及各分类音乐的相关信息,并对数据进行清洗与结构化处理。

结合百度开源的 Senta 框架,对用户评论文本进行情感分析,并将分析结果存储至 MySQL 数据库中。

在前端,采用 Vue3 构建可视化 Web 系统,对音乐的评分、表演者、流派等多维度信息进行综合分析,挖掘影响评分高低的关键因素。

同时,系统引入基于物品的协同过滤(ItemCF)推荐算法,为用户个性化推荐感兴趣的音乐。通过可视化图表直观展示音乐数据,实现数据驱动的推荐与分析。

二、软件架构

技术栈:

  • 后端:python、flask ;
  • 前端:vue、element ui、echarts
  • 数据库: MySql8.x

系统亮点:

Senta 框架情感分析,协同过滤(ItemCF)推荐算法,在线实时爬取、日志监控、日志实时刷新、vue3

系统角色:

系统分为管理员和普通用户角色。管理员相对于用户,拥有数据爬取、用户管理功能的权限。

流程:

这是一个基于Flask和Vue.js构建的Web系统,用户在前端界面进行操作,产生HTTP请求发送至服务器。Flask框架接收到这些请求并创建对应的请求对象。然后,Flask根据路由配置找到匹配的视图函数,执行该函数以处理请求。 在视图函数中,与MySQL数据库进行交互,执行数据的查询、插入、更新或删除等操作,以完成用户的请求。处理完成后,视图函数会构造一个响应对象,这个响应对象包含了要返回给用户的数据。 接着,Flask将响应对象转换为HTTP响应,通过客户端的浏览器呈现结果。在这个过程中,前端使用Vue.js框架来提升用户界面的交互性和动态内容展示,可能还会用ECharts图表库来呈现数据可视化。 整个流程如下:

  1. 用户在前端界面(由Vue.js构建)上进行操作。
  2. 前端界面发送HTTP请求至服务器。
  3. Flask框架接收请求并创建请求对象。
  4. 根据路由,Flask查找并调用对应的视图函数。
  5. 视图函数与MySQL数据库进行交互(假如需要)。
  6. 视图函数处理完请求后,创建一个响应对象。
  7. Flask将响应对象转换为HTTP响应并返回给客户端。
  8. 客户端浏览器接收响应,并由Vue.js动态渲染页面内容和ECharts图表。

三、系统功能

1、首页

首页展示了系统中爬取到的音乐信息。用户可以根据数据类型、名称、表演者和流派等条件进行筛选查询。

  • 收藏/取消收藏,用户点击按钮,收藏音乐
  • 评论获取:管理员功能,点击【获取评论】按钮,输入需要爬取的页数,可以开启爬取评论爬虫,在爬取历史功能页面,可以查看详情
  • 查看评论:查看具体评论信息
  • 详情:查看音乐详情

2、音乐分析

1)排名分析

点击右上角的「全部 / Top250」按钮,可切换查看全部数据分析或仅查看 Top250 榜单的数据分析结果。

【评分排名Top20】根据观众给出的平均评分,将作品进行排序,并选出前20名的作品。

【评价人数排名Top20】根据每部作品收到的评价数量,将作品进行排序,并选出前20名的作品。

【评分排名Top20流派占比】 流派占比指的是在评分排名Top20或评价人数排名Top20中,不同类型(如摇滚、流行等)作品所占的比例。通过这一数据,可以了解哪些类型的作品在这些排名中占据主导地位,从而分析当前市场上的流行趋势和观众偏好。

2)表演者分析

点击右上角的「全部 / Top250」按钮,可切换查看全部数据分析或仅查看 Top250 榜单的数据分析结果。

【作品数量 Top20】:展示作品数量排名前 20 的表演者。

【评论情感 Top5】:通过对评论情感进行分析,提取正向评价比例最高的前五位表演者。

【均分排名】:统计每位表演者所有作品的平均评分,展示均分排名前 20 的表演者。

【评论词云】:默认展示所有评论的词云图;点击前三张图中的任意表演者姓名,可查看该表演者的专属评论词云图。

3)流派分析

点击右上角的「全部 / Top250」按钮,可切换查看全部数据分析或仅查看 Top250 榜单的数据分析结果。

【评论情感分析】:基于用户评论情感,对各个流派进行分析,可直观反映不同流派的受欢迎程度。

【各流派作品均分排名】:统计并对比各流派作品的平均评分,用于评估整体质量水平。

【各流派作品数量】:展示各流派对应的作品数量,反映其在整体作品库中的占比情况。

4)年度分析

点击右上角的「全部 / Top250」按钮,可切换查看全部数据分析或仅查看 Top250 榜单的数据分析结果。

【年度作品数量】:展示各年份发布的作品数量,直观了解作品发布的年度分布情况。

【年度均分】:统计并对比每年作品的平均评分,通过折线图展示评分随年份的变化趋势,反映作品质量的年度变化情况。

5)评论分析

根据表演者、流派等条件筛选与分析评论数据。

【评论情感占比】:基于评论数据进行情感分析,展示舆情指数的整体分布情况,帮助快速识别用户态度倾向。

【评论词云】:提取评论中的高频关键词,生成可视化词云图,直观展示用户关注的核心内容。

【评论列表】:展示完整评论内容,支持按条件查看具体评论,便于深入了解用户反馈与观点。图标颜色(舆情指数大于60分为绿色,45分-60分为橙色,小于45分为红色)

3、音乐推荐

音乐推荐分为推荐音乐和我的收藏两个部分

【推荐音乐】使用基于物品的协同过滤(ItemCF)算法进行推荐

【我的收藏】展示用户收藏的音乐信息

4、大屏展示

使用科技化大屏,分析top250数据。具体分析了涉及表演者人数、涉及流派数量、Top10音乐展示(音乐名称、表演者、评分)、年度发布个数趋势柱状图、个流派作品数量饼图、表演者作品数量top10折线图和音乐介绍词云图。

5、数据爬取

管理员功能。数据获取分为按风格获取和获取Top250数据。

1)按照风格获取,用户需要选择风格类型,输入开始页码和结束页面,然后进行爬取。

2)获取top250数据默认爬取全部数据

点击爬取历史,可查看历史爬取状态

6、用户管理

该功能是管理员功能,管理用户信息

1)新增:点击新增按钮,输入用户信息,可添加新用户

2)搜索:输入用户名字和手机号码,点击搜索即可查询用户信息

3)编辑:编辑用户信息

4)重置密码:点击重置密码,可重置该用户密码

5)启用/停用:对用户账号状态进行修改,被停用的用户无法登录系统

6)删除:删除该账号

7、个人信息

用户查看个人信息,输入新的信息点击提交,可更新个人信息

8、修改密码

输入原密码与新密码,可修改密码

9、登录注册

用户登录注册

四、其他

源码+技术文档+lun文,需要的小伙伴请私信~

更多技术服务,需要的小伙伴请私信~

相关推荐
幽络源小助理1 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
烛阴1 小时前
简单入门Python装饰器
前端·python
好开心啊没烦恼2 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
面朝大海,春不暖,花不开2 小时前
使用 Python 实现 ETL 流程:从文本文件提取到数据处理的全面指南
python·etl·原型模式
2301_805054563 小时前
Python训练营打卡Day59(2025.7.3)
开发语言·python
万千思绪4 小时前
【PyCharm 2025.1.2配置debug】
ide·python·pycharm
鱼樱前端4 小时前
今天介绍下最新更新的Vite7
前端·vue.js
微风粼粼5 小时前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
云天徽上5 小时前
【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......
python·ocr·文字识别·表格识别·paddleocr·pp-ocrv5
你怎么知道我是队长6 小时前
python-input内置函数
开发语言·python