AnyCrawl

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:

  1. Solo prompt: Usa un prompt en lenguaje natural para describir qué extraer. El LLM decide la estructura de salida.
  2. Solo esquema: Define un esquema JSON para restringir estrictamente la estructura de salida. El LLM rellena el contenido.
  3. 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:

  1. Indica la URL de la página objetivo
  2. Escribe un prompt que describa la información a extraer
  3. 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:

  1. Indica la URL de la página objetivo
  2. Define un esquema JSON para los campos y tipos deseados
  3. 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:

  1. Indica la URL de la página objetivo
  2. Define un esquema JSON para la estructura de salida
  3. Escribe un prompt para guiar la extracción
  4. 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: (para object) Objeto que especifica los campos y sus esquemas.
  • required: (para object) Array de nombres de campos obligatorios.

Tipos admitidos

TipoDescripciónEjemplo
stringTextoNombre de empresa, descripciones, títulos
numberValores numéricosPrecios, cantidades, valoraciones
booleanValores verdadero/falsoBanderas de disponibilidad, indicadores de función
objectEstructuras anidadasDirecciones, especificaciones de producto
arrayListas de valores u objetosEtiquetas, 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