news 2026/9/5 21:00:41

Stagehand AI 浏览器自动化实战:一个脚本跑通网页数据采集全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Stagehand AI 浏览器自动化实战:一个脚本跑通网页数据采集全流程

Stagehand AI 浏览器自动化实战:一个脚本跑通网页数据采集全流程

【免费下载链接】stagehandThe SDK For Browser Agents项目地址: https://gitcode.com/GitHub_Trending/stag/stagehand

Stagehand 是一个 AI 浏览器自动化 SDK,用 act、extract、observe 三个原语驱动浏览器,让你不写选择器就能完成点击、填表和抓取。本文用本地浏览器搭一条完整的网页数据采集链路:打开列表页,观察可操作元素,点击进入详情页,最后把结构化数据提取出来。

🎯 场景:从电商页采集商品数据

假设你需要从一个商品列表页批量抓取商品名和价格,再交给下游程序处理。手写选择器很脆弱:站点一改版,脚本就失效。用 Stagehand 的 AI 浏览器自动化,你只用自然语言描述意图,元素定位交给模型。跟完下面几步,你会得到一个在本机跑通的自动化脚本。

📦 动手准备:3 条命令装好 Stagehand

本地运行需要 Node.js 22.18+ 和已安装的 Chrome。初始化项目并安装 SDK:

mkdir my-stagehand-app && cd my-stagehand-app pnpm init -y pnpm install @browserbasehq/stagehand zod

🛠 分步实现

1. 启动本地浏览器并创建实例

先用localBrowser在本机启动一个 Chrome,再把它交给Stagehand.create()。开发阶段用headless: false,你能直接看到浏览器每一步动作,方便排查:

import { localBrowser, Stagehand } from "@browserbasehq/stagehand"; import { z } from "zod/v4"; const browser = await localBrowser.launch({ headless: false }); const stagehand = await Stagehand.create({ browser }); const [page] = await browser.context.pages(); await page.goto("https://example-store.com");

2. 用 observe 预览页面上能做什么

动手前先"侦查":observe返回当前页面上可执行的操作列表。返回的Action对象之后可以直接回放,不再触发模型推理,这是 Stagehand 省钱提速的核心模式:

const { data: actions } = await stagehand.observe("Find all product links"); console.log(actions.map((a) => a.actionDescription)); // 侦查满意后,执行第一个动作 await stagehand.act("click the first product link");

3. extract 提取结构化数据

进入详情页后,用extract配 Zod schema 取值。Stagehand 会先按 schema 校验再返回,你拿到的是强类型数据,直接落盘或写入数据库:

const { data } = await stagehand.extract( "extract the product name and price", z.object({ name: z.string(), price: z.number() }), ); console.log(data); // { name: "Keyboard", price: 199 }

🚀 调优进阶:成本与速度

  • 问题:每步都走大模型,慢且贵。手段:默认挂便宜模型,只在关键提取调用上换强模型,单次调用即可覆盖。
  • 问题:重复运行任务时重复计费。手段:切到 Browserbase 云浏览器并开启缓存,相同调用直接返回缓存结果,不消耗任何 token。
const stagehand = await Stagehand.create({ browser, // 换成 browserbase.launch({ apiKey }) 得到 model: { modelName: "google/gemini-2.5-flash" }, // 默认用便宜模型 cache: { threshold: 1 }, // 一次相同结果后开始命中缓存 });

❓ 常见问题

缓存为什么一直不命中?

本地浏览器没有缓存服务,cache选项不生效,必须用browserbase.launch()启动。另外指令措辞是缓存键的一部分,换同义词就会变成新键。

act 点错元素怎么办?

先用observe确认页面实际内容,再给调用传locator把快照范围收敛到你关心的容器,减少无关干扰。

支持 Python 和 Go 吗?

支持。三个原语语义与 TypeScript 版一致,分别用 Pydantic 模型和 Go 结构体替代 Zod schema,API key 也换成对应语言的 launch 参数传递。

📚 延伸阅读

  • 快速上手:packages/docs/v4/first-steps/quickstart.mdx
  • act 完整参考:packages/docs/v4/basics/act.mdx
  • observe 完整参考:packages/docs/v4/basics/observe.mdx
  • 缓存最佳实践:packages/docs/v4/best-practices/caching.mdx
  • SDK 核心源码:packages/sdk-ts/src/stagehand.ts

【免费下载链接】stagehandThe SDK For Browser Agents项目地址: https://gitcode.com/GitHub_Trending/stag/stagehand

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 20:57:51

蓝牙音箱设计与调试实战:从方案选型到产测落地

这次我们来看一个蓝牙音箱项目的完整设计记录。文章标题写的是“之45”,实际是本系列第一版原型迭代到第45稿之后整理出来的工程笔记,覆盖的不只是蓝牙芯片怎么连喇叭,而是从方案选型、音频链路、电源、天线布局,到配对调试、产测…

作者头像 李华
网站建设 2026/9/5 20:57:47

蓝牙音箱设计联调与故障排查:从能响到稳定量产

蓝牙音箱项目走到“能响”这个阶段相对容易,真正难的是配对稳定、播放不卡顿、通话切换正常、距离不缩水、量产一致性好。这次接着蓝牙音箱项目设计推进到第 45 个节点,不聊空泛概念,直接把蓝牙传输链路、音频回放链路、电源与射频的相互影响…

作者头像 李华
网站建设 2026/9/5 20:55:23

基于YOLOv8与姿态估计的课堂专注度分析系统实战

简介:本资源是一套基于YOLOv8实现的智慧教室学生专注度分析系统,面向计算机、人工智能、自动化等专业的本科生及研究生,解决课堂场景下学生行为状态(如听讲、低头、侧身、玩手机、睡觉)的实时检测与专注度量化评估问题…

作者头像 李华
网站建设 2026/9/5 20:55:20

决策树、集成学习与聚类:原理、调参与收入预测实战

1. 先别急着调包:决策树、集成学习、聚类到底在解决什么我见过太多人学机器学习,一上来就from sklearn.tree import DecisionTreeClassifier,调一个决策树出来看到准确率还行就觉得自己懂了。等到期末复习或者面试被问到"决策树怎么剪枝…

作者头像 李华
网站建设 2026/9/5 20:55:13

Chatterbox TTS 部署全解:高可用、监控告警与性能调优

Chatterbox TTS 部署全解:高可用、监控告警与性能调优 【免费下载链接】chatterbox SoTA open-source TTS 项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox 想把 Chatterbox TTS 部署到生产环境,光跑通示例远远不够。Chat…

作者头像 李华