基于Springboot+爬虫的化妆品推荐数据可视化分析系统
💗博主介绍:✌全网粉丝15W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者,计算机毕设实战导师。目前专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌
💗主要服务内容:免费功能设计、选题定题、开题报告、任务书、程序开发、论文编写和辅导、论文降重、程序讲解、答辩辅导等,欢迎咨询~
👇🏻 精彩专栏 推荐订阅👇🏻
计算机毕业设计精品项目案例(持续更新)
🌟文末获取源码+数据库+文档🌟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以和学长沟通,希望帮助更多的人
一.前言
随着大数据时代的到来,人们对于个性化服务的需求越来越高。化妆品作为日常消费品的重要组成部分,其种类繁多,特性各异,消费者在选择时往往面临较大的困难。因此,一个能够根据用户的肤质、年龄、性别等信息,快速推荐最适合其需求的化妆品的推荐系统显得尤为重要。该系统不仅能够提升用户的购物体验,还能帮助企业更好地了解市场需求和消费者喜好,优化产品研发和营销策略。
本化妆品推荐数据可视化分析系统采用的数据库是Mysql,使用Java语言的SprinBoot框架开发,并利用Scrapy并通过数据可视化技术直观展示分析推荐结果,利用这些技术结合实际需求开发了具有我的信息、用户管理、商家管理、化妆品类别管理、化妆品管理、评分信息管理、在线咨询管理、销量数据管理、留言反馈、系统管理等功能的系统,最后对系统进行相应的测试,测试系统有无存在问题以及测试用户权限来优化系统,最后系统达到预期目标。
二.技术环境
开发语言:Java
Java框架:SpringBoot
软件版本:Jdk1.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
爬虫框架:Scrapy
开发软件:Idea
前端框架:vue.js
可视化技术:Echarts
三.功能设计
本化妆品推荐数据可视化分析系统主要有管理员、商家和用户三个功能模块。以下将对这三个功能的作用进行详细的剖析。
管理员模块:管理员是系统中的核心用户,管理员登录后,可以对后台系统进行管理。主要功能有我的信息、用户管理、商家管理、化妆品类别管理、化妆品管理、评分信息管理、在线咨询管理、销量数据管理、留言反馈、系统管理等功能。管理员用例如图所示。
商家:商家进入系统可以对我的信息、化妆品管理、评分信息管理、在线咨询管理、销量数据管理等功能进行操作,商家用例如图所示。
用户:用户进入系统首页可以对个人信息、在线咨询、我的收藏等功能进行操作,用户用例如图所示。
四.数据设计
系统需要数据库存储系统中的信息,MySQL数据库能够处理系统的信息,当考研信息爬虫与分析需要数据的时候,MySQL数据库能够取得数据交给服务端处理。MySQL数据库能够使用可视化软件操作,管理员可以在可视化软件对数据库的信息管理。系统部分实体E-R图如下所示:



五.部分效果展示
5.1前台用户功能实现效果
当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图所示:
系统注册:在系统注册页面的输入栏中输入用户注册信息进行注册操作,系统注册页面如图所示:
化妆品:在化妆品页面的输入栏中输入化妆品名称、品牌和选择化妆品类别进行查询,可以查看到化妆品详细信息,并根据需要进行咨询、评分、评论或收藏操作;化妆品页面如图所示:
留言反馈:在留言反馈页面通过输入留言内容,上传图片并立即提交进行在线留言,还可以对留言内容进行回复操作;留言反馈页面如图所示:

个人中心:在个人中心页面输入个人信息可以进行更新操作,并根据需要对在线咨询、我的收藏进行详细操作;如图所示:

5.2后台管理员功能实现效果
管理员进入主页面,主要功能包括对我的信息、用户管理、商家管理、化妆品类别管理、化妆品管理、评分信息管理、在线咨询管理、销量数据管理、留言反馈、系统管理等进行操作。
管理员点击商家管理。在商家页面输入账号和姓名进行搜索、新增或删除商家列表,并根据需要对商家详情信息进行详情、变更或删除操作;如图所示:
管理员点击化妆品管理。在化妆品页面输入化妆品名称、品牌和选择化妆品类别进行搜索、新增或删除化妆品列表,并根据需要对化妆品详情信息进行详情、变更、查看评论、评分或删除操作;如图所示:

管理员点击评分信息管理。在评分信息页面输入化妆品名称和化妆品类别进行搜索或删除评分信息列表,并根据需要对评分详情信息进行详情、变更或删除操作;如图所示:
管理员点击在线咨询管理。在在线咨询页面输入标题进行搜索或删除在线咨询列表,并根据需要对在线咨询详情信息进行详情、变更或删除操作;如图所示:
管理员点击销量数据管理。在销量数据页面输入化妆品类别和选择化妆品名称进行搜索或删除销量数据列表,并根据需要对销量数据详情信息进行详情、变更或删除操作;如图所示:
管理员点击留言反馈。在留言反馈页面输入用户名进行搜索或删除留言反馈列表,并根据需要对留言反馈详情信息进行详情、回复或删除操作;如图所示:
管理员点击主页面右上角的看板,可以查看到系统简介、化妆品总数、评分信息总数、库存数量统计、化妆品分类统计、化妆品评分统计、化妆品销量统计、化妆品销售额统计、化妆品(评分TOP10)等实时的分析图进行可视化管理;如图所示:
5.3可视化大屏展示功能实现效果
商家进入主页面,主要功能包括对我的信息、化妆品管理、评分信息管理、在线咨询管理、销量数据管理等进行操作。
商家点击化妆品管理。在化妆品页面输入化妆品名称、品牌和选择化妆品类别进行搜索、新增或删除化妆品列表,并根据需要对化妆品详情信息进行详情、变更、查看评论、评分或删除操作;如图所示:
商家点击销量数据管理。在销量数据页面输入化妆品类别和选择化妆品名称进行搜索、新增或删除销量数据列表,并根据需要对销量数据详情信息进行详情、变更、查看评论、评分或删除操作;如图所示:
六.部分功能代码
import scrapy
import pymysql
import pymssql
from ..items import xiangmuItem
import time
import re
import random
import platform
import json
import os
from urllib.parse import urlparse
import requests
import emoji
class xiangmuSpider(scrapy.Spider):
name = 'xiangmuSpider'
spiderUrl = 'https://url网址'
start_urls = spiderUrl.split(";")
protocol = ''
hostname = ''
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 列表解析
def parse(self, response):
_url = urlparse(self.spiderUrl)
self.protocol = _url.scheme
self.hostname = _url.netloc
plat = platform.system().lower()
if plat == 'windows_bak':
pass
elif plat == 'linux' or plat == 'windows':
connect = self.db_connect()
cursor = connect.cursor()
if self.table_exists(cursor, 'xiangmu') == 1:
cursor.close()
connect.close()
self.temp_data()
return
list = response.css('ul.subject-list li.subject-item')
for item in list:
fields = xiangmuItem()
fields["laiyuan"] = self.remove_html(item.css('div.pic a.nbg::attr(href)').extract_first())
if fields["laiyuan"].startswith('//'):
fields["laiyuan"] = self.protocol + ':' + fields["laiyuan"]
elif fields["laiyuan"].startswith('/'):
fields["laiyuan"] = self.protocol + '://' + self.hostname + fields["laiyuan"]
fields["fengmian"] = self.remove_html(item.css('div.pic a.nbg img::attr(src)').extract_first())
fields["xiaoshuoming"] = self.remove_html(item.css('div.info h2 a::attr(title)').extract_first())
detailUrlRule = item.css('div.pic a.nbg::attr(href)').extract_first()
if self.protocol in detailUrlRule:
pass
elif detailUrlRule.startswith('//'):
detailUrlRule = self.protocol + ':' + detailUrlRule
else:
detailUrlRule = self.protocol + '://' + self.hostname + detailUrlRule
fields["laiyuan"] = detailUrlRule
yield scrapy.Request(url=detailUrlRule, meta={'fields': fields}, callback=self.detail_parse)
# 详情解析
def detail_parse(self, response):
fields = response.meta['fields']
try:
if '(.*?)' in '''div#info span a::text''':
fields["zuozhe"] = re.findall(r'''div#info span a::text''', response.text, re.S)[0].strip()
else:
if 'zuozhe' != 'xiangqing' and 'zuozhe' != 'detail' and 'zuozhe' != 'pinglun' and 'zuozhe' != 'zuofa':
fields["zuozhe"] = self.remove_html(response.css('''div#info span a::text''').extract_first())
else:
fields["zuozhe"] = emoji.demojize(response.css('''div#info span a::text''').extract_first())
except:
pass
# 去除多余html标签
def remove_html(self, html):
if html == None:
return ''
pattern = re.compile(r'<[^>]+>', re.S)
return pattern.sub('', html).strip()
# 数据库连接
def db_connect(self):
type = self.settings.get('TYPE', 'mysql')
host = self.settings.get('HOST', 'localhost')
port = int(self.settings.get('PORT', 3306))
user = self.settings.get('USER', 'root')
password = self.settings.get('PASSWORD', '123456')
try:
database = self.databaseName
except:
database = self.settings.get('DATABASE', '')
if type == 'mysql':
connect = pymysql.connect(host=host, port=port, db=database, user=user, passwd=password, charset='utf8')
else:
connect = pymssql.connect(host=host, user=user, password=password, database=database)
return connect
# 断表是否存在
def table_exists(self, cursor, table_name):
cursor.execute("show tables;")
tables = [cursor.fetchall()]
table_list = re.findall('(\'.*?\')',str(tables))
table_list = [re.sub("'",'',each) for each in table_list]
if table_name in table_list:
return 1
else:
return 0
为什么选择我们
大学毕业那年,曾经有幸协助指导老师做过毕业设计课题分类、论文初选(查看论文的格式)、代码刻录等打杂的事情,也帮助过同界N多同学完成过毕业设计工作,毕业后在一家互联网大厂工作8年,先后从事Java前后端开发、系统架构设计等方面的工作,有丰富的编程能力和水平,也在工作之余指导过别人完成过一些毕业设计的工作。2016年至今,团队已指导上万名学生顺利通过毕业答辩,目前是csdn特邀作者、CSDN全栈领域优质创作者,博客之星、掘金/华为云/B站/知乎等平台优质作者,计算机毕设实战导师,专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎咨询~✌
最后
💕💕
最新计算机毕业设计选题篇-选题推荐
小程序毕业设计精品项目案例-200套
Java毕业设计精品项目案例-200套
Python毕业设计精品项目案例-200套
大数据毕业设计精品项目案例-200套
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。
更多推荐




所有评论(0)