8.2 KiB
8.2 KiB
数据接口 & 数据源一览
架构概览
前端 (fetch) → 后端 FastAPI (路由层) → 数据源服务层 → 第三方 API
- 前端统一走后端代理,前端不直接调第三方
- 每个接口有主源 + 备选降级,降级对前端透明
- 后端服务层有 SQLite 缓存(6-24h)和内存缓存(60s)
1. 股票搜索 /api/stock/search
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchStockSearch(keyword) → src/lib/stock-api.ts |
| 路由 | GET /api/stock/search?keyword= → routes/stock.py:12 |
| 用途 | 模糊搜索股票(名称/代码/拼音) |
数据源:
| 优先级 | 源 | 方式 | 可靠性 |
|---|---|---|---|
| 主选 | 腾讯智能搜索 smartbox.gtimg.cn |
HTTPS JSONP | ⭐⭐⭐⭐⭐ 稳定,覆盖全 |
| 降级 | 腾讯行情接口 qt.gtimg.cn |
HTTPS 文本 | ⭐⭐⭐⭐ 仅当 keyword=6位代码且搜索无结果时 |
2. 实时行情 /api/stock/quote
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchStockQuote(code) → src/lib/stock-api.ts:137 |
| 路由 | GET /api/stock/quote?code= → routes/stock.py:38 |
| 用途 | 获取当前实时价格、开盘价、昨收、最高最低、成交量额、盘口 |
| 前端使用 | 股票详情页基本信息区(价格、涨跌幅、内外盘) |
数据源:
| 优先级 | 源 | 方式 | 可靠性 |
|---|---|---|---|
| 主选 | 腾讯行情 qt.gtimg.cn |
HTTPS GBK文本 | ⭐⭐⭐⭐⭐ A股全量覆盖,无IP限流 |
| 降级 | 无 | — | 无响应则返回 404 |
字段映射: 名称、当前价、昨收、今开、最高、最低、成交量(手)、成交额(万)、外盘、内盘、涨跌额、涨跌幅
3. 历史 K 线 / 每日行情明细 /api/stock/history
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchStockHistory(code, days) → src/lib/stock-api.ts:182 |
| 路由 | GET /api/stock/history?code=&days= → routes/stock.py:49 |
| 用途 | 日K前复权 OHLCV、涨跌幅、成交额 |
| 前端使用 | K线图 + 每日行情明细表(涨跌幅列) |
数据源:
| 优先级 | 源 | API | 可靠性 |
|---|---|---|---|
| 主选 | 东方财富 push2his | kline/get (curl_cffi chrome120) |
⚠️ IP 限流严重,常被拒 |
| 备选① | 腾讯 | web.ifzq.gtimg.cn HTTPS |
⭐⭐⭐⭐⭐ 稳定可靠 |
| 备选② | 新浪 | money.finance.sina.com.cn HTTPS |
⭐⭐⭐ 偶有超时 |
当前实际工作源: 腾讯(备选①)
增强字段(东方财富源独有,走腾讯时无):
turnover— 成交额(元)amplitude— 振幅(%)changePercent— 涨跌幅(%)(腾讯已通过连续收盘价计算补齐)turnoverRate— 换手率(%)
东方财富 push2his kline/get 与 fund-flow 同域名但路径不同,kline/get 有额外反爬。 即使使用 curl_cffi + chrome120 指纹也无法绕过,暂不修复。
4. 资金流向 /api/stock/fund-flow
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchStockFundFlow(code, name, days) → src/lib/stock-api.ts:248 |
| 路由 | GET /api/stock/fund-flow?code=&name=&days= → routes/stock.py:147 |
| 用途 | 日度主力净流入、超大单/大单/中单/小单明细、占比、累计值 |
| 前端使用 | 每日行情明细表(主力净流入列 + 成交额列),资金流向图表 |
数据源:
| 优先级 | 源 | API | 可靠性 |
|---|---|---|---|
| 主选 | 东方财富 push2his | fflow/daykline/get (httpx) |
⭐⭐⭐⭐⭐ 稳定,无 IP 限流 |
| 备选 | MX 妙想 API | mkapi2.dfcfs.com (HTTP POST + apikey) |
⚠️ 有每日配额,多 key 轮询+缓存 |
字段映射(东方财富):
f51=日期, f52=主力净流入, f53=小单, f54=中单, f55=大单, f56=超大单
f57-f61=各占比%, f62=收盘价, f63=涨跌幅
MX API 当前保留为备选。配置
MX_APIKEY或MX_APIKEY_{1-9}环境变量启用。 MX 数据只有主力净流入 + 成交额,无大/中/小单拆分(拆分的比例是估算的)。
5. 公司概况 /api/stock/profile
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchCompanyProfile(code) → src/lib/stock-api.ts:337 |
| 路由 | GET /api/stock/profile?code= → routes/stock.py:80 |
| 用途 | 公司全名、行业、高管、联系方式、注册信息、发行信息 |
| 前端使用 | 股票详情页「公司概况」tab |
数据源:
| 优先级 | 源 | API | 可靠性 |
|---|---|---|---|
| 主选 | 东方财富 F10 | emweb.securities.eastmoney.com HTTPS |
⭐⭐⭐⭐ 稳定,24h 缓存 |
| 降级 | 无 | — | — |
6. 财务指标 /api/stock/financial
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchFinancialData(code, years) → src/lib/stock-api.ts:415 |
| 路由 | GET /api/stock/financial?code=&years= → routes/stock.py:91 |
| 用途 | 每股指标、盈利能力、成长能力、偿债能力、营运能力 |
| 前端使用 | 股票详情页「财务分析」tab(表格+图表) |
数据源:
| 优先级 | 源 | API | 可靠性 |
|---|---|---|---|
| 主选 | 东方财富数据中心 | datacenter.eastmoney.com HTTPS |
⭐⭐⭐⭐⭐ 稳定,6h 缓存 |
| 降级 | 无 | — | — |
7. 主营构成 /api/stock/business-segments
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchBusinessSegments(code, byType, years) → src/lib/stock-api.ts:382 |
| 路由 | GET /api/stock/business-segments?code=&by_type=&years= → routes/stock.py:119 |
| 用途 | 收入构成(按产品/行业/地区)、成本构成、利润占比、毛利率 |
| 前端使用 | 股票详情页「经营分析」tab(饼图) |
数据源:
| 优先级 | 源 | API | 可靠性 |
|---|---|---|---|
| 主选 | 东方财富数据中心 | datacenter.eastmoney.com HTTPS |
⭐⭐⭐⭐⭐ 稳定,6h 缓存 |
| 降级 | 无 | — | — |
8. 板块资金流向 /api/sectors
| 项目 | 内容 |
|---|---|
| 前端调用 | fetchSectors(type) → src/lib/stock-api.ts:461 |
| 路由 | GET /api/sectors?type= → routes/sectors.py:9 |
| 用途 | 行业/概念板块列表,按主力净流入排序 |
| 前端使用 | /sectors 板块资金流向页面 |
数据源:
| 优先级 | 源 | API | 可靠性 |
|---|---|---|---|
| 主选 | 东方财富 push2 | push2.eastmoney.com (curl_cffi chrome120) |
⭐⭐⭐ 有 IP 限流,60s 内存缓存 + session 重建 |
| 备选 | AkShare | ak.stock_fund_flow_industry/concept |
⭐⭐ 慢(同步调用),列名需适配 |
字段映射(东方财富 push2):
f62=主力净流入, f184=主力净流入占比
f66/f69=超大单净流入/占比, f72/f75=大单净流入/占比
f78/f81=中单净流入/占比, f84/f87=小单净流入/占比
f70=成交额
push2.eastmoney.com 有较激进的 IP 限流。通过 curl_cffi 模拟浏览器 TLS 指纹 + 持久化 session + 60s 缓存 + 自动 UT 刷新 + session 重建来缓解。
9. 估值数据(外部)
股票详情页「估值分析」tab 的数据从外部服务加载(landing-page),不由后端代理。
数据源总结
| 第三方源 | 域名 | 使用场景 | 限流情况 | 是否需要反爬 |
|---|---|---|---|---|
| 腾讯财经 | qt.gtimg.cn, web.ifzq.gtimg.cn, smartbox.gtimg.cn |
搜索、行情、K线 | 基本无限流 | ❌ |
| 新浪财经 | money.finance.sina.com.cn |
K线降级 | 宽松 | ❌ |
| 东方财富 push2his | push2his.eastmoney.com |
资金流向、K线 | 部分路径限流(kline/get 被禁,fflow/daykline/get 正常) | ✅ 需 curl_cffi |
| 东方财富 push2 | push2.eastmoney.com |
板块数据 | IP 限流严重 | ✅ 需 curl_cffi |
| 东方财富数据中心 | datacenter.eastmoney.com |
财务数据、主营构成 | 宽松 | ❌ |
| 东方财富 F10 | emweb.securities.eastmoney.com |
公司概况 | 宽松 | ❌ |
| MX 妙想 | mkapi2.dfcfs.com |
资金流向备选 | 每日配额(113错误码) | ❌ |
| AkShare | 同花顺/东方财富 | 板块降级 | 慢但无限制 | ❌ |