AnyCrawl

JSON 模式

使用 LLM 從網頁中擷取結構化資料,支援 JSON Schema 驗證。

簡介

JSON 模式使你能夠使用大型語言模型(LLM)從任意網頁中擷取結構化資料。

AnyCrawl 允許你定義 JSON Schema 和提示詞來引導擷取過程,確保輸出符合你期望的格式。

使用範例

JSON 模式支援三種結構化擷取方式:

  1. 僅提示詞:使用自然語言提示詞描述你想擷取的內容。LLM 自行決定輸出結構。
  2. 僅 Schema:定義 JSON Schema 來嚴格約束輸出結構。LLM 填充內容。
  3. 提示詞 + Schema:結合 Schema 和提示詞,實現精確的結構和內容引導。

提示:設定 extract_source 來控制結構化擷取是讀取產生的 markdown 還是原始 html。預設為 markdown;當 Markdown 遺失重要結構時,請使用 html

重要:使用 json_options 時,formats 中必須包含 "json",否則回應中不會包含擷取的 JSON 資料。


1. 僅提示詞(彈性結構)

步驟:

  1. 設定目標網頁 URL
  2. 編寫描述要擷取資訊的提示詞
  3. 傳送請求
curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["json"],
    "json_options": {
      "user_prompt": "Extract the company mission, open source status, and employee count."
    }
  }'

2. 僅 Schema(嚴格結構)

步驟:

  1. 設定目標網頁 URL
  2. 為所需欄位和型別定義 JSON Schema
  3. 傳送請求
curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["json"],
    "json_options": {
      "schema": {
        "type": "object",
        "properties": {
          "company_mission": { "type": "string" },
          "is_open_source": { "type": "boolean" },
          "employee_count": { "type": "number" }
        },
        "required": ["company_mission"]
      }
    }
  }'

3. 提示詞 + Schema(引導式結構與內容)

步驟:

  1. 設定目標網頁 URL
  2. 為輸出結構定義 JSON Schema
  3. 編寫提示詞引導擷取
  4. 傳送請求
curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "formats": ["json"],
    "json_options": {
      "schema": {
        "type": "object",
        "properties": {
          "company_mission": { "type": "string" },
          "is_open_source": { "type": "boolean" },
          "employee_count": { "type": "number" }
        },
        "required": ["company_mission"]
      },
      "user_prompt": "Extract the company mission (string), open source status (boolean), and employee count (number)."
    }
  }'

JSON options 物件

json_options 參數是一個接受以下參數的物件:

  • schema:用於擷取的 Schema。
  • user_prompt:用於擷取的使用者提示詞。
  • schema_name:可選,產生輸出的名稱。
  • schema_description:可選,產生輸出的描述。

JSON Schema

用於擷取的 Schema。常見欄位包括:

  • type:值的型別,支援的型別如下所示。
  • properties:(用於 object)指定欄位及其 Schema 的物件。
  • required:(用於 object)必填欄位名稱的陣列。

支援的型別

Type描述範例
string文字資料公司名稱、描述、標題
number數值價格、數量、評分
boolean布林值(真/假)可用性旗標、功能指示器
object巢狀結構地址詳情、產品規格
array值或物件的列表標籤、分類、功能列表

Schema 範例

{
    "type": "object",
    "properties": {
        "company_name": {
            "type": "string"
        },
        "is_open_source": {
            "type": "object",
            "properties": {
                "answer": {
                    "type": "string"
                },
                "value": {
                    "type": "boolean"
                }
            }
        },
        "employee_count": {
            "type": "number"
        }
    },
    "required": ["company_name"]
}

相關文件