返回 Skill 列表
extension
分类: 其它无需 API Key

基金实时估值抓取

此 skill 应在用户需要查询基金实时估值/预计涨跌幅度时使用。 通过 Playwright 自动化访问同花顺爱基金 (fund.10jqka.com.cn),抓取基金重仓持股的实时数据,并基于持仓加权计算基金的预计涨跌幅。 支持单只查询和批量查询多只基金。触发场景包括:「查一下XX基金的涨跌」、「看看这几只基金今天的估值」、「抓取基金实时数据」等。

person作者: user_516b4287hubcommunity

基金实时估值抓取 Skill

概述

通过同花顺爱基金平台(fund.10jqka.com.cn)获取基金的重仓持股实时数据, 利用加权平均算法计算出基金的预计涨跌幅度

核心能力

  • 📊 单只/批量查询:支持一次查询一只或多只基金的实时估值
  • 📈 加权算法:基于「占净资产比 × 股票日涨幅」的加权平均,计算预计涨跌幅
  • 💾 多格式输出:表格展示 + JSON 文件保存
  • Playwright 驱动:处理 JavaScript 动态渲染的页面

数据来源

| 项目 | 来源 | |------|------| | 平台 | 同花顺爱基金 fund.10jqka.com.cn | | 基金名称 | 页面 .nameh1 选择器 | | 重仓持股 | #czContent ul > li 结构(序号、股票名、日涨幅、占比、市值) | | 估值算法 | Σ(日涨幅 × 占比) / Σ(占比) |

使用方式

前置条件

  • Python 3.8+
  • playwright 包已安装(pip install playwright
  • Playwright 浏览器已安装(playwright install chromium

执行脚本

核心脚本位于 scripts/fund_scraper.py,提供 CLI 接口:

# 查询单只基金
python scripts/fund_scraper.py --code 519674

# 批量查询(逗号分隔)
python scripts/fund_scraper.py --codes 519674,002190,161725,161726

# JSON 格式输出
python scripts/fund_scraper.py --code 519674 --format json

# 自定义输出路径
python scripts/fund_scraper.py --codes 519674,002190 --output my_result.json

# 显示浏览器窗口(调试用)
python scripts/fund_scraper.py --code 519674 --no-headless

CLI 参数说明

| 参数 | 缩写 | 必填 | 说明 | |------|------|------|------| | --code | -c | 二选一 | 单只基金代码(6位数字) | | --codes | — | 二选一 | 多只基金代码,逗号分隔 | | --format | -f | 否 | 输出格式:table(默认)/ json | | --output | -o | 否 | 输出文件路径(JSON) | | --headless | — | 否 | 无头模式(默认开启) | | --no-headless | — | 否 | 显示浏览器窗口(调试用) | | --timeout | — | 否 | 页面加载超时毫秒数(默认 60000) |

工作流程

当用户请求查询基金实时估值时,按以下步骤操作:

Step 1: 确认基金代码

从用户输入中提取基金代码。用户可能以以下方式提供:

  • 直接给出代码:「查一下 519674」
  • 给出多个代码:「看看 519674 和 002190」
  • 给出名称但未给代码 → 需要询问或搜索确认

如果用户没有明确指定基金代码,必须先向用户确认

Step 2: 执行抓取脚本

使用 execute_command 运行脚本。确保:

  • 使用绝对路径调用脚本
  • 设置适当的编码环境
  • 根据用户需求选择参数格式

示例命令:

# 单只基金
PYTHONIOENCODING=utf-8 python "<SKILL_PATH>/scripts/fund_scraper.py" --code <FUND_CODE> --format json --output <OUTPUT_PATH>

# 批量基金
PYTHONIOENCODING=utf-8 python "<SKILL_PATH>/scripts/fund_scraper.py" --codes <CODE1>,<CODE2>,<CODE3> --format json --output <OUTPUT_PATH>

<SKILL_PATH> 替换为当前 skill 的实际路径, 将 <FUND_CODE> 替换为实际基金代码, 将 <OUTPUT_PATH> 替换为期望的输出文件路径(建议输出到工作区目录)。

Step 3: 读取结果

脚本执行成功后,读取输出的 JSON 文件,解析结果并向用户呈现:

{
    "基金代码": "519674",
    "基金名称": "银河创新混合A",
    "抓取时间": "2026-04-10 16:30:00",
    "预计涨跌幅": "+1.94%",
    "状态": "success",
    "重仓持股": [
        {
            "序号": 1,
            "股票名称": "寒武纪",
            "日涨幅": "+1.06%",
            "占净资产比": "9.78%",
            "市值": "138266.10万元"
        },
        ...
    ]
}

Step 4: 向用户汇报结果

按以下格式汇总结果:

📈 基金实时估值报告

【银河创新混合A (519674)】
⏰ 抓取时间:2026-04-10 16:30
📊 预计涨跌幅:+1.94%
✅ 状态:数据完整(10 只重仓股)

重仓股贡献明细:
  #1 寒武纪   +1.06% (占比 9.78%)
  #2 海光信息  +2.12% (占比 9.77%)
  ...

对于批量查询结果,制作对比汇总表。

Step 5: 异常处理

| 错误现象 | 处理方式 | |----------|----------| | 页面加载超时 | 增加 --timeout 参数值(如 90000),或稍后重试 | | 未找到持仓数据 | 可能是基金类型不支持(如货币基金),告知用户 | | 所有数据显示"暂无数据" | 可能是非交易时间或盘前/盘后时段,提示用户 | | Playwright 未安装 | 提示运行 pip install playwright && playwright install chromium | | 基金代码无效 | 校验代码应为6位数字 |

输出规范

必须包含的信息

  1. 基金基本信息:代码、名称
  2. 预计涨跌幅:加权计算结果,保留2位小数,带正负号
  3. 抓取时间:数据时效性参考
  4. 状态标识:正常 / 部分 / 失败
  5. 重仓持股明细:至少列出 Top 5 重仓股及其贡献

数值显示约定

  • 涨跌颜色语义:中国股市惯例 — 涨(+)为红/正,跌(-)为绿/负
  • 百分比格式:始终带 % 符号和正负号,如 +1.94%-0.50%
  • 金额单位:万元,保留2位小数

注意事项

  1. 数据时效性:持仓数据来自最近披露的季报,不是实时的真实持仓变动;"预计涨跌幅"是估算值,基于假设持仓不变的前提下计算
  2. 交易时间限制:非交易时间段(周末、节假日、夜间)股票的"日涨幅"可能为前一交易日数据或无数据
  3. 频率控制:避免过于频繁地大量抓取,尊重目标网站的资源
  4. 算法局限:仅覆盖前十大重仓股,实际基金持仓可能包含更多股票,因此估算存在一定偏差