源代码、完整 CLI 参考和最新版本请查看 pobear 仓库。pobear 采用 MIT 许可证。
您可以做什么
- 提取所需字段:支持属性的 CSS 选择器,或 HTML 转 Markdown。
- 爬取站点:支持深度、页面数量上限、范围、include/exclude 通配符和请求速率,并支持站点地图发现和
robots.txt。 - 保存可复用的任务:将任意命令输出为 JSON 任务规范,之后可从脚本、调度器或 AI 智能体中再次运行。
- 被拦截时升级:使用
--ladder,pobear 会先尝试直接请求,然后使用您的代理,最后使用 Web Data API。
安装
在 Linux 或 macOS 上:pobear 安装到 $HOME/.local/bin。在 Windows 上,请从发布页面下载 windows_amd64 或 windows_arm64 的 ZIP 包,然后运行 pobear.exe。
检查安装结果:
pobear,即可打开交互式终端向导,无需手动输入参数。
快速开始
爬取一个示例书店,提取书名和价格,并保存结果。无需账户:books.ndjson 中生成一行 NDJSON。data 字段保存提取出的值:
h3 a@title 读取每个匹配链接的 title 属性,.price_color 读取元素文本。每条记录还包含 finalUrl、parentUrl、depth 和原始的 body。skipped 统计的是爬取过程中发现但未访问的链接。
如果不使用 --out,记录会以流的方式输出到 stdout,因此您可以将其通过管道传给 jq 或其他工具。
常见任务
以 Markdown 格式获取页面
以干净的 Markdown 打印单个页面,不带 JSON 外层结构。适合作为 LLM 的输入:抓取 URL 列表
在文本文件中每行放一个 URL。空行和以# 开头的行会被略过:
保存并重新运行任务
为任意命令添加--print-spec,即可将其输出为 JSON 任务规范,而不是直接运行:
pobear run 接受 JSON 或 YAML。您可以把任务文件纳入版本控制,或按计划定时运行。格式说明请参阅任务规范参考。
选择获取方式
每条记录都有一个
tier 字段,标明该记录由哪种方式获取。直接请求和代理请求可以通过 --profile(默认 chrome)模拟 Chrome、Firefox 或 Safari 的 TLS 指纹,但它们不会执行 JavaScript。
使用 Web Data API
- 从 Web Data API 演练场复制您的 Web Data API 密钥。任意 Web Data API 计划均可使用,控制面板提供免费试用。
-
保存密钥。pobear 会提示您输入,并为后续运行保存该密钥:
在 CI 或容器中,请改为设置
POBEAR_PROVIDER_DECODO_TOKEN环境变量。 -
为任意
scrape或crawl命令添加--provider decodo:
universal 目标发出,并使用高级(premium)代理池。JavaScript 渲染默认关闭。对于在浏览器中构建内容的页面,请添加 --render:
--render 时,该页面不会返回任何引言;使用之后,10 条全部被提取出来。
使用 --geo 和 --opt name=value 可设置 Web Data API 参数,例如 --geo "United States" 或 --opt device_type=mobile。geo 的可用取值请参阅本地化。
Web Data API 请求会计入您的 Decodo 计划费用。pobear 本身是免费的。
使用目标模板
--template 可将 universal 切换为专用的 Web Data API 目标。Amazon 的 URL 需要使用 amazon 模板——universal 目标会以 HTTP 400 拒绝它们:
parse=true 时,body 字段中是解析后的 JSON(标题、价格、品牌、评分等),而不是 HTML。
可用模板:universal(默认)、airbnb、amazon、apple_app_store、autotrader、bbb、bing、google、mobile、target、tiktok、tiktok_post 和 walmart。查看每个模板的选项:
被拦截时自动升级
--ladder 会从直接请求开始,只有当请求被拦截、触发速率限制、超时或返回已知的反爬虫挑战页面时,才会升级到下一层级。请与 --provider decodo 搭配使用——单独使用 --ladder 时没有可升级的目标:
--proxy '<proxy-url>',即可在直接请求和 Web Data API 之间先尝试您的代理。能够直接加载的页面永远不会调用该 API,因此您只需为确实需要它的页面付费。
在 AI 智能体和脚本中使用 pobear
pobear 很适合作为智能体或脚本的子进程使用:pobear docs --json以 JSON 形式返回命令、输出格式和退出码。pobear providers decodo --json返回每个模板、选项及其默认值。- 数据以 NDJSON 形式输出到 stdout。运行摘要和错误输出到 stderr。
故障排查
摘要中出现empty 1。 页面已以 HTTP 200 获取,但您的选择器没有匹配到任何内容。请先检查选择器和页面内容。空结果也可能意味着该页面需要 --render,或站点返回了挑战页面。
在流水线中捕获空提取结果。 只有当每一个抓取到的页面都为空时,--fail-on-empty 才会以退出码 5 退出。如果一次运行中部分页面提取到了数据、部分没有,仍会以 0 退出,因此也请检查摘要中的 empty 计数。
出现 401 和 Missing authorization header。 未保存 Web Data API 密钥。请运行 pobear auth decodo 或设置 POBEAR_PROVIDER_DECODO_TOKEN。
出现 400 和 Validation failed。 Web Data API 接受了您的密钥,但拒绝了该请求。最常见的原因是 Amazon 的 URL 没有搭配 --template amazon。
常见问题
如何从终端抓取网站?
安装 pobear,然后运行pobear scrape,传入 URL 和您需要的字段:
pobear crawl 可在站点内跟踪链接,或者不带参数运行 pobear 以打开交互式终端向导。
使用 pobear 需要 Decodo 账户吗?
不需要。直接请求无需任何账户。只有在添加--provider decodo 或 --proxy 时,您才需要 Web Data API 密钥或代理凭据。
pobear 能抓取 JavaScript 渲染的网站吗?
直接请求和代理请求不会执行 JavaScript。请使用--provider decodo --render,以获取浏览器渲染完成后的页面。详见上文的”使用 Web Data API”一节。
pobear 与 Decodo CLI 有什么区别?
两者的默认取向正好相反。Decodo CLI 是 Web Data API 的 Node.js 客户端:每个请求都经由 Decodo 发出,且每个 Web Data API 目标——搜索引擎、电商、社交媒体——都是一个子命令。pobear 则是一个独立的 Go 二进制文件,默认直接获取页面,只有在您明确要求、或--ladder 遇到拦截时,才会启用代理或 Web Data API。
当您需要带现成目标的完整 Web Data API 时,请使用 Decodo CLI。当您希望用一个二进制文件在无账户的情况下工作、并且只为确实需要的页面付费时,请使用 pobear。
相关内容
- Decodo CLI:官方的 Web Data API 命令行工具,支持搜索、站点地图、爬取和屏幕截图
- Web Data API 简介
- pobear CLI 参考
支持
需要帮助或只是想打个招呼?我们的支持团队全天候为您服务。
您也可以随时通过电子邮件 support@decodo.com 联系我们。
您也可以随时通过电子邮件 support@decodo.com 联系我们。
反馈
找不到您要找的内容?请求一篇文章!
有反馈意见?分享您对我们如何改进的想法。
有反馈意见?分享您对我们如何改进的想法。