# 股票数据抓取项目 基于Tushare Pro接口的股票数据定时抓取系统,使用Spring Boot + MyBatis + MySQL技术栈。 ## 功能特性 - 🔄 **定时抓取**: 支持定时获取股票基本信息和日线行情数据 - 📊 **数据存储**: 使用MySQL存储股票数据,支持批量插入和去重 - ⚡ **高性能**: 使用HikariCP连接池和MyBatis优化数据库操作 - 🔧 **灵活配置**: 支持通过配置文件自定义抓取策略和数据库连接 - 📈 **多时间周期**: 支持日线、周线、月线数据抓取 - 🗃️ **数据清理**: 自动清理历史数据,控制存储空间 ## 技术栈 - **Java 8+**: 主要编程语言 - **Spring Boot 2.7**: 应用框架 - **MyBatis**: ORM框架 - **MySQL**: 数据存储 - **Tushare Pro SDK**: 股票数据接口 - **Quartz**: 定时任务调度 - **HikariCP**: 数据库连接池 ## 快速开始 ### 1. 环境准备 - JDK 8+ - Maven 3.6+ - MySQL 5.7+ ### 2. 数据库初始化 执行SQL脚本创建数据库和表: ```sql source src/main/resources/sql/init.sql ``` ### 3. 配置文件修改 编辑 `src/main/resources/application.properties`: ```properties # Tushare配置 tushare.token=your_actual_tushare_token # 数据库配置 db.url=jdbc:mysql://localhost:3306/stock_data?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false db.username=your_username db.password=your_password ``` ### 4. 编译和运行 ```bash # 编译项目 mvn clean compile # 打包项目 mvn clean package # 运行应用程序 java -jar target/go-stock-1.0-SNAPSHOT.jar ``` ## 使用说明 ### 命令行参数 ```bash # 启动应用程序并运行定时任务 java -jar go-stock.jar # 手动获取股票基本信息 java -jar go-stock.jar fetch-basic # 手动获取股票日线行情数据 java -jar go-stock.jar fetch-daily # 清理历史数据,保留60天 java -jar go-stock.jar clean-data 60 # 显示帮助信息 java -jar go-stock.jar help ``` ### 定时任务配置 在 `application.properties` 中配置定时任务: ```properties # 启用定时任务 task.enabled=true # 股票基本信息获取时间(每天凌晨1点) task.cron.stock.basic=0 0 1 * * ? # 股票日线数据获取时间(每个交易日下午3点30分) task.cron.stock.daily=0 30 15 * * ? ``` ## 项目结构 ``` src/main/java/com/sjz/ ├── App.java # 主程序入口 ├── config/ # 配置类 │ ├── DatabaseConfig.java # 数据库配置 │ └── TushareConfig.java # Tushare配置 ├── mapper/ # 数据访问层 │ ├── StockBasicMapper.java │ └── StockDailyMapper.java ├── model/ # 数据模型 │ ├── StockBasic.java │ └── StockDaily.java ├── service/ # 业务逻辑层 │ ├── StockBasicService.java │ └── StockDailyService.java ├── task/ # 定时任务 │ └── StockDataScheduler.java └── util/ # 工具类 ├── ConfigUtil.java └── DateUtil.java src/main/resources/ ├── application.properties # 配置文件 ├── mybatis-config.xml # MyBatis配置 └── sql/init.sql # 数据库初始化脚本 ``` ## API限制说明 Tushare Pro接口有以下限制: - 每分钟请求次数限制:根据用户等级不同 - 每次返回记录数限制:通常5000条 - 建议在请求间添加适当延时,避免触发限制 ## 监控和日志 - 使用SLF4J + Logback记录运行日志 - 数据库操作记录详细日志 - 定时任务执行状态监控 - 错误信息记录和报警 ## 注意事项 1. **Tushare Token**: 需要在Tushare官网注册并获取有效的API Token 2. **交易日**: 系统会自动判断交易日,非交易日不会执行数据抓取 3. **数据去重**: 使用唯一键约束确保数据不重复 4. **数据备份**: 建议定期备份数据库 5. **监控告警**: 建议配置监控告警,及时发现问题 ## 扩展功能 - 添加更多数据源 - 实现数据分析和统计功能 - 添加Web管理界面 - 支持更多时间周期数据 - 添加邮件通知功能 ## 许可证 本项目仅供学习和研究使用,请遵守相关API使用条款。