用途:为使用 ScraperAPI Ruby SDK(scraperapi gem)编写、调试或审查 Ruby 代码提供最佳实践参考。
环境要求:Ruby >= 2.0,执行 gem install scraperapi 或在 Gemfile 中加入 gem 'scraperapi',并设置 SCRAPERAPI_API_KEY 环境变量。初始化时 require "scraper_api",再用 ScraperAPI::Client.new(ENV["SCRAPERAPI_API_KEY"]) 创建客户端,切勿硬编码 API 密钥。
主要能力:client.get(url, **params).raw_body 发起同步 GET 并取回 HTML 字符串;参数以关键字参数传入。支持 render: true 渲染 JavaScript,wait_for_selector 等待指定 DOM 元素;country_code 指定国家代理;premium 与 ultra_premium 应对更强反爬(二者互斥,ultra_premium 会忽略 keep_headers);session_number 复用同一代理 IP,会话在最后一次使用后 15 分钟过期;device_type 模拟移动或桌面 UA;autoparse 对支持的站点返回结构化 JSON。
使用方式:按成本从低到高逐级升级:标准 1 积分 → render 10 → premium 10 → premium+render 25 → ultra_premium 30 → ultra_premium+render 75。SDK 为同步阻塞,单次最长约 70 秒;20 个以上 URL 建议改用异步 REST 端点 https://async.scraperapi.com/jobs 提交任务并轮询 statusUrl。支持的平台可直接调用结构化端点,如 https://api.scraperapi.com/structured/google/search、amazon/product、ebay/search。
错误处理:SDK 在 HTTP 错误时抛出异常。401 表示密钥无效,403 表示被拦截或积分不足,404 目标不存在,429 触发限流,500/503 为瞬时错误且不计费可重试。
限制:默认不要开启 render,以免增加成本与延迟;premium 与 ultra_premium 不可同时使用;ultra_premium 下自定义请求头会被丢弃。其余细节以官方文档为准。