scrape

scrape

热门

通过 Bright Data CLI(`bdata scrape`)将网页内容抓取为干净的 Markdown/HTML/JSON。当用户想要获取页面、从 URL 列表中提取内容或爬取分页列表时使用。对于支持的平台(Amazon、LinkedIn、TikTok、Instagram、YouTube、Reddit 等),转交给 `data-feeds`;当需要先发现 URL 时,转交给 `search`。需要 Bright Data CLI;主动引导安装和登录(如果缺失)。

226Star
0Fork
更新于 2026/7/11
SKILL.md
readonly只读
name
scrape
description

通过 Bright Data CLI(`bdata scrape`)将网页内容抓取为干净的 Markdown/HTML/JSON。当用户想要获取页面、从 URL 列表中提取内容或爬取分页列表时使用。对于支持的平台(Amazon、LinkedIn、TikTok、Instagram、YouTube、Reddit 等),转交给 `data-feeds`;当需要先发现 URL 时,转交给 `search`。需要 Bright Data CLI;主动引导安装和登录(如果缺失)。

Bright Data — Scrape

通过 Bright Data CLI 从一个或多个 URL 获取干净内容(Markdown、HTML、JSON、截图)。此技能负责“获取原始或轻度结构化内容”的任务。对于平台特定的结构化数据(Amazon、LinkedIn、TikTok 等),停止并使用 data-feeds 代替——你将获得干净的 JSON,无需选择器逻辑。

设置检查(先运行)

在任何抓取之前,验证 CLI 是否已安装并认证:

if ! command -v bdata >/dev/null 2>&1; then
    echo "bdata CLI 未安装 — 参见 bright-data-best-practices/references/cli-setup.md"
elif ! bdata zones >/dev/null 2>&1; then
    echo "bdata 未认证 — 运行: bdata login  (或: bdata login --device 用于 SSH)"
fi

如果任一检查失败,停止并将用户引导至 skills/bright-data-best-practices/references/cli-setup.md。不要静默尝试旧的 curl 回退——先询问用户。

选择路径

情况 操作
单个 URL bdata scrape <url> -f markdown
小列表(≤ ~20 个 URL) shell 循环,一次一个(参见 references/patterns.md
较大列表(几十个以上) xargs -P 4 并限制并行度(参见 references/patterns.md
分页列表 抓取第 1 页 → 提取下一页 URL → 追加 → 重复(参见 references/examples.md
JS 繁重/登录限制/需要交互 升级到 bdata browser(参见 brightdata-cli 技能)
Amazon、LinkedIn、TikTok、Instagram、YouTube、Reddit…… 停止 — 转交给 data-feeds
尚无 URL,只有主题 转交给 search

操作

核心命令:

# 干净的 Markdown(默认)
bdata scrape "https://example.com/article" -f markdown -o article.md

# 原始 HTML(当需要 DOM 时)
bdata scrape "https://example.com" -f html -o page.html

# 结构化 JSON(当 Unlocker 返回解析字段时)
bdata scrape "https://example.com" -f json --pretty -o page.json

# 视觉快照(保存 PNG)
bdata scrape "https://example.com" -f screenshot -o page.png

# 地理定位(覆盖出口国家)
bdata scrape "https://example.com" --country de -f markdown

完整标志参考:references/flags.md

验证检查(在声称成功前运行)

  1. 非空输出: test -s "$out_path" — 或者对于标准输出,至少 200 字节内容。
  2. 不是拦截页面 — 在输出中 grep 以下任何签名(不区分大小写):
    • Access Denied
    • Just a moment
    • Attention Required
    • Checking your browser
    • captcha
    • cf-browser-verification
    • cloudflare (总正文小于 2KB)
  3. 任务预期的标记存在: 例如,产品页面应包含价格模式(\$\d);文章应至少包含一个 <h1># 标题。
  4. 失败时的升级阶梯:
    • 使用不同的 --country 重试(例如,如果源站点在美国,使用 --country de
    • 升级到 bdata browser 进行完整 JS 渲染(转交给 brightdata-cli 技能)

在所有上述检查通过之前,不要报告成功。

红旗

  • 未检查输出就声称成功。
  • 使用 2>/dev/null 静默错误——你会错过认证失败和速率限制错误。
  • 在 Amazon/LinkedIn/TikTok/Instagram/YouTube/Reddit URL 上运行 bdata scrape——这些由 data-feeds 支持并直接返回结构化数据。抓取会丢失结构。
  • 在同一任务中重复抓取相同 URL——缓存第一次结果。
  • 对大型列表顺序循环 bdata scrape,而不是使用 xargs -P 4(或类似)并限制并行度。
  • 直接使用 curl 访问 api.brightdata.com——旧路径;仅在 CLI 不可用时使用。

参考

  • references/flags.md — 每个标志及使用时机说明。
  • references/patterns.md — shell 循环批处理、xargs 并行、分页配方、重试/退避、拦截页面恢复链、旧版 curl 回退。
  • references/examples.md — (1) 单页 → Markdown,(2) 批量处理 URL 列表并限制并行度,(3) 分页列表,(4) 拦截页面恢复。