项目简介

本系统以淘宝平台美妆电商交易数据为研究对象,覆盖口红、粉底液、眼影等 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 加盐哈希密码
email 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,首次使用先点击「注册」创建账号,注册成功后切换至「登录」标签登录即可进入系统。

第五步:采集数据

  1. 进入左侧菜单「数据获取」→「数据获取」
  2. 粘贴淘宝登录后的 Cookie(从浏览器开发者工具 Network 面板获取)
  3. 选择需要爬取的类别和每类页数,点击「开始爬取」
  4. 实时观察各类别的爬取进度条和商品数量
  5. 爬取完成后,可进入「数据预处理」对数据进行清洗

覆盖的 12 个美妆类别

口红 粉底液 眼影 睫毛膏 眉笔 腮红 遮瑕 散粉 BB霜 卸妆 面膜 香水


开发作者

项目 信息
作者 Jay
定制联系 微信:Jay8059
开发年份 2026 年

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐