关于 agent-browser-scrape
用于通过 agent-browser 从网页提取数据的技能,提供等待页面加载、验证选择器、处理分页及应对常见抓取失败的执行步骤。
主要功能
- 01提取前等待网络空闲
- 02通过条目数量验证选择器
- 03处理滚动和分页
- 04页面为空时切换引擎
- 05输出结构化或带边界的内容
适用场景
- 01提取 JavaScript 渲染页面的数据
- 02收集无限滚动页面中的条目
- 03处理反爬措施阻止提取的情况
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ owenleezy/ agent-browser-skill --skill agent-browser-scrape安装后在 Claude Code 中输入/agent-browser-scrape确认已加载。
详细介绍
数据提取 — 执行协议
内部模板。 入口:
agent-browser技能。
绝对禁止
NEVER `eval` before `wait --load networkidle` — JS-rendered content won't exist yet
NEVER assume lightpanda handles JS-heavy pages — always have a --engine chrome fallback ready
NEVER scrape without checking `get count` first — validates that your selector found items
执行顺序
# 1. Try lightpanda first (fastest, no JS overhead)
AGENT_BROWSER_ENGINE=lightpanda agent-browser open <url>
AGENT_BROWSER_ENGINE=lightpanda agent-browser wait --load networkidle
# 2. Understand structure
AGENT_BROWSER_ENGINE=lightpanda agent-browser snapshot -c
# 3. Verify selector finds items before extracting
AGENT_BROWSER_ENGINE=lightpanda agent-browser get count ".item"
# 4. Extract
AGENT_BROWSER_ENGINE=lightpanda agent-browser eval "[...document.querySelectorAll('.item')].map(el => ({
name: el.querySelector('h2')?.textContent?.trim(),
price: el.querySelector('.price')?.textContent?.trim()
}))"
# 5. If empty/wrong → fallback to chrome engine
agent-browser open <url>
agent-browser wait --load networkidle
agent-browser get count ".item" # verify selector still works
agent-browser eval "<same query>"
关于
AGENT_BROWSER_NATIVE=1的说明: 在较早的工作流中,此环境变量曾用作 Rust 守护进程的简写。自 0.22+ 起,守护进程始终处于活动状态——请改用AGENT_BROWSER_ENGINE=chrome(或直接使用默认设置)。仍接受AGENT_BROWSER_NATIVE=1,但文档已不再提及。
分页处理
# Scroll-based infinite scroll
agent-browser scroll down
agent-browser wait --load networkidle
agent-browser get count ".item" # check if count increased
agent-browser eval "<extract again>"
# Repeat until count stops increasing
# Click-based pagination
agent-browser find role button click --name "Next"
agent-browser wait --load networkidle
# Wait for specific text to confirm page loaded
agent-browser wait --text "Page 2 of"
输出解析技巧
# Add --content-boundaries to help parse output when using --max-output
AGENT_BROWSER_CONTENT_BOUNDARIES=1 agent-browser eval "<query>" --max-output 50000
# JSON output for structured parsing
agent-browser get text @e1 --json
agent-browser snapshot -i --json
绕过反机器人机制
# Level 1: custom user-agent
agent-browser --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36" open <url>
# Level 2: disable automation detection (combine with level 1)
agent-browser \
--user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36" \
--args "--disable-blink-features=AutomationControlled" \
open <url>
恢复方案
| 失败情况 | 恢复方法 |
|---|---|
| lightpanda 返回空结果 | 切换到 --engine chrome(或使用默认设置) |
| 被识别为机器人 | 添加 --user-agent,然后与 --args 组合使用 |
内容加载前执行 eval | 每次执行 eval 前先运行 wait --load networkidle |
| 未处理无限滚动 | 使用 scroll down + 循环重新运行 eval,并检查 get count 是否有进展 |
| 输出被截断 | 添加 --max-output 100000 或设置 AGENT_BROWSER_MAX_OUTPUT 环境变量 |
判断关卡
在以下情况下暂停:
- 反机器人措施阻止所有方法(CAPTCHA 需要人工处理)
- 回退后
get count返回 0——向用户展示snapshot -c,询问如何识别条目
常见问题
| 错误做法 | 修正方法 |
|---|---|
| lightpanda 返回空结果 | 切换到 --engine chrome |
加载完成前执行 eval | 先运行 wait --load networkidle |
即使设置了 --user-agent,仍被识别为机器人 | 添加 --args "--disable-blink-features=AutomationControlled" |
| 悄无声息地提取到 0 个条目 | 执行 eval 前务必运行 get count "<selector>" |
| 输出在 JSON 中途被截断 | 增大 --max-output 或使用 --content-boundaries |
评论
支持 Markdown