影刀RPA新手教程:股票数据自动化完全指南——实时行情采集K线数据保存与异动提醒 影刀RPA新手教程股票数据自动化完全指南——实时行情采集K线数据保存与异动提醒作者林焱案例主线老张的股票数据全自动监控老张是业余股票投资者每天要手动查看50只自选股的实时行情记录K线数据到Excel并设置价格异动提醒。人工操作每天耗时3小时以上且经常因为工作忙碌错过最佳买卖点。本教程用影刀RPA搭建股票数据全自动监控系统。一、认识影刀与安装配置影刀RPA是零代码自动化工具支持网页自动化、桌面软件自动化、Excel处理、HTTP请求等核心能力特别适合股票数据抓取和监控这类需要定时执行的场景。股票数据来源环境准备股票数据可以通过多个渠道获取东方财富网免费、数据全面、更新快适合国内A股同花顺网页版数据准确、支持实时行情新浪财经API接口简单、易于抓取雪球网社区数据丰富、适合基本面分析本教程以东方财富网为主要数据源在Chrome浏览器中操作。在影刀设置中将默认浏览器设置为Chrome并开启自动携带登录态选项。安装配置要点下载影刀安装包安装路径必须为纯英文例如D:\StockRPA\。安装完成后重启电脑确保浏览器插件正确加载。首次打开影刀时按照向导完成设备激活和账号登录。二、元素定位四合一股票网站通常使用传统Java或PHP架构元素ID相对稳定但仍需四种定位方式组合使用。1. 智能匹配东方财富网的自选股列表中的股票名称、价格等元素相对稳定优先使用智能匹配。捕获后无需特殊设置东方财富网的元素ID不会频繁变化。2. XPath定位股票列表中的行数据可以使用XPath按位置定位//table[idtable_wrapper-table]//tr[1]//td[2]东方财富网常用XPath语法//input[idsearch-input]按ID定位搜索框//table[idtable_wrapper-table]//tr定位表格所有行//span[classstock-price]按类名定位股票价格//a[contains(text(),加入自选)]按文字定位按钮3. CSS选择器东方财富网的CSS类名相对稳定使用CSS选择器是最优选择#search-input/* 搜索输入框 */.table-wrapper-table tr/* 股票列表行 */.stock-price/* 股票价格 */.rise/* 涨 */.fall/* 跌 */4. 图像识别股票网站的加入自选、查看K线等图标按钮可能没有文字标识使用图像识别。截取按钮截图使用点击图像指令设置相似度0.85。实战定位股票价格元素东方财富网的股票价格在span classstock-price rise或span classstock-price fall标签中。正确做法是使用//span[contains(class,stock-price)]定位价格元素然后获取其文本内容。三、变量与数据类型老张的股票数据需要存储在本地Excel表中并用变量在流程中传递和处理。数据表结构使用启动Excel指令打开股票数据表字段包括股票代码、股票名称、当前价格、涨跌幅、成交量、成交额、市盈率、市净率、更新时间。使用读取Excel内容指令读取A2到J500区域保存为数据表变量stock_table。字典变量应用每只股票的基础信息用字典存储店群矩阵自动化突破运营极限股票基础信息 { 代码: 600519, 名称: 贵州茅台, 所属板块: 白酒, 成本价: 1850.00, 持有数量: 100 }使用在字典中设置和从字典中获取指令操作字典变量。列表变量应用需要批量监控多只股票时使用列表存储股票代码。使用在列表中添加指令将每只股票的代码依次加入列表变量stock_code_list。四、流程控制条件判断股票价格异动需要根据涨跌幅判断。使用如果…否则指令如果 涨跌幅 5 执行发送大涨提醒通知 否则如果 涨跌幅 -5 执行发送大跌提醒通知 否则如果 涨跌幅 3 或 涨跌幅 -3 执行发送明显波动提醒通知 否则 执行不发送通知继续监控 结束如果循环遍历需要监控多只自选股。使用循环Excel内容指令遍历自选股列表对每只股票执行获取实时行情、与成本价比较、判断是否需要提醒。异常捕获整个数据抓取流程使用尝试捕获错误指令包裹。如果某只股票数据抓取失败如停牌、退市捕获错误后记录失败原因到日志表继续处理下一只股票。五、网页自动化——实时行情采集登录态管理东方财富网的大部分数据不需要登录即可查看但自选股管理和高级数据需要登录。使用获取浏览器Cookie指令将Cookie保存为JSON格式到本地文件C:\yingdao_workspace\stock\cookies.json。每次运行前用设置浏览器Cookie指令注入。实时行情抓取进入东方财富网自选股页面或单个股票页面。使用循环网页相似元素指令遍历股票列表中的每一行。对每只股票使用获取网页元素内容指令读取股票代码、股票名称、当前价格、涨跌幅、成交量、成交额。数据写入Excel将抓取到的实时行情数据写入本地Excel表。使用写入Excel内容指令在行情数据表的末尾追加行。字段包括抓取时间、股票代码、股票名称、当前价格、涨跌幅、成交量、成交额、市盈率。六、数据处理K线数据保存K线数据开盘价、收盘价、最高价、最低价、成交量需要按日期保存。使用发送HTTP请求指令调用东方财富网的K线数据APIGET https://push2his.eastmoney.com/api/qt/stock/kline/get?secid1.600519fields1f1,f2,f3,f4,f5,f6fields2f51,f52,f53,f54,f55,f56,f57,f58klt101fqt1beg20240101end20241231解析返回的JSON数据提取K线数据并写入Excel。涨跌幅计算使用计算表达式指令计算涨跌额和涨跌幅涨跌额 当前价格 - 昨收价格 涨跌幅 (涨跌额 / 昨收价格) * 100计算结果使用四舍五入指令保留2位小数并添加%符号。异动判断使用如果…否则指令判断是否需要发送异动提醒如果 (当前价格 - 成本价) / 成本价 0.1 执行发送盈利10%提醒通知 否则如果 (当前价格 - 成本价) / 成本价 -0.05 执行发送亏损5%提醒通知 否则如果 涨跌幅 5 执行发送单日大涨提醒通知 否则如果 涨跌幅 -5 执行发送单日大跌提醒通知 结束如果七、鼠标键盘图像自动化处理股票网站弹窗东方财富网偶尔弹出关注我们、下载APP等营销弹窗。使用按键盘按键指令发送Esc键关闭弹窗。在关键操作前先发送一次Esc。鼠标滚轮操作股票列表较长时需要滚动加载更多。使用执行JavaScript指令执行滚动function(element,input){window.scrollTo(0,document.body.scrollHeight);return滚动完成;}截图取证股票价格出现异动时使用网页截图指令截取股票行情页面保存为PNG文件命名格式股票代码_异动类型_时间戳.png。截图保存在C:\yingdao_workspace\stock\screenshots\目录下。八、进阶技能定时监控老张希望每5分钟自动监控一次自选股行情。在影刀计划任务中新建定时任务触发方式选择按间隔执行间隔设置为5分钟。多市场监控如果同时监控A股、港股、美股需要管理多个数据源。在Excel配置表中添加市场名称和数据源URL两列循环中根据当前行读取对应URL并抓取数据。企业微信通知股票价格异动时使用发送企业微信消息指令向老张发送异动提醒。消息内容包含股票名称、当前价格、涨跌幅、异动类型、建议操作买入/卖出/持有。九、平台实战——K线数据保存K线数据API调用使用发送HTTP请求指令调用东方财富网的K线数据API。请求示例GET https://push2his.eastmoney.com/api/qt/stock/kline/get Query Parameters: secid: 1.600519 (1代表深圳0代表上海) fields1: f1,f2,f3,f4,f5,f6 fields2: f51,f52,f53,f54,f55,f56,f57,f58 klt: 101 (101日K102周K103月K) fqt: 1 (是否复权1前复权2后复权) beg: 20240101 (开始日期) end: 20241231 (结束日期)JSON数据解析API返回的数据是JSON格式。使用解析JSON指令将响应解析为字典。K线数据在data.klines字段中是字符串数组每个元素格式为日期,开盘,收盘,最高,最低,成交量,成交额,振幅。使用Python脚本指令解析K线数据defparse_kline_data(klines): 解析东方财富网K线数据 klines: 字符串数组每个元素格式为日期,开盘,收盘,最高,最低,成交量,成交额,振幅 importdatetime result[]forlineinklines:partsline.split(,)iflen(parts)7:kline{日期:parts[0],开盘:float(parts[1]),收盘:float(parts[2]),最高:float(parts[3]),![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7301ce70136e484289ac8f9b05240e85.png#pic_center)最低:float(parts[4]),成交量:int(parts[5]),成交额:float(parts[6]),}# 计算涨跌幅iflen(result)0:prev_closeresult[-1][收盘]kline[涨跌幅]round((kline[收盘]-prev_close)/prev_close*100,2)else:kline[涨跌幅]0.0result.append(kline)returnresultExcel保存将解析后的K线数据写入Excel。使用写入Excel内容指令在K线数据表中追加多行。字段包括日期、开盘价、收盘价、最高价、最低价、成交量、成交额、涨跌幅。十、系统联动Excel数据分析每日收盘后使用Python脚本指令执行数据分析importpandasaspddefanalyze_stock_data(kline_data): 分析K线数据计算技术指标 dfpd.DataFrame(kline_data)df[日期]pd.to_datetime(df[日期])dfdf.sort_values(日期)# 计算5日均线df[MA5]df[收盘].rolling(window5).mean()# 计算10日均线df[MA10]df[收盘].rolling(window10).mean()# 计算20日均线df[MA20]df[收盘].rolling(window20).mean()# 计算MACD指标简化版df[EMA12]df[收盘].ewm(span12).mean()df[EMA26]df[收盘].ewm(span26).mean()df[DIF]df[EMA12]-df[EMA26]df[DEA]df[DIF].ewm(span9).mean()df[MACD](df[DIF]-df[DEA])*2returndf.to_dict(records)邮件推送每日收盘后使用发送邮件指令将当日行情汇总和K线数据分析报告作为附件发送给老张。邮件主题格式【股票日报】YYYY年MM月DD日正文简要说明监控股票数量、异动股票数量、建议关注的股票列表。飞书多维表格同步如果团队共享股票研究数据可以将股票数据同步到飞书多维表格。使用影刀的飞书多维表格指令在数据表中追加记录字段包含日期、股票代码、股票名称、收盘价、涨跌幅、成交量、MA5、MA10、MACD。十一、工程化与规范temu店群自动化报活动案例应用结构规范规范的应用结构配置区读取配置、校验必要参数、初始化区启动浏览器、设置超时时间、主流程区行情抓取、K线数据保存、异动判断、异常处理区错误捕获与记录、收尾区生成报表、发送通知、关闭浏览器。用注释指令在关键步骤前添加说明格式为【步骤N】操作说明 - 预计耗时XX秒。变量命名规范全局变量前缀g_g_cookie_path、g_notify_threshold循环变量前缀loop_loop_stock_code、loop_kline临时变量小写下划线temp_price、temp_change_percent配置外部化股票代码列表、监控阈值、通知方式等配置信息存储在外部Excel配置表中不硬编码在应用内。使用读取Excel内容指令从配置表读取配置。配置表示例C:\yingdao_workspace\stock\config.xlsx配置项配置值说明监控间隔分钟5每5分钟监控一次大涨提醒阈值%5单日涨幅超过5%时提醒大跌提醒阈值%-5单日跌幅超过-5%时提醒盈利提醒阈值%10盈利超过10%时提醒亏损提醒阈值%-5亏损超过-5%时提醒通知方式企业微信支持企业微信、邮件、钉钉数据源东方财富网支持东方财富、同花顺、新浪财经运行日志使用写入日志指令记录关键操作。日志文件按日期命名保存在C:\yingdao_logs\stock\目录下。日志格式示例[2025-01-15 09:30:15] [INFO] 定时任务启动开始监控自选股行情 [2025-01-15 09:30:16] [INFO] 本次监控股票数量50只 [2025-01-15 09:30:45] [WARN] 股票600519 贵州茅台数据抓取失败已记录到失败清单 [2025-01-15 09:31:22] [INFO] 成功抓取49只股票行情数据 [2025-01-15 09:31:30] [INFO] 发现3只股票异动600519涨5.2%、000001跌-6.1%、600036涨7.8% [2025-01-15 09:31:35] [INFO] 异动提醒已发送到企业微信 [2025-01-15 09:31:40] [INFO] 本次监控任务完成耗时25秒十二、速查表与常见报错常见报错速查报错信息可能原因解决方法TimeoutException: Message: timeout页面加载超时股票网站服务器响应慢或网络问题增加等待元素出现的超时时间至30秒检查网络连接避开股市开盘和收盘的流量高峰时段9:30-10:00、14:30-15:00ElementNotInteractableException元素被遮挡弹窗、遮罩层、广告先按Esc关闭弹窗使用等待元素可见指令等待元素进入视口检查是否有iframe嵌套StaleElementReferenceException页面刷新导致元素失效在循环内重新获取元素后再操作使用For次数循环代替相似元素循环Cookie失效登录态过期通常7天后重新手动登录东方财富网使用获取浏览器Cookie指令更新Cookie文件API调用失败API接口变更或请求参数错误检查API请求URL和参数是否正确查看东方财富网官方文档或开发者工具中的网络请求数据解析失败API返回的数据格式变更使用调试变量面板查看API返回的原始数据调整解析逻辑发送通知失败企业微信Webhook失效或网络问题检查企业微信机器人Webhook地址是否正确重新获取Webhook地址Excel写入失败Excel文件被其他程序占用确保Excel文件没有被手动打开使用关闭Excel指令关闭所有Excel进程后再写入股票网站元素定位速查# 东方财富网 - 搜索框 //input[idsearch-input] # 东方财富网 - 自选股列表行 //table[idtable_wrapper-table]//tr # 东方财富网 - 股票价格 //span[contains(class,stock-price)] # 东方财富网 - 涨跌幅 //span[contains(class,rise) or contains(class,fall)] # 同花顺 - 股票搜索框 //input[idsearchBox] # 新浪财经 - 股票价格 //div[idprice]/* 东方财富网常用样式 */#search-input/* 搜索输入框 */.table-wrapper-table tr/* 自选股列表行 */.stock-price/* 股票价格 */.rise/* 涨 */.fall/* 跌 */.stock-name/* 股票名称 *//* 同花顺常用样式 */#searchBox/* 搜索框 */.stock-item/* 股票项 */.price-now/* 当前价格 */股票数据API调用示例# 1. 东方财富网 - 实时行情单个股票 GET https://push2.eastmoney.com/api/qt/stock/get?secid1.600519fieldsf43,f44,f45,f46,f47,f48,f49,f50,f51,f52,f57,f58,f84,f85,f86,f168,f169,f170,f171 # 2. 东方财富网 - K线数据日K GET https://push2his.eastmoney.com/api/qt/stock/kline/get?secid1.600519fields1f1,f2,f3,f4,f5,f6fields2f51,f52,f53,f54,f55,f56,f57,f58klt101fqt1beg20240101end20241231 # 3. 新浪财经 - 实时行情多个股票逗号分隔 GET https://hq.sinajs.cn/listsh600519,sz000001 # 4. 腾讯财经 - 实时行情 GET https://qt.gtimg.cn/qsh600519Python股票数据分析脚本汇总# 1. 计算移动平均线MAdefcalculate_ma(prices,window5): 计算移动平均线 prices: 价格列表按时间顺序 window: 窗口大小如5日、10日、20日 importpandasaspd seriespd.Series(prices)maseries.rolling(windowwindow).mean().tolist()returnma# 2. 计算MACD指标defcalculate_macd(prices,fast12,slow26,signal9): 计算MACD指标 importpandasaspd seriespd.Series(prices)ema_fastseries.ewm(spanfast).mean()ema_slowseries.ewm(spanslow).mean()difema_fast-ema_slow deadif.ewm(spansignal).mean()macd(dif-dea)*2return{DIF:dif.tolist(),DEA:dea.tolist(),MACD:macd.tolist()}# 3. 计算KDJ指标defcalculate_kdj(high,low,close,n9): 计算KDJ指标 importpandasaspdimportnumpyasnp highpd.Series(high)lowpd.Series(low)closepd.Series(close)lowestlow.rolling(windown).min()highesthigh.rolling(windown).max()rsv(close-lowest)/(highest-lowest)*100krsv.ewm(com2).mean()dk.ewm(com2).mean()j3*k-2*dreturn{K:k.tolist(),D:d.tolist(),J:j.tolist()}# 4. 计算RSI指标defcalculate_rsi(prices,period14): 计算RSI指标 importpandasaspdimportnumpyasnp seriespd.Series(prices)deltaseries.diff()gaindelta.where(delta0,0)loss-delta.where(delta0,0)avg_gaingain.rolling(windowperiod).mean()avg_lossloss.rolling(windowperiod).mean()rsavg_gain/avg_loss rsi100-(100/(1rs))returnrsi.tolist()# 5. 判断金叉/死叉defcheck_golden_death_cross(ma_short,ma_long): 判断均线金叉买入信号或死叉卖出信号 ma_short: 短期均线如MA5 ma_long: 长期均线如MA20 返回1金叉-1死叉0无信号 iflen(ma_short)2orlen(ma_long)2:return0# 前一天短期均线 长期均线今天短期均线 长期均线 金叉ifma_short[-2]ma_long[-2]andma_short[-1]ma_long[-1]:return1# 金叉# 前一天短期均线 长期均线今天短期均线 长期均线 死叉ifma_short[-2]ma_long[-2]andma_short[-1]ma_long[-1]:return-1# 死叉return0# 无信号调试技巧股票数据抓取涉及实时数据调试时建议不要在股市交易时段9:30-15:00进行调试因为实时数据不断变化可能导致调试结果不稳定。调试技巧在抓取数据前打断点确认股票代码列表正确在解析数据前打断点确认API返回的数据格式正确在写入Excel前打断点确认解析后的数据正确使用调试变量面板查看每次循环中的股票数据确认无异常值如果必须使用断点调试循环内部设置一个调试模式全局变量只有在调试模式下才暂停总结通过本文搭建的股票数据全自动监控系统老张每天3小时的人工监控工作压缩到0全自动运行只有在收到异动提醒时才需要人工判断是否操作。系统自动完成实时行情采集每5分钟、K线数据保存每日收盘后、异动提醒实时、技术指标计算每日收盘后、数据分析报告生成与推送每日收盘后。重要提醒股票投资有风险自动化工具仅供参考不构成投资建议不要完全依赖自动化工具进行投资决策需要结合基本面、政策面、资金面等多方面因素综合判断定期检查自动化系统的运行日志确保数据准确性遵守各大数据源的使用条款不要频繁请求导致IP被封影刀RPA让普通投资者也能拥有机构级的自动化监控能力把宝贵的时间用在有价值的分析和决策上。#影刀RPA #RPA教程 #股票数据 #自动化监控 #K线数据作者林焱