Langkau ke kandungan
Alat AI3 credits

extract_structured

Berikan pengekstrak satu JSON Schema dan gesaan bahasa semula jadi. LLM membaca halaman dan mengembalikan data yang sepadan dengan skema anda. Apabila tiada penyedia LLM dikonfigurasi, ia beralih ke pengekstrakan pemilih CSS menggunakan petunjuk anda.

Kes Penggunaan

Pengekstrakan Produk Skema-Dahulu

Takrifkan medan yang anda mahu sekali; LLM memetakan mana-mana tapak e-dagang ke skema anda.

Penghuraian Resume & Dokumen

Ekstrak nama calon, kemahiran dan sejarah kerja terus ke dalam objek bertaip.

Penyemaian Graf Pengetahuan

Ekstrak entiti dan perhubungan daripada artikel ke dalam JSON berstruktur untuk pemuat graf.

Endpoint

POST/api/v1/tools/extract_structured
Auth Required
1 req/s pada pelan Free
3 credits

Parameters

NameTypeRequiredDefaultDescription
url
stringRequired-
URL untuk mengekstrak data
Example: https://example.com/product/123
schema
objectRequired-
JSON Schema yang menerangkan data untuk diekstrak
Example: {"type":"object","properties":{"title":{"type":"string"},"price":{"type":"number"}},"required":["title"]}
prompt
stringOptional-
Arahan bahasa semula jadi yang membimbing pengekstrakan LLM
Example: Extract the product name, current price, and whether it is in stock
llmConfig
objectOptional-
Konfigurasi penyedia LLM pilihan (provider, apiKey). Tinggalkan untuk menggunakan sandaran pemilih CSS.
Example: {"provider": "openai", "apiKey": "sk-..."}
selectorHints
objectOptional-
Petunjuk pemilih CSS untuk membimbing pengekstrakan (juga digunakan oleh sandaran pemilih)
Example: {"title": "h1.product-title", "price": ".price"}
fallbackToSelectors
booleanOptionaltrue
Beralih ke pengekstrakan pemilih CSS apabila LLM tidak tersedia
Example: true
respect_robots
booleanOptionaltrue
Hormati robots.txt tapak sasaran. Dibiarkan pada `true`, laluan yang dilarang untuk `CrawlForge` ditolak dengan 403 sebelum apa-apa diambil dan tiada credits dicaj. Tetapkan kepada `false` hanya untuk sasaran yang anda mempunyai perjanjian sendiri dengannya — respons kemudiannya membawa entri `warnings` dan tindakan mengatasi itu direkodkan pada API key anda.
Example: true

Contoh Permintaan

cURL — LLM extraction

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/extract_structured \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/123",
    "schema": {
      "type": "object",
      "properties": {
        "title": { "type": "string" },
        "price": { "type": "number" },
        "in_stock": { "type": "boolean" }
      },
      "required": ["title", "price"]
    },
    "prompt": "Extract the product name, price in USD, and availability",
    "llmConfig": { "provider": "openai", "apiKey": "sk-..." }
  }'

TypeScript — selector fallback

extractStructured.tsTypescript
// npm install crawlforge-sdk
import { CrawlForge } from 'crawlforge-sdk';

const client = new CrawlForge({ apiKey: process.env.CRAWLFORGE_API_KEY });

const result = await client.extractStructured({
  url: 'https://example.com/product/123',
  schema: {
    type: 'object',
    properties: {
      title: { type: 'string' },
      price: { type: 'number' },
    },
    required: ['title'],
  },
  selectorHints: {
    title: 'h1.product-title',
    price: '.price-value',
  },
  fallbackToSelectors: true,
});

// result.data is untyped in crawlforge-sdk 0.1 — its shape is the Response Example below.
const { data: product } = result.data as { data: { title: string; price: number } };
console.log(product.title, product.price);

Python

extract_structured.pyPython
# pip install crawlforge
from crawlforge import CrawlForge

client = CrawlForge()  # reads CRAWLFORGE_API_KEY

result = client.extract_structured(
    url='https://example.com/article/42',
    schema={
        'type': 'object',
        'properties': {
            'headline': {'type': 'string'},
            'author': {'type': 'string'},
            'published_at': {'type': 'string'},
            'tags': {'type': 'array'},
        },
        'required': ['headline'],
    },
    prompt='Extract headline, author, publish date (ISO 8601), and tags',
)

# result.data is a plain dict — its shape is the Response Example below.
print(result.data['data'])

Contoh Respons

200 OK1.2s
{
"success": true,
"data": {
"url": "https://example.com/product/123",
"data": {
"title": "Premium Wireless Headphones",
"price": 299.99,
"in_stock": true
},
"extraction": {
"method_by_field": {
"title": "selector",
"price": "json-ld",
"in_stock": "meta"
},
"llm_used": false,
"note": "Selector/structured-data extraction; LLM-guided extraction is available via the CrawlForge MCP server"
},
"extracted_at": "2026-08-26T14:30:00.000Z"
},
"credits_used": 3,
"credits_remaining": 997,
"processing_time": 1240
}
Field Descriptions
data.dataSatu kunci bagi setiap sifat dalam skema anda. Sifat `number` atau `integer` mengambil nombor pertama dalam teks yang dijumpai (`"4.5 out of 5"` ialah 4.5, `"$1,299.00"` ialah 1299; `integer` hanya apabila nombor itu bulat); teks tanpa nombor dikembalikan seadanya. Medan yang tidak dijumpai ialah null.
data.extraction.method_by_fieldBagaimana setiap medan diperoleh: `selector` daripada entri selectorHints, `json-ld` daripada data berstruktur, `meta` daripada tag meta, atau `none` apabila tiada yang sepadan.
data.extraction.llm_usedSentiasa false pada API REST terhos — pengekstrakan berasaskan pemilih dan data berstruktur, tidak pernah generatif.
data.extraction.noteMenyatakan semula di mana pengekstrakan berpandukan LLM tersedia.
data.extracted_atCap masa ISO 8601 bagi pengekstrakan.

Pengendalian Ralat

Disekat oleh robots.txt (403 Forbidden)

robots.txt tapak sasaran melarang laluan ini untuk CrawlForge. Tetapkan respect_robots: false untuk mengatasinya jika anda mempunyai perjanjian sendiri dengan sasaran — tindakan mengatasi itu direkodkan pada API key anda. Tindakan mengatasi itu tidak sampai kepada hos yang berada dalam senarai penarikan diri kekal CrawlForge, yang ditolak tanpa mengira nilai respect_robots.

Kos Credit

3 credits
3 credits setiap permintaan
3 credits rata sama ada panggilan menggunakan LLM atau sandaran pemilih.

Tip: Gandingkan dengan scrape_structured (2 credits, CSS sahaja) apabila anda sudah mempunyai pemilih yang stabil dan tidak memerlukan fleksibiliti LLM.

Alat Berkaitan