用途:ScraperAPI Crawler 从种子 URL 开始自动发现并抓取相互链接的页面,按正则匹配决定跟进哪些链接,适合需要整站或某栏目多页数据、但事先没有 URL 清单的场景。
接口:启动抓取为 POST https://crawler.scraperapi.com/job;查询状态为 GET https://crawler.scraperapi.com/job/<jobId>;取消为 DELETE 同一地址。POST 时 api_key 放在 JSON 正文,GET/DELETE 作为查询参数。
必填:api_key、start_url、url_regexp_include,以及 max_depth 或 crawl_budget 至少其一(同时给出时先到者生效)。url_regexp_include 需使用命名捕获组,如 (?<full_url>https?://example\.com/blog/.),相对路径用 (?<relative_url>/products/.);url_regexp_exclude 为普通正则,无需捕获组。max_depth 0 表示仅起始页,1 表示起始页加其直接链接页,依此类推。
逐页参数:api_params 支持标准 ScraperAPI 参数,如 render、premium、ultra_premium、country_code、device_type、output_format;仅当页面依赖 JavaScript 加载时才开 render: true。
回调与调度:callback 设为 webhook 时,每抓完一页即推送该页 URL、内容、费用与当前深度,完成后再发汇总;回调地址需公网可达,失败最多重试 3 次且不影响抓取,结果保留最长 30 天。schedule 支持 once、hourly、daily、weekly、monthly,定时需要付费方案。
计费与错误:费用等于各页请求之和,crawl_budget 为硬上限,失败请求不计费,可用响应头 sa-credit-cost 校准预算。状态码 400 请求或正则有误、401 密钥无效、403 额度耗尽或免费方案深度受限、429 并发过多、500 可退避重试。
限制:已知 URL 列表应使用 Async API,单页用 Standard API;登录后内容无法抓取;免费账户仅支持一次性抓取且 max_depth 为 1。开始时应先用较窄的包含正则小规模验证,避免使用 .* 导致跟进外链。