AgentSkillsCN

fund-scraper

抓取东方财富网基金排名数据并生成 Excel 文件。支持自定义数据条数,并提供去重功能。触发词:“抓取基金数据”、“基金排名”、“下载基金数据”、“fund ranking”。

SKILL.md
--- frontmatter
name: fund-scraper
description: 抓取东方财富网基金排名数据并生成Excel。支持自定义条数、去重功能。触发词:"抓取基金数据"、"基金排名"、"下载基金数据"、"fund ranking"。

基金数据抓取技能

你是一个专业的基金数据抓取工具。你的任务是使用 Playwright 从东方财富网抓取基金排名数据,并生成 Excel 文件。

用户需求确认

在开始抓取前,确认用户需求:

  1. 数据条数:默认 50 条,可选 100/200 条
  2. 是否去重:按基金简称去重,避免 A/C 份额重复
  3. 输出路径:默认当前目录,可指定路径

核心流程

1. 打开网页

使用 browser_navigate 打开东方财富网基金排名页面,URL 参数说明:

参数说明可选值
pn每页条数50, 100, 200
dasc降序排列固定值
qsd起始日期YYYYMMDD
qed结束日期YYYYMMDD

示例 URL(100条数据):

code
https://fund.eastmoney.com/data/fundranking.html#tall;c0;r;szzf;pn100;dasc;qsd20250131;qed20260131;qdii;zq;gg;gzbd;gzfs;bbzt;sfbb

2. 等待数据加载

使用 browser_run_code 等待表格数据加载完成:

javascript
async (page) => {
  await page.waitForTimeout(5000); // 等待5秒让数据加载
  // ...
}

3. 提取表格数据

使用 JavaScript 提取基金排名表格:

javascript
async (page) => {
  const data = await page.evaluate(() => {
    const tables = document.querySelectorAll('table');
    const table = tables[4]; // 数据表格是第5个表格

    const headers = Array.from(table.querySelectorAll('thead th'))
      .map(th => th.textContent?.trim());

    const rows = table.querySelectorAll('tbody tr');
    const tableData = Array.from(rows).map(row => {
      return Array.from(row.querySelectorAll('td'))
        .map(cell => cell.textContent?.trim());
    });

    return { headers, data: tableData, rowCount: tableData.length };
  });
  return data;
}

4. 关闭浏览器

使用 browser_close 关闭浏览器。

5. 生成 Excel(支持去重)

使用 Python 生成 Excel 文件,支持按基金简称去重

python
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment

# 去重处理
seen = set()
deduped_data = []
for row in data:
    fund_name = row[3]  # 基金简称在第4列
    if fund_name not in seen:
        seen.add(fund_name)
        deduped_data.append(row)

# 重新编号
for i, row in enumerate(deduped_data, 1):
    row[1] = str(i)  # 更新序号

# 创建工作簿并写入数据
wb.save('基金排名_去重.xlsx')

去重说明

同一基金通常有多个份额类别(A类、C类等),去重功能:

  • 去重依据:基金简称(第4列)
  • 保留规则:保留第一次出现的记录(通常是A类)
  • 去重效果:100条原始数据 → 约50条唯一基金

示例:

  • 前海开源金银A → 保留
  • 前海开源金银C → 删除

可选功能

数据分析

生成 Excel 后,可以进行数据分析:

  • 净值分析(高净值/折价基金)
  • 收益率排行(日/周/月/年)
  • 主题基金统计(黄金/指数/科技等)

输出说明

完成后的输出应包含:

  • Excel 文件路径
  • 原始数据条数
  • 去重后数据条数
  • 去重数量(如适用)

需要更多细节?参考 详细指南.md | 查看 示例.md