mcpField
A
agent-browser-scrape

agent-browser-scrape

github.com/owenleezy数据与数据库456 次安装31 周前更新
代码仓库

关于 agent-browser-scrape

用于通过 agent-browser 从网页提取数据的技能,提供等待页面加载、验证选择器、处理分页及应对常见抓取失败的执行步骤。

主要功能

  1. 01提取前等待网络空闲
  2. 02通过条目数量验证选择器
  3. 03处理滚动和分页
  4. 04页面为空时切换引擎
  5. 05输出结构化或带边界的内容

适用场景

  1. 01提取 JavaScript 渲染页面的数据
  2. 02收集无限滚动页面中的条目
  3. 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