☰
Heym Playwright 浏览器自动化实战:Auto Heal 自愈选择器让爬虫不脆弱
2026/10/15 22:15:53 网站建设 项目流程

【免费下载链接】heym

Build agentic systems. Run them with confidence. Orchestrate agents, automate business processes, inspect every execution, and keep humans in control. Deploy Heym on your own infrastructure.

项目地址:https://gitcode.com/gh_mirrors/he/heym
点击查看免费下载

Heym 是一个可以部署在自己基础设施上的开源 Agent 工作流编排平台,其中的 Playwright 节点提供了开箱即用的浏览器自动化能力:可视化步骤、AI 自然语言步骤,以及 Auto Heal 自愈选择器。当你用爬虫采集数据时,页面一次改版就能让写死的 CSS 选择器集体失效;Heym 的 Auto Heal 会在选择器连续失败后,自动调用 LLM 分析当前页面 HTML 与截图,替换为更稳健的 role/text 定位器,让爬虫在页面结构变化时"自己修复自己"。

为什么爬虫最怕"选择器腐烂"

传统爬虫脚本的脆弱点几乎都集中在选择器上:

  • 网站改版换了 class 名,.btn-primary一夜之间全部失效
  • 动态渲染导致元素出现时间不确定,点击落空
  • 页面结构微调后,采集脚本大面积报错却无人知晓

Heym 的 Playwright 节点把这些高频故障场景做成了平台能力,而不是让你自己写一堆 try/except。核心源码位于 playwright_node.py,AI 步骤与自愈逻辑由 playwright_code_generator.py 生成。

快速开始:部署 Heym 并打开画布

本地启动非常简单,只需准备 Bun、Python 3.11+、UV 和 Docker:

git clone https://gitcode.com/gh_mirrors/he/heym cd heym ./run.sh

启动后访问 http://localhost:4017 创建账号,进入可视化画布。左侧节点面板中选中 Playwright 节点拖入画布,即可开始搭建浏览器自动化流程:

生产环境可以使用 Docker Compose 一键部署:cp .env.example .env && ./deploy.sh,详见 ENVIRONMENT-VARIABLES.md。

用可视化步骤组装浏览器操作

点击 Playwright 节点,在右侧属性面板中用 Add Step 逐步添加动作,每一步都可以单独开启/关闭(关闭的步骤保留在列表中但运行时跳过),方便定位问题而不删除工作成果。常用步骤类型:

步骤作用
navigate打开 URL(支持表达式,如$userInput.body.url)
click / type / fill点击、逐字输入、填充表单
getText / getHTML / getAttribute采集元素文本、HTML、属性
getVisibleTextOnPage采集整页可见文本(整页正文提取神器)
scrollDown / scrollUp / wait / refresh滚动、等待、刷新
screenshot截图(base64 存入 results)
aiStepAI 自然语言步骤(下节重点)

完整参数说明见官方文档 playwright-node.md。运行工作流后,每个步骤的输出通过outputKey存入$节点名.results,后续节点可直接引用:

Auto Heal 自愈选择器:AI 三步挽救失败的选择器

这是本文的主角。在 aiStep 属性中勾选Auto heal mode后,Heym 的自愈流程是:

  1. 某个选择器动作(click/type/fill/hover/selectOption)连续失败 2 次后触发自愈
  2. Heym 抓取当前页面的 HTML 与截图,连同失败步骤一起发送给 LLM
  3. LLM 返回一个更稳健的替代定位器,通常是role=button[name='Submit']或text=Exact text这类文本/角色定位器,而不是脆弱的 CSS 路径
  4. 用新选择器立即重试,流程继续执行

对应的自愈提示词与接口在 playwright.py 中定义,LLM 被约束只能返回 click、type、fill、hover、selectOption 这五类交互动作,保证替换结果可执行。自愈的代价极低——只在失败时才会多一次 LLM 调用,成功路径零额外开销。

步骤缓存 + 截图理解:把 AI 步骤成本压到最低

配合两个开关,AI 步骤可以做到"偶尔调用 LLM,平时白嫖缓存":

  • Save steps for future usages(saveStepsForFuture):第一次由 LLM 生成的步骤会被写回节点保存,后续运行直接复用缓存步骤,不再调用 LLM(见 playwright.py)。页面没变就不花钱,页面变了再由 Auto Heal 兜底
  • Send screenshot to LLM(sendScreenshot):把页面截图一并发给 LLM,对视觉型元素(图片按钮、Canvas 区域)的定位明显更准

抗检测与登录态:让爬虫更像真实用户

Heym 还在两个"爬虫老难题"上做了内建支持:

  • Reduce automation flags(playwrightStealth):移除--enable-automation等自动化特征、去掉 User Agent 里的HeadlessChrome、补齐window.chrome与插件指纹,减少被反爬识别为脚本的概率
  • Cookie Bootstrap 登录态恢复:启用 Auth Bootstrap 后,Heym 先从存储的storageState或 cookies 恢复登录,检查指定选择器确认登录成功;如果恢复失败,自动执行你配置的 Fallback 登录步骤。官方推荐的用法是:先跑一次带网络捕获的节点,把$节点名.cookies存进全局变量,后续节点通过$global.authState复用登录态

运行后如何验证:输出字段与 Traces 面板

一次运行结束后,Playwright 节点的输出字段非常直白:

  • $playwrightNode.status——"ok"表示成功
  • $playwrightNode.results—— 各步骤的采集结果(getText、screenshot 等)
  • $playwrightNode.screenshot—— 截图(base64)
  • $playwrightNode.cookies/$playwrightNode.networkRequests—— 开启登录态或网络捕获时的附加数据

AI 步骤的每次 LLM 调用(请求、响应、耗时、token 成本)都可以在 Traces 页面完整追踪,排查自愈是否触发一目了然:

常见问题 FAQ

Q1:纯步骤模式(不用 AI)也有 Auto Heal 吗?Auto Heal 依赖 LLM,只在 aiStep 上生效。纯手动步骤中某个选择器失效时,可以用每步的开关先隔离该步骤,再修正选择器。

Q2:AI 步骤会一直调 LLM 吗?不会。勾选 Save steps for future usages 后,后续运行直接复用缓存步骤,跳过 LLM 调用;只有缓存步骤失效且开启 Auto Heal 时才会额外调用一次。

Q3:能不能直接写 Playwright Python 代码?可以,把 Mode 切到 Run Code 即可。但自定义代码属于任意 Python 执行,默认关闭,需管理员设置HEYM_PLAYWRIGHT_CUSTOM_CODE_ENABLED=true启用,启用后运行在 Heym 的加固沙箱容器中。日常使用推荐步骤模式。

延伸阅读

  • Playwright 节点完整文档:playwright-node.md
  • Crawler 节点(基于 FlareSolverr 的轻量抓取):crawler-node.md
  • 为什么选择 Heym:why-heym.md
  • 节点类型总览:node-types.md

【免费下载链接】heym

Build agentic systems. Run them with confidence. Orchestrate agents, automate business processes, inspect every execution, and keep humans in control. Deploy Heym on your own infrastructure.

项目地址:https://gitcode.com/gh_mirrors/he/heym
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询