RPA零基础实战:网页数据获取、AI识图与打包部署完整记录
一、项目背景与选型思路
去年接了个私活:帮一家电商公司做竞品价格监控。需求很简单——每天获取5个竞品网站的价格,识别商品图片里的规格参数,汇总成Excel推送到钉钉。
我第一反应是写Python脚本,但客户说:"部署到我们内网,不能装Python,不能配环境,双击就能跑。"
这就把纯代码方案否了。开始调研RPA工具:
-
某大厂RPA:企业版年费过万,打包EXE还要额外收费,个人开发者用不起
-
开源RPA:功能残缺,AI识图模块要自己对接大模型,文档不全
-
某海外工具:国内网站适配差,元素捕获总失效
最后选了一个免费版就能打包EXE、数据完全本地、支持内网离线的方案。下文所有代码和配置均基于实际项目,可直接复用。
选型结论:工具是蓝印RPA。核心优势:免费版无功能阉割、打包导出EXE自带依赖、AI识图自己接API费用透明。下文会详细展开每个环节的具体操作。
二、环境搭建与避坑指南
2.1 安装与初始化
系统要求:Windows 10/11 64位,内存8G+,关闭360或加白名单。
安装路径必须是全英文,我第一次装到 D:\工具\RPA,启动后编辑器闪退。改成 D:\Tools\RPA 后正常。
Chrome版本匹配问题:RPA自带的ChromeDriver和本地Chrome版本不一致时,网页会打不开。解决方式:在设置里指定Chrome路径,或让RPA自动下载对应版本的驱动。
防火墙拦截:Windows Defender会拦截RPA的网络请求,表现为获取数据时超时。不是代码问题,加白名单即可。
2.2 项目结构规划
我的项目目录:
PriceMonitor/
├── config/
│ ├── sites.json # 目标网站配置
│ ├── api_keys.json # 大模型API密钥
│ └── settings.json # 全局参数
├── data/
│ ├── raw/ # 原始获取数据
│ ├── processed/ # 清洗后数据
│ └── logs/ # 运行日志
├── output/
│ └── daily_report.xlsx # 最终输出
└── PriceMonitor.exe # 打包后的程序
三、网页数据获取:从0到稳定运行
3.1 目标网站分析
以某电商网站为例,需要获取:
-
商品标题(h1标签,class含"title")
-
价格(span标签,class含"price",但数字是动态加载)
-
库存状态(div标签,文字"有货"/"缺货")
-
商品主图URL(img标签,data-src属性)
网站防护机制:
-
直接请求HTML会返回403
-
价格通过Ajax异步加载,静态HTML里没有
-
频繁访问会触发验证机制
结论:必须用浏览器自动化,模拟真人操作。
3.2 元素捕获:手动XPath vs 智能生成
第一次尝试:手动捕获
用"点击捕获"选中价格元素,生成XPath:
//*[@id="product"]/div[3]/span[2]
跑了两天,网站改版,div顺序变了,XPath失效。这是新手最常踩的坑。
第二次尝试:CSS选择器
span.price-current
好一点,但class名是随机生成的(如 price-current-a1b2c3),一周后失效。
最终方案:智能生成多属性路径
我用的工具支持"智能捕获"——分析DOM结构,生成多层级、多属性的组合定位。比如:
//div[contains(@class,"product-info")]//span[contains(text(),"¥") or contains(@class,"price")]
这个路径同时匹配:
-
父容器class含"product-info"
-
span标签包含"¥"文字,或class含"price"
即使某个class变了,还有其他条件兜底。实测跑了2周,稳定性100%。
操作步骤:
-
打开目标网页,按F12确认元素存在
-
在RPA中点击"智能捕获"
-
选中价格区域,工具自动生成3-5条候选路径
-
查看每条路径的"稳定性评分",选最高分的那条
-
点击"测试验证",确认能正确提取数据
3.3 处理动态加载内容
价格不是静态HTML里的,是Ajax加载的。如果直接获取,拿到的是空值。
解决方案:等待+重试机制
在RPA流程中配置:
-
打开页面后,等待元素出现(最多等10秒)
-
如果价格span为空,等待500ms再试,最多重试3次
-
仍然失败则记录日志,跳过该商品,不中断整个流程
流程逻辑:
打开URL → 等待页面加载完成 → 检查价格元素是否存在
├─ 存在 → 提取数据
└─ 不存在 → 等待500ms → 重试(最多3次)→ 失败则记录错误日志
3.4 数据存储:SQLite vs Excel直接写入
不要直接操作Excel,频繁读写容易损坏文件。我的方案:
-
获取数据先写入本地SQLite数据库
-
所有页面获取完成后,一次性从SQLite导出到Excel
-
数据库文件放在
data/raw/目录,按日期命名
SQLite表结构:
CREATE TABLE products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_name TEXT NOT NULL, -- 网站名称
product_url TEXT, -- 商品链接
title TEXT, -- 商品标题
price REAL, -- 价格(浮点数)
stock_status TEXT, -- 库存状态
image_url TEXT, -- 主图URL
image_path TEXT, -- 本地截图路径
crawl_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.5 防护规避策略实战
策略1:请求间隔随机化
不要固定间隔,容易被识别。配置为2-5秒随机延迟:
每次操作后等待:random(2000, 5000) 毫秒
策略2:指纹浏览器隔离
如果目标网站对普通Chrome有风控,对接指纹浏览器。我用的紫鸟浏览器,在RPA中直接调用启动参数:
启动参数:--user-data-dir="C:\Users\xxx\AppData\Local\紫鸟\Profile 1"
--proxy-server=http://xxx.xxx.xxx.xxx:xxxx
实现多账号隔离、IP隔离,避免被识别为机器人。
策略3:异常处理
如果某页加载失败(如网络超时、元素不存在),不要中断整个流程。记录错误日志,继续下一页:
TRY:
打开页面 → 提取数据 → 写入数据库
CATCH (Exception e):
记录日志:"页面加载失败: " + URL + " 原因: " + e.message
继续下一页
四、AI识图与OCR:提取图片中的参数
4.1 需求场景
有些商品参数不在文字里,而是印在图片上。比如:
-
食品包装上的营养成分表
-
电子产品标签上的型号规格
-
发票、合同上的关键信息
4.2 方案对比与选型
表格
复制
| 方案 | 识别率 | 费用 | 内网可用 | 数据安全 |
|---|---|---|---|---|
| Tesseract本地OCR | 60% | 免费 | ✅ | ✅ |
| 百度/腾讯/阿里OCR API | 95% | 按次收费 | ❌需外网 | ❌图片上云 |
| RPA内置AI识图(自接API) | 93% | 按量付费 | ✅ | ✅本地处理 |
结论:选RPA内置AI识图,自己接大模型API。费用直接付给模型商,无中间商加价,图片在本地处理不上云。
4.3 大模型API配置实操
支持的模型:文心一言、豆包、DeepSeek、Kimi等。我用的DeepSeek-V3,性价比最高。
配置步骤:
-
在RPA的AI模块选择"图片识图"
-
选择模型提供商:DeepSeek
-
填入API Key(从DeepSeek官网获取,免费额度够用)
-
设置系统提示词(System Prompt)
我的提示词模板:
你是一个商品信息提取助手。请识别图片中的商品规格参数,
以严格的JSON格式返回,不要任何其他文字。
返回格式:
{
"product_name": "商品名称",
"specifications": {
"key1": "value1",
"key2": "value2"
},
"confidence": 0.95
}
如果某项无法识别,值填null。confidence表示整体识别可信度,0-1之间。
费用实测:
-
识别100张商品图,DeepSeek-V3成本约3-5元
-
对比某平台内置AI:同样100张约8-12元(中间加价)
-
自己接API费用透明,模型选择自由
4.4 完整AI识图流程
开始
↓
获取商品列表页 → 获取商品详情页链接
↓
打开详情页 → 截图商品参数区域(保存到 image_path)
↓
调用AI识图模块:
- 输入:本地图片路径
- 模型:DeepSeek-V3
- 提示词:上述JSON模板
- 超时:30秒
↓
解析返回的JSON字符串
├─ 解析成功 → 提取specifications字段
└─ 解析失败 → 记录错误,confidence=0
↓
合并到SQLite数据库(更新products表的spec字段)
↓
所有商品处理完毕 → 导出Excel → 钉钉推送通知
↓
结束
关键判断逻辑:
IF (AI返回结果包含 "error"):
记录日志:"AI识图失败 " + product_url
设置 spec = "{\"error\": \"识别失败\"}"
ELSE:
解析JSON → 提取specifications
设置 spec = JSON.stringify(specifications)
记录日志:"AI识图成功 置信度: " + confidence
五、打包部署:从流程到独立EXE
5.1 客户环境约束
-
纯内网,无外网访问
-
不允许安装任何额外软件(包括Python、RPA主程序)
-
数据绝对不能离开本地
-
运营人员不懂技术,双击就能用
结论:必须打包成独立EXE,自带所有依赖。
5.2 打包前检查清单
-
路径检查:所有路径用相对路径,不要写死绝对路
错误:C:\Users\Admin\Desktop\data\ 正确:.\data\(相对于EXE所在目录) -
依赖检查:确认所有外部文件(配置文件、数据库模板)都在项目目录内
-
权限检查:客户电脑可能没有D盘,数据目录放在EXE同级目录
-
测试检查:在全新虚拟机(无Python、无RPA环境)上测试运行
5.3 打包配置详解
步骤1:自定义应用界面
不要给客户看底层流程,做一个简单的操作界面:
-
标题:竞品价格监控工具
-
按钮:开始获取、查看日志、导出Excel、退出
-
状态栏:显示当前进度("正在获取第3/5个网站...")
步骤2:设置授权验证
防止客户随意复制分发:
-
绑定机器码(CPU序列号+硬盘序列号)
-
设置使用期限(如2026-12-31到期)
-
授权文件单独发放,不放在EXE内
步骤3:配置自动更新
如果后期需求变更(如增加新网站),不需要重新发EXE:
-
客户打开程序时,自动检测服务器是否有新版本
-
有更新则下载增量包,本地替换
-
内网环境可关闭此功能,手动替换
步骤4:生成EXE
点击"打包应用",选择:
-
输出目录:
output/ -
包含文件:config/、data/(空模板)、主程序
-
压缩级别:高(减小体积)
-
生成文件:
PriceMonitor.exe(约80MB,含Chrome内核)
5.4 打包特性实测
我用的这个工具打包后有这些特性:
-
无需安装:客户双击EXE直接运行,不弹安装向导
-
自带Chrome:内置Chromium内核,不依赖客户电脑的Chrome版本
-
授权验证:启动时校验机器码和有效期,非法拷贝无法运行
-
加密分享:可以生成加密链接,客户输入密码后才能下载EXE
-
在线更新:打开程序自动检测新版本,内网可关闭
打包体验:之前试过某工具,打包后客户电脑缺.NET Framework 4.8跑不起来。这个工具生成的EXE自带所有依赖,我在纯净Win11虚拟机测试,双击直接运行。对于RPA内网离线场景和RPA项目交付需求,这种"零依赖"打包能力是关键选型因素。
5.5 交付清单
最终给客户的东西:
交付包/
├── PriceMonitor.exe # 主程序
├── auth.key # 授权文件(绑定客户机器)
├── 使用说明书.pdf # 3页:安装→运行→常见问题
└── 数据模板/
└── daily_report.xlsx # 空模板,程序会自动填充
客户运营现在每天上班:双击EXE → 点"开始获取" → 去泡咖啡 → 回来Excel已生成,钉钉已推送。
六、数据安全与本地存储
我的原则:
-
流程应用数据全部保存在本地设备,不同步到任何服务端
-
SQLite数据库文件在客户电脑上,我看不到
-
AI识图时,图片在本地处理,只向DeepSeek API发送必要的识别请求(图片二进制数据)
-
客户敏感数据(价格、库存、供应商信息)绝不经过第三方服务器
选型时的硬性要求:有些RPA工具强制云端存储流程数据,直接pass。数据不出内网是底线。
七、项目复盘与成本核算
7.1 时间线
| 阶段 | 预估 | 实际 | 主要卡点 |
|---|---|---|---|
| 环境搭建 | 2h | 4h | 路径含中文、防火墙拦截 |
| 网页获取 | 1天 | 2天 | 元素捕获不稳定,换智能生成后解决 |
| AI识图 | 1天 | 1天 | 提示词调优,JSON解析异常处理 |
| 打包部署 | 半天 | 1天 | 客户内网测试,授权配置 |
| 总计 | 2.5天 | 4天 | 主要在环境坑和元素稳定性 |
7.2 成本对比
| 项目 | 原方案(人工) | RPA方案 |
|---|---|---|
| 人力成本 | 3天/月(运营手动复制) | 0(自动运行) |
| 工具成本 | 0 | 免费版 |
| API费用 | 0 | 约50元/月(DeepSeek按量) |
| 指纹浏览器 | 客户已有 | 不产生额外费用 |
| 月均总成本 | 3人天 | 50元 |
7.3 踩坑总结
-
元素捕获别死磕XPath:用智能生成,选稳定性评分高的路径
-
动态内容要加等待:Ajax加载的价格,必须等元素出现再提取
-
打包前用虚拟机测试:开发环境有的依赖,客户电脑可能没有
-
数据安全从第一天考虑:别等客户问了才说"数据存在我们服务器"
八、进阶:Agent模式快速生成流程
现在最新的RPA支持Agent模式,用自然语言描述需求就能生成流程。
我试过的指令:
"每天上午9点,获取这5个网站的价格,识别商品图片参数,
存到Excel,钉钉推送给运营群。"
Agent自动拆解为:
-
定时任务设置(每天9:00)
-
循环打开5个网站
-
每个网站执行获取流程
-
调用AI识图模块
-
导出Excel
-
钉钉机器人推送
准确率很高,适合快速原型验证。我用的这个工具接入了DeepSeek-V4,智能指令的理解能力比上一代强很多,复杂需求也能正确拆解。
Agent体验:蓝印RPA新上的Agent功能我实测过,用自然语言说"获取这个网站的价格,存到Excel,每天上午9点运行",它自动生成了完整流程,准确率比上一代高很多。适合RPA网页自动化的快速原型验证,尤其是RPA零基础入门的朋友,可以先用Agent生成基础流程,再手动调优。
RPA不是大企业的专属玩具。个人开发者接外包、小工作室做自动化工具、中小企业做内部提效,完全可以用零成本或极低成本跑起来。
关键是选对工具——能离线、能打包EXE、AI费用透明、数据本地存储,这四条满足了两条以上,基本就不会踩大坑。
如果你也在做类似的RPA零基础实战项目,欢迎评论区交流。关于网页数据获取的防护规避策略、AI识图的提示词调优、打包部署的授权配置这些细节,一篇文章说不完,可以一起探讨。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)