mcpField
S
scraperapi-datapipeline

scraperapi-datapipeline

github.com/scraperapi数据与数据库10106 次安装12 周前更新
代码仓库

关于 scraperapi-datapipeline

ScraperAPI DataPipeline 是托管式抓取服务,适合需要定期或大规模采集数据、又不想管理代理、重试和基础设施的团队。项目可按计划运行,并通过 Webhook 投递结果或在控制面板中提供结果。

主要功能

  1. 01为支持的抓取类型配置项目
  2. 02安排定期或一次性运行
  3. 03通过列表、CSV 文件或 Webhook 提供输入
  4. 04将结果发送到 Webhook 或控制面板
  5. 05配置任务完成邮件通知

适用场景

  1. 01按固定计划收集数据
  2. 02通过托管任务处理大型输入列表
  3. 03自动将完成的结果发送至应用
  4. 04通过 Webhook 获取动态输入列表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/scraperapi/scraperapi-skills --skill scraperapi-datapipeline

安装后在 Claude Code 中输入/scraperapi-datapipeline确认已加载。

详细介绍

ScraperAPI DataPipeline

DataPipeline 是一款托管式抓取产品。你只需定义一个项目(抓取内容、抓取频率、结果发送位置),ScraperAPI 就会按计划运行,无需你管理代理、重试或基础设施。

何时不该使用 DataPipeline

  • 一次性抓取已知 URL 列表 → 使用 Async API — 速度更快、成本更低,也无需设置项目。
  • 探索 URL 未知的网站 → 使用 Crawler。
  • 需要在代码中实时获取结果 → Async API 可编程;DataPipeline 按计划运行。
  • 使用免费套餐,需要定期执行 → 定期计划需要付费套餐。

适合使用 DataPipeline 的情况:按固定计划运行抓取、输入列表较大(最多 100,000 项)、希望结果自动发送到 Webhook,或希望在任务完成时收到电子邮件通知。

基础 URL 和身份验证

Base URL: https://datapipeline.scraperapi.com/api
Auth:     ?api_key=YOUR_KEY  (query parameter on every request)

项目类型

在创建请求中设置 projectType,以选择抓取内容:

类型输入
urls任意 URL 的原始 HTML
urls_with_js同上,但启用 JavaScript 渲染
google_search搜索查询
google_news搜索查询
google_jobs搜索查询
google_shopping搜索查询
google_maps搜索查询
amazon_productASIN
amazon_search搜索查询
amazon_offersASIN
walmart_product产品 ID
walmart_search搜索查询
walmart_category类别 ID
walmart_reviews产品 ID
ebay_product12 位产品 ID
ebay_search搜索查询
redfin_listing_for_sale房源 URL
redfin_listing_for_rent房源 URL
redfin_listing_search搜索结果 URL
redfin_agent_detailsAgent 个人资料 URL

创建项目

import os, requests

API_KEY = os.environ["SCRAPERAPI_API_KEY"]
BASE    = "https://datapipeline.scraperapi.com/api"

project = requests.post(
    f"{BASE}/projects",
    params={"api_key": API_KEY},
    json={
        "name":               "Weekly Amazon price monitor",
        "projectType":        "amazon_product",
        "schedulingEnabled":  True,
        "scrapingInterval":   "weekly",
        "scheduledAt":        "now",
        "projectInput": {
            "type": "list",
            "list": ["B09V3KXJPB", "B08N5WRWNW"]   # ASINs
        },
        "apiParams": {
            "country_code": "us"
        },
        "webhookOutput": {
            "url":             "https://yourapp.com/pipeline-results",
            "webhookEncoding": "multipart_form_data_encoding"
        },
        "notificationConfig": {
            "notifyOnSuccess": "with_every_run",
            "notifyOnFailure": "with_every_run"
        }
    }
).json()

print(f"Project created: id={project['id']}")
创建请求字段
字段必填描述
name否易读的项目名称
projectType是抓取内容(见上表)
schedulingEnabled否设置为 true 以启用定期计划
scrapingInterval是(若启用计划)见下方的计划选项
scheduledAt否设置为 "now",在创建时立即运行
projectInput是输入数据(见下方的输入方式)
apiParams否标准 ScraperAPI 参数
webhookOutput否Webhook 传送配置
notificationConfig否电子邮件通知设置

输入方式

直接提供列表(最多 500 项)
{
  "projectInput": {
    "type": "list",
    "list": ["query one", "query two", "B09V3KXJPB"]
  }
}
CSV 文件(最多 100,000 项)

上传一个 CSV 文件,每行包含一个 URL、查询或 ASIN — 不要添加标题行,也不要使用逗号。创建项目时,请通过 控制面板 执行此操作;API 仅接受列表输入。

Webhook 输入(动态轮询)
{
  "projectInput": {
    "type": "webhook",
    "webhookUrl": "https://yourapp.com/input-items"
  }
}

任务开始时,ScraperAPI 会轮询你的 Webhook URL,以获取项目列表。每行一个项目; 不要使用逗号。适用于动态生成的列表(例如,自上次运行以来新增的 ASIN)。

计划选项

scrapingInterval描述
"once"立即运行一次任务
"hourly"每小时一次
"daily"每天一次
"weekly"每周一次
"monthly"每月一次
"cron"自定义 cron 表达式(使用 cron 字段,而非 interval)

定期计划(hourly、daily、weekly、monthly、cron)需要付费套餐。

设置 "scheduledAt": "now",即可在创建项目时立即触发首次运行。

输出 / 传送

Webhook 传送

结果会在完成后以 POST 请求发送到你的 Webhook URL。webhookEncoding 字段用于控制格式:

{
  "webhookOutput": {
    "url":             "https://yourapp.com/results",
    "webhookEncoding": "multipart_form_data_encoding"
  }
}
控制面板下载

省略 webhookOutput,结果将保存到 DataPipeline 控制面板供下载。结果保留 30 天,之后会自动删除。

按项目类型划分的输出格式:

  • urls / urls_with_js → 封装在 JSONL 中的 HTML
  • 结构化类型(Amazon、Google、Walmart、eBay、Redfin) → JSON 或 CSV

管理项目

# List all projects
projects = requests.get(f"{BASE}/projects", params={"api_key": API_KEY}).json()

# Get a single project
project = requests.get(f"{BASE}/projects/525", params={"api_key": API_KEY}).json()

# Update (partial update — only include fields to change)
requests.patch(
    f"{BASE}/projects/525",
    params={"api_key": API_KEY},
    json={
        "scrapingInterval": "daily",
        "apiParams":        {"premium": True},
        "notificationConfig": {"notifyOnSuccess": "never"}
    }
)

# Delete / archive (irreversible without support)
requests.delete(f"{BASE}/projects/525", params={"api_key": API_KEY})

可更新字段:scrapingInterval、scheduledAt、outputFormat、apiParams、notificationConfig。

管理任务

# List jobs for a project
jobs = requests.get(
    f"{BASE}/projects/525/jobs",
    params={"api_key": API_KEY}
).json()

# Cancel a running job
requests.delete(
    f"{BASE}/projects/525/jobs/{job_id}",
    params={"api_key": API_KEY}
)
# Running requests within the job finish first; final status becomes "Cancelled"

只有在该项目没有其他正在运行的任务时,才能启动新任务。

通知配置

{
  "notificationConfig": {
    "notifyOnSuccess": "with_every_run",
    "notifyOnFailure": "with_every_run"
  }
}

两个字段的可选值:"never"、"with_every_run"、"daily"、"weekly"。

apiParams 参考

apiParams 中支持所有标准 ScraperAPI 参数:

参数用途
country_code地理定位(例如 "us"、"gb")
renderJavaScript 渲染
premium高级住宅代理
ultra_premium超高级代理(与 premium 互斥)
device_type"desktop" 或 "mobile"
output_format用于 LLM 工作流的 "text" 或 "markdown"
autoparse从支持的网站提取结构化 JSON
keep_headers转发自定义标头
follow_redirect控制重定向处理
wait_for_selector等待 CSS 选择器(需要 render: true)
screenshot截取屏幕截图(自动启用渲染)
retry_404重试 404 响应

积分费用

DataPipeline 使用与标准 API 相同的底层积分费率。费用为一次任务运行中所有请求的费用总和。从控制面板启动项目之前,可以预览预估费用。

仅对成功的 200 和 404 响应收费;失败的请求不收费。

限制

限制值
输入项数上限每个任务 100,000 项
直接列表输入500 项
数据保留时间30 天
免费套餐并发数5 个连接
免费套餐计划安排仅限一次性运行

文档

评论

支持 Markdown