Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

A股Level1数据抓取工具

Rust高性能实现

License: MIT Rust ClickHouse

✨ 特性

  • 🚀 极致性能: 5589只股票从15.5小时降至3分钟(mac mini4 测试)
  • 🔄 断点续传: 中断后自动继续,无需重新下载
  • 数据验证: 自动过滤无效数据(时间、价格、成交量)
  • 🔒 稳定可靠: UTF-8边界问题修复,自动重试机制
  • 📊 实时监控: 进度追踪、速度统计、ETA预测
  • 🎯 生产就绪: ClickHouse批量操作,连接池优化

🚀 快速开始

# 1. 启动数据库 docker-compose up -d # 2. 编译项目 cargo build --release # 3. 导入股票代码数据,然后下载对应股票的数据 ./target/release/bulk_download 20260224 100

📊 性能对比

方案单股耗时全量耗时(5183股)
Python10秒15.5小时
Rust v2.01.4秒3分钟

🆕 v2.0 更新(2026-02-25)

关键修复

  • UTF-8崩溃修复: 安全处理非ASCII字符,不再随机崩溃
  • 断点续传: 自动跳过已下载股票
  • 自动重试: 失败重试3次,提升成功率
  • 失败追踪: 记录并汇总所有失败股票

易用性提升

  • 📈 进度百分比和ETA显示
  • 🔍 数据过滤统计(显示过滤的记录数)
  • ⚠️ 无效数据警告
  • 📝 更清晰的日志输出

使用说明

1. 环境要求

  • Rust 1.70+
  • Docker(运行ClickHouse)

2. 启动ClickHouse

docker-compose up -d

这里数据库初始化完成以后需要等待一段时间,直接进行下面下载步骤可能会遇到网络连接失败

3. 编译项目

cargo build --release

4. 下载全量数据

# 基本用法:日期 + 并发数 ./target/release/bulk_download 20260224 50 # 断点续传(中断后继续) ./target/release/bulk_download 20260224 50 # 强制重新下载 ./target/release/bulk_download 20260224 50 --force

6. 查看数据

# 查看下载的股票数 curl -s 'http://localhost:8123/?user=stock_user&password=stock_pass&database=stock_db' \ --data "SELECT count(DISTINCT code) FROM market_data WHERE trade_date='2026-02-24'" # 查看某只股票的数据 curl -s 'http://localhost:8123/?user=stock_user&password=stock_pass&database=stock_db' \ --data "SELECT * FROM market_data WHERE code='600519' AND trade_date='2026-02-24' LIMIT 10"

清空旧数据(如需要)

curl 'http://localhost:8123/?user=stock_user&password=stock_pass&database=stock_db'
--data "DELETE FROM market_data WHERE trade_date='2026-02-24'"

配置文件 (config.toml)

[fetcher] max_concurrent = 50 # 最大并发数 request_delay_ms = 10 # 请求延迟(避免限流) max_retries = 3 # 最大重试次数 [clickhouse] batch_size = 2000 # 批量插入大小 [server] timeout_secs = 5 # 连接超时

某些股票总是失败?

程序会在最后汇总失败的股票:

⚠️  39 只股票失败:
  1: 000004
  2: 000636
  ...

可以:

  1. 检查这些股票是否停牌
  2. 单独重试这些股票
  3. 查看详细错误日志

🛠️ 技术栈

  • 语言: Rust 2021
  • 异步运行时: Tokio
  • 数据库: ClickHouse 24.1
  • 协议: TongDaXin TCP (原生实现)
  • 压缩: Zlib (flate2)
  • 并发: Connection Pool + buffer_unordered

📄 License

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!


关于 About

No description, website, or topics provided.

语言 Languages

Rust98.5%
Shell1.5%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
6
Total Commits
峰值: 2次/周
Less
More

核心贡献者 Contributors