自动化工具 stagehand 有体验过的吗

呼噜呼噜 · August 13, 2025 · Last by 小黑子-IKUN replied at August 13, 2025 · 472 hits

痛点

没看太懂它的本地部署是怎么部署的?难道就是拉整个代码仓库到本地吗?找了很多帖子。介绍的都是一知半解。问了 Ai 回答的也不是很准确。怕自己在这个上边走弯路。想问一下有没有人使用过。能给个避坑指南呢?
https://docs.stagehand.dev/reference/playwright_interop -官方文档
https://github.com/browserbase/stagehand/issues -代码仓库

共收到 1 条回复 时间 点赞
1Floor has deleted

我帮你试了下,直接安装就可以用了,就是这个模型好像只能用国外的

  1. 安装
pip install stagehand
python -m playwright install  #playWright相关依赖
pip install python-dotenv

2.设置环境变量,项目文件夹里创建.env 文件

# 前面这两个配置呢,是如果你要用云端Browserbase调试,就配置
export BROWSERBASE_API_KEY="your_browserbase_api_key"
export BROWSERBASE_PROJECT_ID="your_browserbase_project_id"

# 这个是你要用的大模型密钥
export MODEL_API_KEY="your_model_api_key"  # OpenAI, Anthropic, etc.

3.本地创建文件,如 demo.py

import asyncio
import os
from stagehand import Stagehand, StagehandConfig
from dotenv import load_dotenv

#读取.env配置文件
load_dotenv()

async def main():
    config = StagehandConfig(
        env="LOCAL",    #你这里想要用本地浏览器就local,如果是云的就用"BROWSERBASE"

       # 这两个配置是云端调试时使用,如果是本地就可以注释掉了
        api_key=os.getenv("BROWSERBASE_API_KEY"),       
        project_id=os.getenv("BROWSERBASE_PROJECT_ID"),

       #填写你要用的模型,密钥在.env文件配置
        model_name="gpt-4o",
        model_api_key=os.getenv("MODEL_API_KEY")

      # 这里你可以做这些配置
             headless=True,   #打开调试窗口
             verbose=3,
             debug_dom=True
    )

    stagehand = Stagehand(config)

    try:
        await stagehand.init()
        page = stagehand.page

        await page.goto("填写你要跳转的网页地址")
        await page.act("自然语言写明你要的操作")

        result = await page.extract("extract the main heading of the page")

        print(f"Extracted: {result}")

    finally:
        await stagehand.close()

if __name__ == "__main__":
    asyncio.run(main())

4 运行 python demo.py 即可

5 相关流程顺序:

1. 页面导航page.goto(url)
2. 页面观察observe()
3. 页面执行操作act()
4. 页面数据提取extract()

eg:
# 1. 使用 observe() 找到元素
search_box = await page.observe("找到页面顶部的搜索框")

# 2. 使用 act() 执行操作
await page.act("在搜索框中输入'人工智能发展'并按下回车键")

# 3. 等待页面加载完成
await page.wait_for_load_state("networkidle")

# 4. 使用 extract() 提取数据
introduction = await page.extract("提取关于deepseek的全部文章链接")

6 核心方法
observe() 方法用于分析当前页面,根据自然语言指令识别和定位特定的页面元素。它不会执行任何操作,只是返回关于找到元素的信息。

# 查找页面上的登录按钮
login_button = await page.observe("找到登录按钮")

# 查找特定的文章链接
article_link = await page.observe("找到关于AI的最新文章链接")

# 查找搜索框
search_box = await page.observe("找到页面顶部的搜索输入框")

act() 方法用于在页面上执行具体的操作,如点击、输入文本、导航等。它接受自然语言指令并将其转换为具体的浏览器操作。

# 点击按钮
await page.act("点击登录按钮")

# 输入文本
await page.act("在搜索框中输入'人工智能'")

# 导航操作
await page.act("点击第一篇文章链接")

# 复合操作
await page.act("填写用户名为'user123',密码为'password123',然后点击登录")

extract() 方法用于从页面中提取信息。如果不指定特定的数据格式,它可以返回自然语言描述的内容。

# 直接用自然语言提取信息
content = await page.extract("提取页面的主要内容")
print(content)

# 提取特定信息
title = await page.extract("提取文章标题")
author = await page.extract("提取作者姓名")
summary = await page.extract("提取文章摘要")

就这个模型我用 deepseek 整不了,只能用 gpt 的,貌似没有兼容

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up