基于Python的美妆销售数据分析系统
·
项目简介
本系统以淘宝平台美妆电商交易数据为研究对象,覆盖口红、粉底液、眼影等 12 个主流美妆类别。系统集成数据爬取、数据清洗、多维度可视化分析三大核心能力,通过直观的图表呈现美妆市场的销量分布、价格规律与品类竞争态势,为市场研究和选品决策提供数据支撑。
系统采用前后端分离架构:Flask 提供 RESTful API 服务,Vue 2 + ECharts 5 负责页面交互与图表渲染,MySQL 持久化存储爬取与分析数据,支持用户注册/登录、JWT 鉴权、后台多线程爬取、实时进度追踪等功能。
核心功能
数据获取与处理
- 数据爬取:填写淘宝 Cookie,自定义爬取类别和页数,后台线程异步执行,实时展示每个类别的页数进度和已获取商品数量
- 数据预处理:自动清洗价格与销量字段,标准化数值格式,剔除无效/重复记录
数据管理(CRUD)
- 分页浏览全部爬取商品,支持按商品名称、店铺名称关键词及类别筛选
- 支持单条商品的新增、编辑、删除
- 支持一键清空全部商品数据
数据概览(6 张图表)
- 各类商品数量——分类柱状图,展示 12 个类别的商品存量对比
- 各类商品销量——渐变柱状图,展示各类别累计销售总量
- 各类商品平均价格——柱状图,展示各类别在售均价
- 商品销量 Top10——横向条形图,全类别销量最高的 10 款商品
- 淘宝平台销量 Top——柱状图,淘宝平台销量最高的 15 款商品
- Top10 销量店铺——横向条形图,综合销量最高的 10 家店铺
类目分析(3 张图表)
- 价格区间分析——分价格段堆叠柱状图,展示各类别价格分布结构
- 销量占比分析——环形饼图 + 排名列表,各类别销量份额一览
- 销量与价格对比——双 Y 轴图(柱状销量 + 折线均价),揭示价格与销量相关性
用户系统
- 用户注册与登录,密码采用 SHA-256 加盐哈希存储
- JWT Token 鉴权,接口全局守卫,未登录自动跳转
技术栈
| 层级 | 技术 |
|---|---|
| 后端语言 | Python 3.9 |
| 后端框架 | Flask 2.x、Flask-CORS |
| 数据库驱动 | PyMySQL 1.x |
| 身份认证 | PyJWT |
| 数据爬取 | Requests、BeautifulSoup4 |
| 数据处理 | Pandas |
| 前端框架 | Vue 2、Vue-Router 3、Vuex 3 |
| UI 组件库 | Element-UI 2 |
| 图表库 | ECharts 5 |
| HTTP 客户端 | Axios |
| 数据库 | MySQL 5.7+ |
| 运行环境 | Python 3.9、Node.js 16+ |
项目结构
c164/
├── backend/ # Flask 后端
│ ├── app.py # 应用入口(蓝图注册、数据库初始化)
│ ├── config.py # 全局配置(数据库、JWT、爬虫、类别列表)
│ ├── extensions.py # Flask 扩展统一初始化(CORS)
│ ├── requirements.txt # 后端依赖清单
│ ├── models/
│ │ ├── user.py # 用户模型(注册、登录查询)
│ │ └── product.py # 商品模型(批量写入、CRUD、统计查询)
│ ├── routes/
│ │ ├── auth.py # 认证路由(/api/auth)
│ │ ├── crawler.py # 爬虫路由(/api/crawler)
│ │ ├── analysis.py # 分析图表路由(/api/analysis)
│ │ └── products.py # 商品 CRUD 路由(/api/products)
│ ├── services/
│ │ ├── auth_service.py # 认证业务(哈希、JWT 签发)
│ │ ├── crawler_service.py # 爬虫业务(多线程、进度追踪)
│ │ ├── preprocess_service.py # 数据预处理业务
│ │ └── analysis_service.py # 图表数据 SQL 聚合
│ └── utils/
│ └── db.py # 数据库连接池 + 建表初始化
│
└── frontend/ # Vue 2 前端
├── package.json
├── vue.config.js # 开发代理(/api → localhost:5000)
└── src/
├── main.js
├── App.vue
├── router/index.js # 路由配置(含登录守卫)
├── store/index.js # Vuex(Token / 用户名持久化)
├── api/
│ ├── request.js # Axios 实例 + 全局拦截器
│ ├── auth.js # 登录注册接口
│ └── analysis.js # 图表、爬虫、商品 CRUD 接口
├── components/
│ ├── SideMenu.vue # 左侧折叠导航菜单
│ ├── AppHeader.vue # 顶部栏(标题 + 退出登录)
│ └── ChartCard.vue # 通用图表卡片容器
└── views/
├── Login.vue # 登录 / 注册页
├── Layout.vue # 主布局(侧边栏 + 内容区)
├── crawler/
│ ├── DataFetch.vue # 数据获取(Cookie 配置 + 分类进度条)
│ └── DataPreprocess.vue# 数据预处理
├── overview/
│ ├── ProductList.vue # 全部商品数据(分页 + 增删改查)
│ ├── CategoryCount.vue # 各类商品数量
│ ├── CategorySales.vue # 各类商品销量
│ ├── CategoryPrice.vue # 各类商品平均价格
│ ├── SalesTop10.vue # 商品销量 Top10
│ ├── TaobaoTop.vue # 淘宝平台销量 Top
│ └── ShopTop10.vue # Top10 销量店铺
└── category/
├── PriceRange.vue # 价格区间分析
├── SalesRatio.vue # 销量占比分析
└── SalesVsPrice.vue # 销量与价格对比
数据库设计
用户表 users
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INT AUTO_INCREMENT | 主键 |
| username | VARCHAR(50) | 用户名(唯一索引) |
| password_hash | VARCHAR(128) | SHA-256 加盐哈希密码 |
| VARCHAR(100) | 邮箱(选填) | |
| register_time | TIMESTAMP | 注册时间,默认当前时间 |
| last_login | TIMESTAMP | 最后登录时间 |
商品表 products
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INT AUTO_INCREMENT | 主键 |
| product_id | VARCHAR(50) | 淘宝商品 ID |
| product_name | TEXT | 商品名称 |
| product_link | TEXT | 商品详情页链接 |
| product_price | VARCHAR(50) | 原始价格字符串(如 ¥199.00) |
| price_value | DECIMAL(10,2) | 标准化价格数值(元) |
| product_image | TEXT | 商品主图链接 |
| shop_name | TEXT | 店铺名称 |
| shop_link | TEXT | 店铺链接 |
| sales_count | VARCHAR(50) | 原始销量字符串(如 1.2万) |
| sales_value | INT | 标准化销量数值(件) |
| shipping_location | VARCHAR(100) | 发货地 |
| product_tags | TEXT | 商品标签 |
| category | VARCHAR(50) | 美妆类别(索引字段) |
| crawl_time | TIMESTAMP | 爬取时间,默认当前时间 |
数据库和表结构在首次启动后端时自动创建,无需手动执行 SQL。
启动教程
第一步:配置数据库连接
打开 backend/config.py,修改为本地 MySQL 连接信息:
DATABASE_CONFIG = {
'host': 'localhost',
'port': 3306,
'user': 'root',
'password': '你的数据库密码',
'database': 'beauty_sales',
'charset': 'utf8mb4'
}
第二步:启动后端服务
进入 backend 目录,安装依赖后运行:
cd backend
pip install -r requirements.txt
python app.py
后端服务运行于 http://localhost:5000,首次启动会自动创建数据库 beauty_sales 及所有数据表。
第三步:启动前端服务
进入 frontend 目录,安装依赖后运行:
cd frontend
npm install
npm run serve
前端服务运行于 http://localhost:8080,通过代理将 /api 请求转发至后端。
第四步:注册并登录
在浏览器访问 http://localhost:8080,首次使用先点击「注册」创建账号,注册成功后切换至「登录」标签登录即可进入系统。
第五步:采集数据
- 进入左侧菜单「数据获取」→「数据获取」
- 粘贴淘宝登录后的 Cookie(从浏览器开发者工具 Network 面板获取)
- 选择需要爬取的类别和每类页数,点击「开始爬取」
- 实时观察各类别的爬取进度条和商品数量
- 爬取完成后,可进入「数据预处理」对数据进行清洗
覆盖的 12 个美妆类别
口红 粉底液 眼影 睫毛膏 眉笔 腮红 遮瑕 散粉 BB霜 卸妆 面膜 香水
开发作者
| 项目 | 信息 |
|---|---|
| 作者 | Jay |
| 定制联系 | 微信:Jay8059 |
| 开发年份 | 2026 年 |













更多推荐


所有评论(0)