新增功能: - 5个专业数据抓取器(公司信息、板块、财务、资金流、龙虎榜) - 一键执行脚本 run_all_fetchers.sh(完整/测试/自定义三种模式) - 扩展数据库Schema(11张新表) - 数据源迁移至免费API(东方财富、新浪、腾讯) 数据能力: - 公司基础信息:5,295只A股 - 板块数据:~400个板块 + 20万成分股关系 - 财务报表:利润表+资产负债表(最近4季) - 资金流:主力资金、大单、中单、小单(700天) - 龙虎榜:上榜记录+营业部明细(2年) - 总数据量:~395万条记录,3-5GB存储 技术亮点: - 断点续传支持 - UPSERT策略避免重复 - API限流控制 - 实时进度显示 - 错误容错机制 - 完整日志记录 文档更新: - README添加"全量数据抓取"章节 - 60+页技术方案文档 - 完整的使用指南和维护文档 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
6.1 KiB
6.1 KiB
Phase 1 实施状态报告
✅ 已完成项目
1. 数据库Schema扩展
- ✅ 安装成功
- ✅ 11个新表已创建
- ✅ 索引和触发器已配置
# 验证
psql -U stock_user -d stock_db -c "\dt t_*"
2. 公司基础信息抓取器
- ✅
fetch_company_info_v2.py已创建并测试 - ✅ 成功率: 90%+
- ✅ 支持断点续传
- ✅ 支持批量抓取
测试结果:
📋 数据库中共有 5295 只股票
✅ 测试成功: 9/10
❌ 失败: 1/10 (已修复)
立即可用:
# 测试模式(10只股票)
python fetch_company_info_v2.py --test
# 抓取全部5295只
python fetch_company_info_v2.py
# 抓取前100只
python fetch_company_info_v2.py --limit 100
预计耗时: 5,295只 × 0.3秒 ≈ 30分钟
⏳ 待实现项目
3. 板块数据抓取器 (fetch_sector_data.py)
优先级: P1 复杂度: 中等 预计耗时: 1-2小时实现,10分钟运行
数据量:
- 行业板块: ~100个
- 概念板块: ~300个
- 成分股关系: ~20万条
API端点:
# 行业板块列表
url = "http://80.push2.eastmoney.com/api/qt/clist/get"
params = {'fs': 'm:90+t:2', 'pz': 5000}
# 概念板块列表
params = {'fs': 'm:90+t:3', 'pz': 5000}
# 板块成分股
url = "http://push2.eastmoney.com/api/qt/slist/get"
params = {'spt': 3, 'code': 'BK0001'}
4. 财务报表抓取器 (fetch_financial_data.py)
优先级: P1 复杂度: 较高 预计耗时: 2-3小时实现,1-2小时运行
数据量:
- 最近4季 × 5,295只 ≈ 21,180条
- 利润表 + 资产负债表 + 现金流量表
API端点:
url = "http://emweb.securities.eastmoney.com/PC_HSF10/NewFinanceAnalysis/ZBPageAjax"
params = {
'code': 'SH600000',
'type': 1, # 1=按报告期,2=按年度
}
5. 资金流数据抓取器 (fetch_money_flow.py)
优先级: P2 复杂度: 中等 预计耗时: 1-2小时实现,4-6小时运行
数据量:
- 5,295只 × 700天 ≈ 370万条
API端点:
url = "http://push2.eastmoney.com/api/qt/stock/fflow/kline/get"
params = {
'lmt': 700,
'klt': 1, # 日线
'secid': '1.600000',
'fields1': 'f1,f2,f3,f7',
'fields2': 'f51,f52,f53,f54,f55,f56'
}
6. 龙虎榜数据抓取器 (fetch_top_list.py)
优先级: P2 复杂度: 中等 预计耗时: 1-2小时实现,30分钟运行
数据量:
- 历史龙虎榜记录: ~5万条
- 营业部明细: ~20万条
API端点:
url = "http://datacenter-web.eastmoney.com/api/data/v1/get"
params = {
'reportName': 'RPT_DAILYBILLBOARD_DETAILS',
'columns': 'ALL',
'pageNumber': 1,
'pageSize': 500
}
📊 Phase 1 完成度
| 任务 | 状态 | 完成度 |
|---|---|---|
| 数据库Schema | ✅ 完成 | 100% |
| 公司信息抓取 | ✅ 完成 | 100% |
| 板块数据抓取 | ⏳ 待实现 | 0% |
| 财务报表抓取 | ⏳ 待实现 | 0% |
| 资金流抓取 | ⏳ 待实现 | 0% |
| 龙虎榜抓取 | ⏳ 待实现 | 0% |
| 总体进度 | 进行中 | 33% |
🎯 建议执行顺序
Option A: 逐步实施(推荐)
适合: 稳妥推进,及时验证
# Step 1: 先抓取公司信息(30分钟)
python fetch_company_info_v2.py
# Step 2: 验证数据
psql -U stock_user -d stock_db -c "
SELECT COUNT(*),
COUNT(DISTINCT industry_sw_l1) as industries,
COUNT(DISTINCT list_board) as boards
FROM t_company_info;
"
# Step 3: 继续实现板块抓取器
# (我可以帮您实现)
# Step 4: 验证+实现下一个
# ...循环直到完成
Option B: 批量实施
适合: 快速完成全部功能
# 我一次性为您创建全部5个抓取器
# 然后您可以并行或串行运行
python fetch_company_info_v2.py &
python fetch_sector_data.py &
python fetch_financial_data.py &
# ...
Option C: 延迟实施
适合: 专注于当前最重要的数据
# 只实现P1优先级的抓取器
1. 公司信息 ✅
2. 板块数据 ⏳
3. 财务报表 ⏳
# P2数据(资金流、龙虎榜)延后实施
💡 立即行动
1. 运行公司信息抓取(推荐)
cd /Users/brunogao/work/codes/shenye/examples/claude-stock/backend
source .venv/bin/activate
# 后台运行(预计30分钟)
nohup python fetch_company_info_v2.py > fetch_company_$(date +%Y%m%d_%H%M%S).log 2>&1 &
# 监控进度
tail -f fetch_company_*.log
# 或者前台运行(可以看到实时进度)
python fetch_company_info_v2.py
2. 验证数据质量
# 抓取完成后验证
psql -U stock_user -d stock_db << 'SQL'
-- 总体统计
SELECT
COUNT(*) as total,
COUNT(DISTINCT industry_sw_l1) as industries,
COUNT(DISTINCT exchange) as exchanges,
COUNT(DISTINCT list_board) as boards,
COUNT(full_name) as has_name,
COUNT(website) as has_website
FROM t_company_info;
-- 行业分布
SELECT
industry_sw_l1,
COUNT(*) as count
FROM t_company_info
WHERE industry_sw_l1 IS NOT NULL AND industry_sw_l1 != ''
GROUP BY industry_sw_l1
ORDER BY count DESC
LIMIT 10;
-- 交易所分布
SELECT
exchange,
list_board,
COUNT(*) as count
FROM t_company_info
GROUP BY exchange, list_board
ORDER BY count DESC;
SQL
3. 请求下一步实施
选择一个选项告诉我:
A. 继续实现全部抓取器 - "请实现剩余4个抓取器"
B. 先实现高优先级 - "先实现板块和财务抓取器"
C. 我自己来 - "我会根据框架自己实现"
D. 暂停,先测试 - "我先运行公司信息抓取,测试后再决定"
📁 相关文件
- ✅
database/schema_extended.sql- 扩展数据库Schema - ✅
fetch_company_info_v2.py- 公司信息抓取器(可用) - ⏳
fetch_sector_data.py- 板块抓取器(待创建) - ⏳
fetch_financial_data.py- 财报抓取器(待创建) - ⏳
fetch_money_flow.py- 资金流抓取器(待创建) - ⏳
fetch_top_list.py- 龙虎榜抓取器(待创建) - 📖
COMPREHENSIVE_DATA_PLAN.md- 完整技术方案 - 📖
QUICK_START_COMPREHENSIVE_DATA.md- 快速启动指南
状态: Phase 1 进行中(33%完成) 下一步: 运行公司信息抓取 + 决定后续实施方案 预计完成时间: 根据选择的方案,1-7天