CrawlForge
高级工具5 credits

scrape_with_actions

执行包括点击、滚动、输入和表单自动填充在内的浏览器操作链,并支持截图捕获。非常适合登录流程、无限滚动、模态对话框以及复杂的重 JavaScript 网站。

使用场景

登录流程

自动化登录表单,访问登录墙后的已认证内容

无限滚动

从社交媒体动态流和产品列表等无限滚动页面抓取内容

模态对话框

与弹窗、模态框和动态浮层进行交互

重 JavaScript 网站

处理 SPA 以及通过 AJAX 动态加载内容的网站

多步骤表单

在多步骤向导和复杂表单提交中进行导航

可视化测试

在每一步捕获截图,用于调试和视觉回归测试

Endpoint

POST/api/v1/tools/scrape_with_actions
Auth Required
2 req/s on Free plan
5 credits

Parameters

NameTypeRequiredDefaultDescription
url
stringRequired-
抓取会话的起始 URL
Example: https://example.com/login
actions
arrayRequired-
要按顺序执行的浏览器操作数组
Example: [{"type": "wait", "value": 2000}, {"type": "click", "selector": "#submit"}]
formAutoFill
objectOptional-
用指定值自动填充表单字段
Example: {"#username": "user@example.com", "#password": "secret"}
captureScreenshots
booleanOptionalfalse
在每个操作后捕获截图
Example: true
waitForNavigation
booleanOptionaltrue
在点击操作后等待导航完成
Example: true

可用的操作类型

wait
等待指定的毫秒数
action.jsonJson
{"type": "wait", "value": 2000}
click
通过 CSS 选择器点击元素
action.jsonJson
{"type": "click", "selector": "#button"}
type
在输入框中输入文本
action.jsonJson
{"type": "type", "selector": "#search", "value": "query"}
press
按下键盘按键
action.jsonJson
{"type": "press", "value": "Enter"}
scroll
滚动到元素或位置
action.jsonJson
{"type": "scroll", "selector": "#content"}
screenshot
捕获截图
action.jsonJson
{"type": "screenshot"}
executeJavaScript
执行自定义 JavaScript
action.jsonJson
{"type": "executeJavaScript", "code": "window.scrollTo(0, 0)"}

请求示例

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/scrape_with_actions \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/login",
    "actions": [
      {"type": "type", "selector": "#username", "value": "user@example.com"},
      {"type": "type", "selector": "#password", "value": "secret123"},
      {"type": "click", "selector": "#login-button"},
      {"type": "wait", "value": 3000},
      {"type": "screenshot"}
    ],
    "captureScreenshots": true
  }'

响应示例

200 OK8450ms
{
"success": true,
"data": {
"content": "...final page content after all actions...",
"screenshots": [
"data:image/png;base64,iVBORw0KGgoAAAANS...",
"data:image/png;base64,iVBORw0KGgoAAAANS..."
],
"intermediateStates": [
{
"action": "type",
"selector": "#search-input",
"success": true,
"timestamp": 1705334523000
},
{
"action": "click",
"selector": "#submit",
"success": true,
"timestamp": 1705334524500
}
],
"finalState": {
"url": "https://example.com/search?q=AI+web+scraping",
"title": "Search Results - AI web scraping",
"cookies": 12,
"localStorage": 5
}
},
"credits_used": 5,
"credits_remaining": 995,
"processing_time": 8450
}
Field Descriptions
data.content执行所有操作后的最终 HTML 内容
data.screenshotsbase64 编码的截图数组(如果 captureScreenshots: true)
data.intermediateStates每个操作的日志,包含成功状态和时间戳
data.finalState最终浏览器状态,包括 URL、cookie 和 localStorage
credits_used本次请求扣除的 credits(每次抓取 5 个)
processing_time包含所有操作和等待的总耗时

错误处理

操作失败(422 Unprocessable Entity)

一个或多个操作执行失败。请检查选择器是否正确以及元素是否可见。

超时(504 Gateway Timeout)

操作链耗时过长(最长 30 秒)。请减少等待时间或操作数量。

无效操作(400 Bad Request)

一个或多个操作的参数无效。请检查操作类型和必填字段。

Credits 不足(402 Payment Required)

您的账户 credits 不足(需要 5 个)。购买更多 credits 或 升级您的套餐。

超出速率限制(429 Too Many Requests)

您已超出套餐的速率限制。请稍候片刻,或 升级您的套餐 以获得更高限额。

专业提示: 在交互之间使用 wait 操作,以确保 JavaScript 有时间执行。调试时,可启用 captureScreenshots 来查看浏览器在每一步所看到的内容。

Credit 费用

5 credits
每次请求 5 credits
每次成功的 scrape_with_actions 请求消耗 5 credits,与操作数量无关。

Free 套餐: 1,000 个一次性试用 credits = 200 条操作链

Hobby 套餐: 5,000 credits/月 = 1,000 条操作链($19/mo)

Professional 套餐: 50,000 credits/月 = 10,000 条操作链($99/mo)

Business 套餐: 250,000 credits/月 = 50,000 条操作链($399/mo)

相关工具

form_submit
无需操作链的简化表单提交(3 credits)
screenshot
无需操作即可捕获截图(2 credits)
准备好试用 scrape_with_actions 了吗?免费注册,获取 1,000 credits,开始构建。