MrScraper

通过自然语言指令实现无阻抗网页抓取与数据提取。

已扫描
适合谁
数据分析师、电商运营人员
不适合谁
无网络访问权限的环境使用者、无需外部API调用的本地脚本开发者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @ai-mrscraper/mrscraper

Skill 说明

命令、参数、文件名以原文为准

MrScraper

通过 MrScraper API 使用人工智能驱动的、不受限的网页抓取与数据提取,支持自然语言指令。

操作功能

此技能支持:

  • 通过反封锁服务(隐身浏览器 + IP 轮换)打开被屏蔽的页面
  • 从自然语言指令启动 AI 抓取任务
  • 在一个或多个 URL 上重新运行已有的抓取配置
  • 手动执行基于工作流的重跑
  • 获取分页结果及按 ID 查找的详细结果

该技能为纯 API 接口,不依赖内置本地脚本。

基础地址

  • 反封锁 API:https://api.mrscraper.com
  • 平台 API:https://api.app.mrscraper.com

认证方式

反封锁 API 认证

在反封锁端点使用查询参数认证:

  • token=<MRSCRAPER_API_TOKEN>

平台 API 认证

在平台端点使用头部认证:

x-api-token: <MRSCRAPER_API_TOKEN>
accept: application/json
content-type: application/json

如何获取 MRSCRAPER_API_TOKEN

API 密钥允许您的应用程序安全地与 MrScraper API 交互,并重新运行仪表板中创建的抓取任务。

请按以下步骤在仪表板中操作:

  1. 点击右上角的 用户资料
  2. 选择 API 密钥
  3. 点击 新建密钥
  4. 输入一个 名称 并设置 过期时间
  5. 点击 创建
  6. 复制新生成的密钥,并将其安全存储为 MRSCRAPER_API_TOKEN
  7. 在请求中通过 x-api-token 头部使用该密钥。

安全规则:

  • 请勿在客户端代码(浏览器或移动应用包)中暴露密钥。
  • 将密钥存储于环境变量或服务器端密钥管理器中。

认证文档备注:

  • 该 API 密钥适用于所有 V3 平台端点。
  • 同一密钥可用于 sync.scraper.mrscraper.com 上的端点。
  • 若需访问其他主机上的端点,请联系 support@mrscraper.com

安装与运行

  • 此技能文档无需本地安装步骤。
  • 不需要捆绑 scripts/ 目录。
  • 请求为直接调用上述两个基础地址的 HTTPS 请求。

数据与范围

  • 数据仅发送至 api.app.mrscraper.comapi.mrscraper.com
  • 响应可能包含提取的页面内容和抓取元数据。
  • 此技能不定义隐藏持久化或后台任务。
  • 请勿在日志、提交记录或输出中暴露密钥。

端点接口

1. 反封锁服务

  • 方法:GET
  • 地址:https://api.mrscraper.com
  • 认证方式:token 查询参数

通过隐身浏览和 IP 轮换打开目标网址,返回 HTML 内容。当直接访问因验证码或反机器人机制被阻止时使用。

查询参数:

字段类型必填默认值说明
tokenstring反封锁令牌(MRSCRAPER_API_TOKEN
urlstringURL 编码后的目标网址
timeoutnumber60最大等待时间(秒),例如 120
geoCodestring地理路由代码,例如 SG
blockResourcesbooleanfalse阻止非必要资源加载

请求示例:

curl --location 'https://api.mrscraper.com?token=<MRSCRAPER_API_TOKEN>&timeout=120&geoCode=SG&url=https%3A%2F%2Fwww.lazada.sg%2Fproducts%2Fpdp-i111650098-s23209659764.html&blockResources=false'

响应示例:

<!doctype html>
<html>
  <head>...</head>
  <body>...</body>
</html>

注意事项:

  • 为保证可重复行为,建议明确指定 geoCode 并设置合理的超时时间。
  • 仅在需要会话特定内容时才传递 Cookie。

2. 创建 AI 抓取任务

  • 方法:POST
  • 主机:https://api.app.mrscraper.com
  • 路径:/api/v1/scrapers-ai
  • 认证方式:x-api-token

根据自然语言指令创建新的 AI 抓取任务。

请求体参数(当 agent: generalagent: listing 时):

字段类型必填默认值说明
urlstring目标网址
messagestring数据提取指令
agentstringgeneral用于抓取的 AI 代理类型:generallistingmap
proxyCountrystring代理抓取使用的 ISO 国家代码

请求体参数(当 agent: map 时)

字段类型必填默认值说明
urlstring目标网址
agentstringmap用于抓取的 AI 代理类型(本例中为 map
maxDepthnumber2从起始网址爬取链接的最大深度层级。<br>0 = 仅起始网址,1 = 加上直接链接
maxPagesnumber50抓取过程中最多爬取的页面数量。
limitnumber1000跨所有页面提取的数据记录最大数量。达到此限制后抓取将停止。
includePatternsstring""需要包含的正则表达式模式(多个用 `\
excludePatternsstring""需要排除的正则表达式模式(多个用 `\

请求示例:

curl -X POST "https://api.app.mrscraper.com/api/v1/scrapers-ai" \
  -H "x-api-token: <MRSCRAPER_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
    "message": "提取标题、价格、库存和评分",
    "agent": "general"
  }'

响应示例:

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "createdAt": "2019-08-24T14:15:22Z",
  "createdById": "e13e432a-5323-4484-a91d-b5969bc564d9",
  "updatedAt": "2019-08-24T14:15:22Z",
  "updatedById": "d8bc6076-4141-4a88-80b9-0eb31643066f",
  "deletedAt": "2019-08-24T14:15:22Z",
  "deletedById": "8ef578ad-7f1e-4656-b48b-b1b4a9aaa1cb",
  "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
  "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
  "type": "AI",
  "url": "http://example.com",
  "status": "Finished",
  "error": "string",
  "tokenUsage": 0,
  "runtime": 0,
  "data": {}, // 主要抓取数据
  "htmlPath": "string",
  "recordingPath": "string",
  "screenshotPath": "string",
  "dataPath": "string"
}

注意事项:

  • 请根据实际场景选择合适的代理类型,每种代理针对特定用途优化。使用 general 适用于大多数常规网页抓取任务。当用户未指定或连接的 LLM 对页面类型不确定时,推荐使用此类型。它适用于产品页抓取,也能良好处理各类页面。使用 listing 适用于列表页抓取,如商品列表、职位列表等。若连接的 LLM 可明确判断目标网址是否为列表页,则建议选择此类型。使用 map 用于网站级爬取,获取子域名或子页面。当用户明确表示目标网址是整个网站而非具体页面时,请选择此类型。对于 map 代理类型,可使用特殊参数配置抓取过程。
  • 对于 map 代理,可使用以下特殊参数控制爬取行为:<br>maxDepth(建议值 1–2 以聚焦抓取,最大推荐值为 3),<br>maxPages(限制总爬取页面数,不受深度影响),<br>limit(限制总提取记录数),<br>includePatterns / excludePatterns(使用 || 分隔的正则表达式模式,用于指定需爬取或跳过的 URL,例如 */products/*||*/blog/**/cart/*||*.pdf)。<br>若 includePatterns 为空字符串,则默认包含所有 URL;若 excludePatterns 为空字符串,则不排除任何 URL。

3. 重新运行 AI 抓取器

  • 方法:POST
  • 主机:https://api.app.mrscraper.com
  • 路径:/api/v1/scrapers-ai-rerun
  • 认证:x-api-token

基于已有抓取配置,在新网址上重新执行抓取任务。

请求参数:

字段类型必填默认值说明
scraperIdstring从创建的 AI 抓取器中获取的抓取器 ID
urlstring目标网址

map 代理类型的可选参数:

字段类型必填默认值说明
maxDepthnumber2爬取深度
maxPagesnumber50最多爬取页面数
limitnumber1000结果数量上限
includePatternsstring""需要包含的正则表达式模式(多个用 `\
excludePatternsstring""需要排除的正则表达式模式(多个用 `\

请求示例:

curl -X POST "https://api.app.mrscraper.com/api/v1/scrapers-ai-rerun" \
  -H "accept: application/json" \
  -H "x-api-token: <MRSCRAPER_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
    "url": "https://shopee.sg/"
  }'

响应示例:

markdown


name: MrScraper

version: 1.0.4

description: 用于自动化网页抓取的 AI 与手动爬虫执行工具

summary: 提供批量重跑 AI 爬虫和手动爬虫的功能,支持多 URL 批量处理。

author: skillppc

license: MIT

tags:

- web scraping

- automation

- ai scraper

- manual scraper

- bulk run


4. 批量重跑 AI 爬虫

  • 方法:POST
  • 主机:https://api.app.mrscraper.com
  • 路径:/api/v1/scrapers-ai-rerun/bulk
  • 认证:x-api-token

使用一个 AI 爬虫配置对多个目标 URL 进行重跑。

请求参数:

字段类型必填默认值描述
scraperIdstring已存在的 AI 爬虫配置 ID
urlsarray[string]要执行的目标 URL 列表

请求示例:

curl -X POST "https://api.app.mrscraper.com/api/v1/scrapers-ai-rerun/bulk" \
  -H "x-api-token: " \
  -H "Content-Type: application/json" \
  -d '{
    "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
    "urls": [
      "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "https://books.toscrape.com/catalogue/tipping-the-velvet_999/index.html",
      "https://books.toscrape.com/catalogue/soumission_998/index.html"
    ]
  }'

响应示例:

{
  "message": "Bulk rerun started successfully",
  "data": {
    "bulkResultId": "f89f8f58-3c9a-42e5-a72e-59fa6c389f09",
    "status": "Running",
    "totalUrls": 3
  }
}

5. 重跑手动爬虫

  • 方法:POST
  • 主机:https://api.app.mrscraper.com
  • 路径:/api/v1/scrapers-manual-rerun
  • 认证:x-api-token

使用手动浏览器操作流程执行一次重跑任务。

创建手动爬虫

在调用手动重跑接口前,需通过仪表板创建并保存一个手动爬虫。操作步骤如下:

  1. 打开 MrScraper 仪表板,进入 Scraper 页面。
  2. 点击 New Manual Scraper +
  3. 输入目标网站 URL。
  4. 添加匹配网站行为的操作步骤(如 InputClickDelayExtractInject JavaScript)。
  5. 如需分页处理,可配置分页方式(如 Query PaginationDirectory PaginationNext Page Link)。
  6. 测试并保存爬虫,复制其 scraperId 以用于后续 API 重跑。

请求参数:

字段类型必填默认值描述
scraperIdstring要重跑的手动爬虫 ID
urlstring本次重跑的目标 URL
workflowarray<object>可覆盖保存的流程步骤。默认使用创建时保存的流程。

请求示例:

curl -X POST "https://api.app.mrscraper.com/api/v1/scrapers-manual-rerun" \
  -H "accept: application/json" \
  -H "x-api-token: " \
  -H "Content-Type: application/json" \
  -d '{
    "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
    "url": "https://books.toscrape.com/",
    "workflow": [
      {
        "type": "extract",
        "data": {
          "extraction_type": "text",
          "attribute": null,
          "name": "book",
          "selector": "h3 a"
        }
      }
    ],
    "record": false,
    "paginator": {
      "type": "query_pagination",
      "max_page": 1,
      "enabled": false
    }
  }'

响应示例:

{
  "message": "Successful operation!",
  "data": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "createdAt": "2019-08-24T14:15:22Z",
    "createdById": "e13e432a-5323-4484-a91d-b5969bc564d9",
    "updatedAt": "2019-08-24T14:15:22Z",
    "updatedById": "d8bc6076-4141-4a88-80b9-0eb31643066f",
    "deletedAt": "2019-08-24T14:15:22Z",
    "deletedById": "8ef578ad-7f1e-4656-b48b-b1b4a9aaa1cb",
    "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
    "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
    "type": "Rerun-AI",
    "url": "http://example.com",
    "status": "Finished",
    "error": "string",
    "tokenUsage": 0,
    "runtime": 0,
    "data": {}, // 主要抓取数据
    "htmlPath": "string",
    "recordingPath": "string",
    "screenshotPath": "string",
    "dataPath": "string",
    "htmlContent": "string"
  }
}

6. 批量重跑手动爬虫

  • 方法:POST
  • 主机:https://api.app.mrscraper.com
  • 路径:/api/v1/scrapers-manual-rerun/bulk
  • 认证:x-api-token

使用一个手动爬虫配置对多个 URL 进行批量重跑。

请求参数:

字段类型必填默认值描述
scraperIdstring已存在的手动爬虫配置 ID
urlsarray[string]要执行的目标 URL 列表

请求示例:

curl -X POST "https://api.app.mrscraper.com/api/v1/scrapers-manual-rerun/bulk" \
  -H "x-api-token: " \
  -H "Content-Type: application/json" \
  -d '{
    "scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",
    "urls": [
      "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
      "https://books.toscrape.com/catalogue/tipping-the-velvet_999/index.html",
      "https://books.toscrape.com/catalogue/soumission_998/index.html"
    ]
  }'

markdown
# MrScraper

## 1. 手动重新运行批量抓取任务

- 方法:`POST`
- 主机:`https://api.app.mrscraper.com`
- 路径:`/api/v1/scrapers-manual-rerun/bulk`
- 认证:`x-api-token`

启动对多个 URL 的批量重新抓取任务。

#### 请求示例:

curl -X POST "https://api.app.mrscraper.com/api/v1/scrapers-manual-rerun/bulk" \

-H "x-api-token: " \

-H "Content-Type: application/json" \

-d '{

"scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",

"urls": [

"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",

"https://books.toscrape.com/catalogue/tipping-the-velvet_999/index.html",

"https://books.toscrape.com/catalogue/soumission_998/index.html"

]

}'

#### 响应示例:

{

"message": "Bulk rerun started successfully",

"data": {

"bulkResultId": "f89f8f58-3c9a-42e5-a72e-59fa6c389f09",

"status": "Running",

"totalUrls": 3

}

}

## 2. 获取抓取结果

- 方法:`GET`
- 主机:`https://api.app.mrscraper.com`
- 路径:`/api/v1/results`
- 认证:`x-api-token`

返回分页的抓取结果数据。

#### 查询参数:

| 字段               | 类型   | 必填   | 默认值       | 描述                     |
|--------------------|--------|--------|--------------|--------------------------|
| `sortField`        | string | 是     | `updatedAt`  | 排序字段                 |
| `sortOrder`        | string | 是     | `DESC`       | 排序方向                 |
| `page`             | number | 是     | 1            | 页码                     |
| `pageSize`         | number | 是     | 10           | 每页数量                 |
| `search`           | string | 否     | 无           | 搜索关键词               |
| `dateRangeColumn`  | string | 否     | `createdAt`  | 日期筛选字段             |
| `startAt`          | string | 否     | 无           | 日期范围起始(ISO 格式) |
| `endAt`            | string | 否     | 无           | 日期范围结束(ISO 格式) |

#### 说明:

- `sortField` 可选值:`createdAt`, `updatedAt`, `id`, `type`, `url`, `status`, `error`, `tokenUsage`, `runtime`
- `sortOrder` 可选值:`ASC`, `DESC`
- `dateRangeColumn` 可选值:`createdAt`, `updatedAt`

#### 请求示例:

curl -X GET "https://api.app.mrscraper.com/api/v1/results?sortField=updatedAt&sortOrder=DESC&pageSize=10&page=1" \

-H "accept: application/json" \

-H "x-api-token: <MRSCRAPER_API_TOKEN>"

#### 响应示例:

{

"message": "Successful fetch",

"data": [

{

"createdAt": "2025-11-11T09:50:09.722Z",

"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",

"userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",

"scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",

"type": "AI",

"url": "http://example.com",

"status": "Finished",

"error": "string",

"tokenUsage": 5,

"runtime": 0,

"data": "{ \"title\": \"Product A\", \"price\": \"$10\" }",

"htmlPath": "string",

"recordingPath": "string",

"screenshotPath": "string",

"dataPath": "string"

}

],

"meta": {

"page": 1,

"pageSize": 10,

"total": 1,

"totalPage": 1

}

}

## 3. 根据 ID 获取详细抓取结果

- 方法:`GET`
- 主机:`https://api.app.mrscraper.com`
- 路径:`/api/v1/results/{id}`
- 认证:`x-api-token`

根据指定的结果 ID 返回一条详细的抓取结果。

#### 查询参数:

| 字段 | 类型     | 必填 | 默认值 | 描述       |
|------|----------|------|--------|------------|
| `id` | `string` | 是   | —      | 结果 ID    |

#### 请求示例:

curl -X GET "https://api.app.mrscraper.com/api/v1/results/497f6eca-6276-4993-bfeb-53cbbbba6f08" \

-H "accept: application/json" \

-H "x-api-token: <MRSCRAPER_API_TOKEN>"

#### 响应示例:

{

"message": "Successful fetch",

"data": [

{

"createdAt": "2025-11-11T09:50:09.722Z",

"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",

"userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",

"scraperId": "6695bf87-aaa6-46b0-b1ee-88586b222b0b",

"type": "AI",

"url": "http://example.com",

"status": "Finished",

"error": "string",

"tokenUsage": 5,

"runtime": 0,

"data": "string",

"htmlPath": "string",

"recordingPath": "string",

"screenshotPath": "string",

"dataPath": "string"

}

]

}

## 错误响应

平台标准 API 错误:

| 状态码 | 含义                     |
|--------|--------------------------|
| `400`  | 请求负载无效             |
| `401`  | 缺失或无效的 API Token   |
| `404`  | 抓取器或结果不存在       |
| `429`  | 请求频率超出限制         |
| `500`  | 内部抓取错误             |

错误格式:

{

"message": "string",

"error": "string",

"statusCode": "number"

}

## 操作规则

- 每次调用前验证必填字段。
- 大量结果集时使用分页。
- 遇到 `429` 错误时采用指数退避重试。
- 不在输出中暴露任何凭证信息。
AM
@ai-mrscraper

已收录 1 个 Skill

相关推荐