SpringBoot+Python实现酷安关键词监控系统

12/25/2023 pythonspringboot

时隔近一个月终于将酷安板块关键词监控系统做好了!

# 系统文档:SpringBoot+Python实现酷安关键词监控系统

# 1. 项目概述

# 目的

本项目是在学习Spring Boot的过程中启动的实践项目,旨在通过构建一个实际的系统来深入理解Spring Boot技术栈。

该系统主要聚焦于实时数据采集、处理,并对特定关键词和产品进行监控。系统的核心功能包括任务下发、数据采集、处理和展示,以帮助用户有效监控和分析数据。

# 技术栈选择
  1. Spring Boot:作为主要的后端框架,用于构建服务、处理业务逻辑。
  2. MyBatis Plus:用于简化数据库操作,提高开发效率。
  3. JWT (JSON Web Tokens):用于实现安全的用户认证机制。
  4. MySQL & Redis:MySQL用于存储持久数据,Redis用于缓存和快速读取。
  5. Python curl_cffi:用于数据采集,特别是在涉及反爬策略时提供更高效的数据抓取。
  6. Vue3:作为前端框架,用于构建用户界面,提供良好的用户体验。
  7. ElementPlus:用于定制化前端样式,提供良好的界面效果。
# 架构

系统的架构分为三个主要部分:数据采集与处理、数据存储、数据展示。

  • 数据采集与处理:使用Python脚本进行数据采集,主要处理来自网络的动态数据,包括对反爬策略的应对。
  • 数据存储:利用MySQL数据库存储采集到的数据,同时使用Redis作为缓存来提高数据读取的效率。
  • 数据展示:通过Vue3构建的前端界面展示数据,用户可以通过界面监控关键词和产品的最新动态。

# 2. 环境和依赖

  • 操作系统: Ubuntu 20.04
  • Java版本: JDK 8
  • Python版本: Python 3.9
  • Spring Boot版本: 2.7.17
  • 主要依赖库: curl_cffi, redis, pymysql

# 3. 代码结构和模块描述

Crawl: 通过Python对数据进行采集,清洗,入库

Server:通过SpringBoot实现数据库操作,提供接口

View :通过Vue3构建前端页面,对数据进行展示以及进行任务下发

# 4. 关键功能和算法

  • 任务调度和管理

    • 通过Server提供的接口将任务下发存储到数据库中
    • Crawl利用Schedule实现任务调度,循环读取数据库信息
  • 数据采集策略

    • 通过Python实现酷安App中请求头的X-App-Token计算算法
    • 根据任务详情对采集程序进行调度,如:启动、停止、延迟等
  • 数据处理流程

    • 由于返回的数据为Json格式数据,无需二次处理即可入库

# 5. 配置和部署指南

# 6. 使用说明和界面指南

系统实现了登录注册等功能,首先启动SpringBoot程序,之后启动Vue程序,最后启动Python采集。

根据配置打开网站,输入账号密码进行登录

image-20231122170928250

登录利用了jwt创建了token,并且根据token过期实现了各种跳转

目前前端页面有3个子页面可以使用,分别是用户信息查看、商品信息查看以及任务信息查看

image-20231122171054305

image-20231122171106949

image-20231122171115522

image-20231122171216708

image-20231122171232872

# 7. 问题解决和优化记录

  1. 延迟时间过低、导致请求次数总体来看非常的长。保证至少3分钟请求一次
  2. 未增加菜单管理,未详细规范不同权限用户的权限
  3. 提示错误导致无法登录,前端未判断路径是否为login导致无效请求
  4. 修改任务完成状态
  5. 任务下发明确

# 8. 测试和验证

  1. 登录

image-20231128104801167

  1. 数据展示

image-20231128104828541

  1. 任务下发

image-20231128104856028

image-20231128111933227

  1. 任务结果查看

image-20231128104910188

  1. 注销成功

# 9. 后续改进和建议

# 10. 附录和引用

curl_cffi:https://github.com/yifeikong/curl_cffi

element-plus:https://element-plus.org/zh-CN/

vue scope的用法和添加全局样式: https://juejin.cn/post/7002574532615602190

springboot-security-jwt-example: https://github.com/markvivv/springboot-security-jwt-example/blob/springboot3-security-jwt/src/main/java/examples/spring/project/config/SecurityConfig.java

干货|一个案例学会Spring Security 中使用 JWT: http://springboot.javaboy.org/2019/0408/springboot-jwt

SpringBoot集成Spring Security: https://www.cnblogs.com/xfeiyun/p/16192236.html

How to use different password encoding schemes in Spring Security: https://www.educative.io/answers/how-to-use-different-password-encoding-schemes-in-spring-security

Text to ASCII Art Generator (TAAG): https://patorjk.com/software/taag/rjk.com/software/taag/