# stock **Repository Path**: luyuanliang/stock ## Basic Information - **Project Name**: stock - **Description**: stock 分析 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-06 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 股票数据爬取工具使用说明 ## 📋 工具概述 本工具是一个基于Python的股票数据爬取和数据库更新工具,专门用于从网络API获取股票基础数据并存储到MySQL数据库中。 ## 🚀 主要功能 - ✅ 多数据源支持:Tushare Pro、新浪财经、东方财富 - ✅ 智能数据比对:根据stock_code判断数据是否存在及是否变更 - ✅ 批量处理:支持单支股票或批量处理所有股票 - ✅ 错误处理:完善的异常处理和重试机制 - ✅ 日志记录:详细的运行日志输出 ## 📦 安装依赖 ```bash # 基础依赖 pip install mysql-connector-python requests pandas # 如果使用Tushare Pro API pip install tushare ``` ## ⚙️ 配置说明 ### 数据库配置 编辑 `config.py` 文件中的 `DB_CONFIG` 部分: ```python DB_CONFIG = { 'host': '127.0.0.1', # MySQL服务器地址 'port': 3306, # MySQL服务器端口 'database': 'invest', # 数据库名称 'user': 'root', # 数据库用户名 'password': '1234' # 数据库密码 } ``` ### API配置 #### Tushare Pro (推荐) 1. 访问 https://tushare.pro 注册账号 2. 获取API Token 3. 在 `config.py` 中配置: ```python TUSHARE_CONFIG = { 'token': '你的Tushare Token', 'timeout': 30 } API_PREFERENCE = 'tushare' ``` #### 新浪财经/东方财富 ```python API_PREFERENCE = 'sina' # 或 'eastmoney' ``` ## 🎯 命令行参数 ### 基本用法 ```bash # 处理所有股票 python stock_data_crawler.py # 处理指定股票 python stock_data_crawler.py --stock-code 000001 ``` ### 完整参数列表 | 参数 | 缩写 | 类型 | 默认值 | 说明 | |------|------|------|--------|------| | `--stock-code` | `-s` | string | None | 指定股票代码,处理单支股票 | | `--host` | | string | 127.0.0.1 | MySQL服务器地址 | | `--port` | | int | 3306 | MySQL服务器端口 | | `--user` | | string | root | 数据库用户名 | | `--password` | | string | 1234 | 数据库密码 | | `--api` | | string | tushare | API选择: tushare/sina/eastmoney | | `--batch-size` | | int | 100 | 批量处理数量 | | `--log-level` | | string | INFO | 日志级别: DEBUG/INFO/WARNING/ERROR | ### 示例命令 ```bash # 使用自定义数据库配置 python stock_data_crawler.py --host localhost --user admin --password secret # 使用新浪API处理单支股票 python stock_data_crawler.py --stock-code 600036 --api sina # 使用东方财富API并设置详细日志 python stock_data_crawler.py --api eastmoney --log-level DEBUG ``` ## 🗃️ 数据库表结构 ### stock_basic 表 ```sql CREATE TABLE stock_basic ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', stock_code VARCHAR(10) NOT NULL COMMENT '股票代码', stock_name VARCHAR(50) NOT NULL COMMENT '股票名称', industry VARCHAR(50) COMMENT '所属行业', market VARCHAR(20) COMMENT '市场类型', list_date DATE COMMENT '上市日期', status TINYINT DEFAULT 1 COMMENT '状态(1:正常, 0:退市)', update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', UNIQUE KEY uk_stock_code (stock_code) ); ``` ## 🔧 高级用法 ### 定时任务 使用crontab(Linux)或任务计划程序(Windows)设置定时任务: ```bash # 每天上午9点运行 0 9 * * * cd /path/to/stock && python stock_data_crawler.py # 每小时的30分运行 30 * * * * cd /path/to/stock && python stock_data_crawler.py ``` ### 程序化调用 ```python from stock_data_crawler import StockDataCrawler # 创建实例 crawler = StockDataCrawler( host='localhost', port=3306, user='root', password='1234', database='invest' ) # 处理单支股票 crawler.process_stock_data('000001') # 处理所有股票 crawler.process_stock_data() ``` ## 📊 数据源对比 | 特性 | Tushare Pro | 新浪财经 | 东方财富 | |------|-------------|----------|----------| | 数据完整性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | | 稳定性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | | 更新频率 | 实时 | 实时 | 实时 | | 免费额度 | 有限 | 完全免费 | 完全免费 | | 需要注册 | 是 | 否 | 否 | ## 🐛 常见问题 ### Q: 数据库连接失败 A: 检查MySQL服务是否启动,配置参数是否正确 ### Q: Tushare API调用失败 A: 检查Token是否正确,账户是否有足够积分 ### Q: 网络请求超时 A: 检查网络连接,或调整config.py中的超时时间 ### Q: 数据更新不完整 A: 检查API限制,或使用批量处理功能 ## 📝 日志说明 工具会生成详细的运行日志,默认保存在 `stock_crawler.log` 文件中: ```log 2024-01-01 10:00:00 - INFO - 正在从网络爬取股票数据... 2024-01-01 10:00:01 - INFO - 已更新股票数据: 000001 2024-01-01 10:00:02 - INFO - 数据无变更,跳过更新: 600000 2024-01-01 10:00:03 - INFO - 处理完成: 共处理100支股票, 新增5支, 更新20支 ``` ## 🔒 安全性建议 1. 不要在代码中硬编码敏感信息 2. 使用环境变量或配置文件管理API密钥 3. 定期更换数据库密码 4. 设置适当的数据库权限 ## 📞 技术支持 如有问题请检查: 1. 依赖包是否安装完整 2. 配置文件是否正确 3. 网络连接是否正常 4. 数据库服务是否运行