Skip to main content
POST https://api.acedata.cloud/webextrator/extract WebExtrator 智能抽取 API 把一个 URL 转换成類型化的結構化結果 —— 文章、商品、 食譜、視頻、討論、招聘等,同時附帶清洗後的 Markdown 與純文本。當你想要”乾淨的結構化數據”而不是原始 HTML 時,這是該用的接口。 底層是一條三層流水線:
  1. schema.org JSON-LD 映射器 —— 確定性、零 LLM 成本。覆蓋 Wikipedia / BestBuy / AllRecipes / YouTube / 大部分新聞 / 大部分商品頁。
  2. 類型化 LLM 抽取 —— 僅在 schema.org 未命中時觸發。按頁面類型選 Schema, Zod 嚴格校驗。
  3. Readability + Markdown 兜底 —— 始終運行,補齊前兩層沒填的頂層字段。
URL 重複請求會被 Redis 結果快取接住,<1 ms 返回。

申請流程

要使用 WebExtrator 服務頁,首先到 Ace Data Cloud 控制台 獲取您的 API Token,留作備用。 如果你尚未登錄或註冊,會自動跳轉到登錄頁面邀請你註冊和登錄,完成後會自動返回當前頁面。 一個 API Token 即可調用平台所有服務,無需為每個服務單獨申請。 首次申請會贈送免費額度,可免費體驗;額度不足時可在 控制台 充值通用餘額。
📘 完整文檔:WebExtrator 服務頁 →

鑑權

請求參數

Extract 接受所有Render API 的參數 (urluser_agenttimeoutwait_untildelaywait_for_selectorblock_resourcesheaderscookiescallback_urlbypass_cachecache_ttl_secondsasync),外加兩個 Extract 專屬字段:
當頁面自帶 schema.org JSON-LD 時,enable_llm 無效 —— 確定性映射器直接出結果, 永遠不會浪費 LLM 調用。你白嫖到類型化結果。

同步響應

頂層字段

data.structured 子字段

schema.org 映射器覆盖范围

按优先级排序(命中即作为 structured.schemaOrg.primary): 映射器处理:
  • @graph 容器(递归展开);
  • @type 数组(如 ["Recipe", "NewsArticle"] —— 两个都识别,按优先级取胜);
  • http://schema.org/ 前缀变体;
  • 嵌套 OfferAggregateOffer(后者读 lowPrice);
  • 相对图像 URL(按 finalUrl 解析为绝对)。

LLM 类型化 Schema

enable_llm: true schema.org 没有 primary 时,抽取器按 URL 启发式 (或 expected_type 提示)选下面之一的 Zod Schema 校验模型输出: LLM 成功时还会向顶层字段做”last-resort”回填:
  • articledescription / byline / publishedAt / language
  • productdescription
  • discussiondescription(= body 前 280 字)/ byline(= author)/ publishedAt(= postedAt)
  • recipedescription / byline(= author)
  • videodescription / byline(= channel)/ publishedAt(= uploadDate)
  • jobdescription / byline(= company)/ publishedAt(= datePosted)
回填只在确定性数据源没填对应字段时触发 —— LLM 始终是最后一道兜底。

缓存

相同请求会被哈希到同一个 Redis Key: webextrator:cache:extract:<sha256(canonical-json)>。缓存 Key 忽略 asyncbypass_cachecache_ttl_seconds(这是操作开关,不影响响应)。cookies / headers 分桶缓存。 命中缓存的响应会带上 data.cached: truedata.cacheStoredAt: <unix-ms>

异步模式与回调

设置 async: true 进入异步模式(提供 callback_url 也会自动进入)。平台立即返回(HTTP 200):
任务完成时把完整 envelope POST 到你的 callback_url(如果配置了)。也可以事 后通过 /webextrator/tasks 主动查询。

示例

1. Wikipedia 文章(schema.org 命中,不需要 LLM)

data.structured.schemaOrg.primary 关键字段:

2. BestBuy 商品页(schema.org 命中)

schema.org 抽出:

3. AllRecipes 食谱页(含营养与步骤)

schema.org 抽出:

4. HN 讨论页(无 JSON-LD —— 需要启用 LLM)

data.structured.llm.data
顶层字段也被回填:byline = "alice"publishedAt = "..."

5. Amazon 商品页(Amazon 无 JSON-LD —— 需要启用 LLM)

data.structured.llm.data(类型化 product):

Python (requests)

Node.js (fetch)

提示与坑

  • 能傳 expected_type 就傳。 免費提示,跳過啟發式判斷,對 URL 模式不在 內置列表裡的頁面尤其有用。
  • enable_llm: true 在 schema.org 命中的頁面上是免費的。 LLM 只在 schema.org 沒有 primary 時才被調用,所以默認開著也很安全。
  • 調試時先看 rawSignals.hasJsonLd 如果是 truestructured.schemaOrg.primarynull,說明頁面用了我們映射器還沒覆蓋的 @type —— 提個 issue,我們加。
  • structured.llmError 是信息性的。 請求依然成功,啟發式結果依然返回。看 llmError.error 來定位原因(超時、JSON 解析失敗、Zod 校驗失敗)。
  • 非文章頁的 links[] 不會做相關性排序。 僅按”上限 100 條 + 過濾無效協議” 尽力清洗。
  • 緩存命中也計費。 緩存是為延遲和保護瀏覽器池,不是為省錢。