Modo JSON
Extrae datos estructurados de páginas web con LLM y validación de esquema JSON.
Introducción
El modo JSON te permite extraer datos estructurados de cualquier página web mediante modelos de lenguaje grandes (LLM).
AnyCrawl te permite definir un esquema JSON y prompts para guiar la extracción, asegurando que la salida coincida con el formato deseado.
Ejemplos de uso
El modo JSON admite tres modos de extracción estructurada:
- Solo prompt: Usa un prompt en lenguaje natural para describir qué extraer. El LLM decide la estructura de salida.
- Solo esquema: Define un esquema JSON para restringir estrictamente la estructura de salida. El LLM rellena el contenido.
- Prompt + esquema: Combina esquema y prompt para guiar con precisión la estructura y el contenido.
Consejo: configura extract_source para controlar si la extracción estructurada lee del markdown generado o del html original. El predeterminado es markdown; usa html cuando el markdown pierda estructura importante.
Importante: incluye "json" en formats cuando uses json_options; si no, la respuesta no contendrá datos JSON extraídos.
1. Solo prompt (estructura flexible)
Pasos:
- Indica la URL de la página objetivo
- Escribe un prompt que describa la información a extraer
- Envía la petición
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. Solo esquema (estructura estricta)
Pasos:
- Indica la URL de la página objetivo
- Define un esquema JSON para los campos y tipos deseados
- Envía la petición
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. Prompt + esquema (estructura y contenido guiados)
Pasos:
- Indica la URL de la página objetivo
- Define un esquema JSON para la estructura de salida
- Escribe un prompt para guiar la extracción
- Envía la petición
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)."
}
}'Objeto json_options
El parámetro json_options es un objeto que admite:
schema: Esquema usado para la extracción.user_prompt: Prompt de usuario para la extracción.schema_name: Nombre opcional de la salida que debe generarse.schema_description: Descripción opcional de la salida que debe generarse.
Esquema JSON
Esquema usado para la extracción. Campos habituales:
type: Tipo del valor; los tipos admitidos se indican abajo.properties: (paraobject) Objeto que especifica los campos y sus esquemas.required: (paraobject) Array de nombres de campos obligatorios.
Tipos admitidos
| Tipo | Descripción | Ejemplo |
|---|---|---|
string | Texto | Nombre de empresa, descripciones, títulos |
number | Valores numéricos | Precios, cantidades, valoraciones |
boolean | Valores verdadero/falso | Banderas de disponibilidad, indicadores de función |
object | Estructuras anidadas | Direcciones, especificaciones de producto |
array | Listas de valores u objetos | Etiquetas, categorías, listas de características |
Ejemplo de esquema
{
"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"]
}Documentación relacionada
- API Scrape - Extracción básica con extracción JSON
- API Crawl - Rastreo con opciones de extracción JSON
- Sistema de plantillas - Plantillas avanzadas de extracción de datos