批量从同花顺问财AI选股页抓取涨停股票数据,使用 agent‑browser 通过 Chrome CDP 操作浏览器,数据存入 SQLite,可导出 Excel 汇总报告。适用场景:爬取/提取问财涨停数据、查询指定日期涨停、批量获取历史涨停记录等。
使用前确认以下路径(可从用户记忆或直接询问):
配置项默认值PythonC:\Users\JacobWu\AppData\Local\Programs\Python\Python312\python.exeagent-browserC:\Users\JacobWu\AppData\Roaming\npm\agent-browser.cmdChrome CDP端口9222数据库路径D:\workbuddyclaw\iwencai_zt.db数据目录D:\workbuddyclaw\iwencai_data\
启动 Chrome 调试模式(用户须手动执行一次):
text
chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\ChromeDebug
然后在 Chrome 中手动导航到 https://www.iwencai.com/unifiedwh/stockpicker/(AI选股页面)。
使用 scripts/crawl.py,修改顶部配置后运行:
bash
# 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 数据库路径使用 scripts/export_excel.py,生成包含5个Sheet的汇总报告:
bash
cmd /c python D:\workbuddyclaw\iwencai_data\export_excel.py
python
# 正确:不要加 --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,带 "筛选条件" 提示文字:
python
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
普通 click() 无效,必须用 dispatchEvent 触发 Vue 响应式事件:
javascript
// 分页 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);
所有 Python 脚本顶部加:
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_dateTEXT交易日期 YYYY-MM-DDstock_codeTEXT股票代码(6位)stock_nameTEXT股票名称priceREAL收盘价change_pctREAL涨跌幅(%)zt_timeTEXT涨停时间zt_statusTEXT涨停状态volumeTEXT成交量amountTEXT成交额first_zt_timeTEXT首次涨停时间lb_countINTEGER连板数zt_typeTEXT涨停类型(首板/二连板等)float_mvTEXT流通市值vol_ratioTEXT量比themesTEXT所属题材(+分隔)zt_tagsTEXT涨停标签total_mvTEXT总市值
references/crawl_reference.mdreferences/troubleshooting.md