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
/api/v1/tools/extract_structuredParameters
LLM lwn. sandaran pemilih: Berikan llmConfig untuk menggunakan pengekstrakan dikuasakan LLM. Tanpanya, alat menggunakan selectorHints untuk pengekstrakan CSS berketentuan — lebih murah dan tiada kunci LLM diperlukan.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Required | - | URL untuk mengekstrak data Example: https://example.com/product/123 |
schema | object | Required | - | JSON Schema yang menerangkan data untuk diekstrak Example: {"type":"object","properties":{"title":{"type":"string"},"price":{"type":"number"}},"required":["title"]} |
prompt | string | Optional | - | Arahan bahasa semula jadi yang membimbing pengekstrakan LLM Example: Extract the product name, current price, and whether it is in stock |
llmConfig | object | Optional | - | Konfigurasi penyedia LLM pilihan (provider, apiKey). Tinggalkan untuk menggunakan sandaran pemilih CSS. Example: {"provider": "openai", "apiKey": "sk-..."} |
selectorHints | object | Optional | - | Petunjuk pemilih CSS untuk membimbing pengekstrakan (juga digunakan oleh sandaran pemilih) Example: {"title": "h1.product-title", "price": ".price"} |
fallbackToSelectors | boolean | Optional | true | Beralih ke pengekstrakan pemilih CSS apabila LLM tidak tersedia Example: true |
respect_robots | boolean | Optional | true | 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
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
// 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
# 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
{ "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}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
Tip: Gandingkan dengan scrape_structured (2 credits, CSS sahaja) apabila anda sudah mempunyai pemilih yang stabil dan tidak memerlukan fleksibiliti LLM.
Alat Berkaitan
Bersedia untuk mengekstrak data berstruktur bertaip? Daftar secara percuma dan dapatkan 1,000 credits.