Back to skills
extension
Category: Data & AnalyticsNo API key required

同花顺问财数据提取器

从同花顺问财(iwencai.com) AI选股页面批量抓取涨停股票数据,使用 agent-browser 通过 Chrome CDP 连接操作浏览器,将数据存入 SQLite 数据库,并可导出为 Excel 汇总报告。适用场景:用户要求爬取/抓取/提取问财涨停数据、查询特定日期涨停股票、批量获取历史涨停记录、生...

personAuthor: hj2916hubclawhub

同花顺问财数据提取器

环境配置

使用前确认以下路径(可从用户记忆或直接询问):

| 配置项 | 默认值 | |--------|--------| | Python | C:\Users\JacobWu\AppData\Local\Programs\Python\Python312\python.exe | | agent-browser | C:\Users\JacobWu\AppData\Roaming\npm\agent-browser.cmd | | Chrome CDP端口 | 9222 | | 数据库路径 | D:\workbuddyclaw\iwencai_zt.db | | 数据目录 | D:\workbuddyclaw\iwencai_data\ |

启动 Chrome 调试模式(用户须手动执行一次):

chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\ChromeDebug

然后在 Chrome 中手动导航到 https://www.iwencai.com/unifiedwh/stockpicker/(AI选股页面)。

核心工作流

单日 / 批量爬取

使用 scripts/crawl.py,修改顶部配置后运行:

# Windows PowerShell/cmd,用 cmd /c 规避编码问题
cmd /c python D:\workbuddyclaw\iwencai_data\crawl.py

脚本关键参数(脚本顶部修改):

  • TRADE_DAYS:要爬取的日期列表(ISO格式 YYYY-MM-DD
  • AGENT:agent-browser 路径
  • DB_PATH:SQLite 数据库路径

导出 Excel 报告

使用 scripts/export_excel.py,生成包含5个Sheet的汇总报告:

cmd /c python D:\workbuddyclaw\iwencai_data\export_excel.py

关键技术细节(必读)

agent-browser 调用规范

# 正确:不要加 --timeout 参数(子命令不支持,会报 Unknown command)
cmd = [AGENT, "--cdp", "9222"] + list(args)

# eval 输出是双层 JSON 包裹,需双层解析
raw = ab("eval", js)
step1 = json.loads(raw)
result = json.loads(step1) if isinstance(step1, str) else step1

搜索框定位

snapshot 中搜索框类型为 textbox,带 "筛选条件" 提示文字:

for line in snap.split('\n'):
    if 'textbox' in line.lower() and 'ref=' in line:
        if '筛选条件' in line or '请输入您的' in line:
            m = re.search(r'ref=(e\d+)', line)
            if m:
                search_ref = m.group(1)
                break

分页翻页(Vue.js 兼容)

普通 click() 无效,必须用 dispatchEvent 触发 Vue 响应式事件:

// 分页 class 是 .page-item(不是 .iw-asidetable-page-item)
var items = document.querySelectorAll('.page-item');
// 找到目标页码元素后:
var evt = new MouseEvent('click', {bubbles: true, cancelable: true, view: window});
a.dispatchEvent(evt);

Windows 编码

所有 Python 脚本顶部加:

import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')

运行脚本用 cmd /c python script.py(不用 PowerShell 直接调用)。

数据库结构

表名:zt_stocks

| 字段 | 类型 | 说明 | |------|------|------| | trade_date | TEXT | 交易日期 YYYY-MM-DD | | stock_code | TEXT | 股票代码(6位) | | stock_name | TEXT | 股票名称 | | price | REAL | 收盘价 | | change_pct | REAL | 涨跌幅(%) | | zt_time | TEXT | 涨停时间 | | zt_status | TEXT | 涨停状态 | | volume | TEXT | 成交量 | | amount | TEXT | 成交额 | | first_zt_time | TEXT | 首次涨停时间 | | lb_count | INTEGER | 连板数 | | zt_type | TEXT | 涨停类型(首板/二连板等) | | float_mv | TEXT | 流通市值 | | vol_ratio | TEXT | 量比 | | themes | TEXT | 所属题材(+分隔) | | zt_tags | TEXT | 涨停标签 | | total_mv | TEXT | 总市值 |

参考文档

  • 爬取脚本完整实现:见 references/crawl_reference.md
  • 常见问题排查:见 references/troubleshooting.md