Passer au contenu principal

Extraction en lot de plusieurs URL

Vous pouvez désormais extraire en lot plusieurs URL simultanément. La fonction prend les URL de départ et des paramètres optionnels comme arguments. L’argument params vous permet de définir des options supplémentaires pour le traitement en lot, telles que les formats de sortie.

Fonctionnement

C’est très similaire au fonctionnement du point de terminaison /crawl. Vous pouvez soit lancer le lot et attendre qu’il se termine, soit le lancer et gérer vous‑même sa finalisation.
  • batchScrape (JS) / batch_scrape (Python) : lance un lot et attend sa fin, puis renvoie les résultats.
  • startBatchScrape (JS) / start_batch_scrape (Python) : lance un lot et renvoie l’ID du job pour que vous puissiez effectuer du polling ou utiliser des webhooks.

Utilisation

from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

start = firecrawl.start_batch_scrape([
    "https://firecrawl.dev",
    "https://docs.firecrawl.dev",
], formats=["markdown"])  # renvoie un identifiant

job = firecrawl.batch_scrape([
    "https://firecrawl.dev",
    "https://docs.firecrawl.dev",
], formats=["markdown"], poll_interval=2, wait_timeout=120)

print(job.status, job.completed, job.total)

Réponse

Appeler batchScrape/batch_scrape renvoie les résultats complets une fois le lot terminé.
Terminé
{
  "status": "terminée",
  "total": 36,
  "completed": 36,
  "creditsUsed": 36,
  "expiresAt": "2024-00-00T00:00:00.000Z",
  "next": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26",
  "data": [
    {
      "markdown": "[Page d’accueil de la documentation Firecrawl![logo clair](https://mintlify.s3-us-west-1.amazonaws.com/firecrawl/logo/light.svg)!...",
      "html": "<!DOCTYPE html><html lang=\"en\" class=\"js-focus-visible lg:[--scroll-mt:9.5rem]\" data-js-focus-visible=\"\">...",
      "metadata": {
        "title": "Créer un « chat avec un site web » avec Groq Llama 3 | Firecrawl",
        "language": "en",
        "sourceURL": "https://docs.firecrawl.dev/learn/rag-llama3",
        "description": "Apprenez à utiliser Firecrawl, Groq Llama 3 et LangChain pour créer un bot « discuter avec votre site web ».",
        "ogLocaleAlternate": [],
        "statusCode": 200
      }
    },
    ...
  ]
}
Appeler startBatchScrape/start_batch_scrape renvoie un ID de tâche que vous pouvez suivre via getBatchScrapeStatus/get_batch_scrape_status, en utilisant le point de terminaison API /batch/scrape/{id} ou des webhooks. Ce point de terminaison est destiné aux vérifications en cours ou immédiatement après la fin, car les tâches de lot expirent au bout de 24 heures.
{
  "success": true,
  "id": "123-456-789",
  "url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}

Grattage en lot avec extraction structurée

Vous pouvez aussi utiliser le point de terminaison de grattage en lot pour extraire des données structurées depuis les pages. C’est utile si vous voulez obtenir les mêmes données structurées à partir d’une liste d’URL.
from firecrawl import Firecrawl

firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")

# Récupérer plusieurs sites web :
batch_scrape_result = firecrawl.batch_scrape(
    ['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'], 
    formats=[{
        'type': 'json',
        'prompt': 'Extrait le titre et la description de la page.',
        'schema': {
            'type': 'object',
            'properties': {
                'title': {'type': 'string'},
                'description': {'type': 'string'}
            },
            'required': ['title', 'description']
        }
    }]
)
print(batch_scrape_result)

# Ou vous pouvez utiliser la méthode start :
batch_scrape_job = firecrawl.start_batch_scrape(
    ['https://docs.firecrawl.dev', 'https://docs.firecrawl.dev/sdks/overview'], 
    formats=[{
        'type': 'json',
        'prompt': 'Extrait le titre et la description de la page.',
        'schema': {
            'type': 'object',
            'properties': {
                'title': {'type': 'string'},
                'description': {'type': 'string'}
            },
            'required': ['title', 'description']
        }
    }]
)
print(batch_scrape_job)

# Vous pouvez ensuite utiliser l’ID du job pour vérifier l’état du batch scrape :
batch_scrape_status = firecrawl.get_batch_scrape_status(batch_scrape_job.id)
print(batch_scrape_status)

Réponse

batchScrape/batch_scrape retourne les résultats complets :
Terminé
{
  "status": "completed",
  "total": 36,
  "completed": 36,
  "creditsUsed": 36,
  "expiresAt": "2024-00-00T00:00:00.000Z",
  "next": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789?skip=26",
  "data": [
    {
      "json": {
        "title": "Créer un « chat avec un site web » avec Groq Llama 3 | Firecrawl",
        "description": "Découvrez comment utiliser Firecrawl, Groq Llama 3 et LangChain pour créer un bot de « chat avec votre site web »."
      }
    },
    ...
  ]
}
startBatchScrape/start_batch_scrape retourne un ID de tâche :
{
  "success": true,
  "id": "123-456-789",
  "url": "https://api.firecrawl.dev/v2/batch/scrape/123-456-789"
}

Récupération en lot avec webhooks

Vous pouvez configurer des webhooks pour recevoir des notifications en temps réel à mesure que chaque URL de votre lot est récupérée. Cela vous permet de traiter les résultats immédiatement, sans attendre la fin de l’ensemble du lot.
cURL
curl -X POST https://api.firecrawl.dev/v2/batch/scrape \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer VOTRE_CLÉ_API' \
    -d '{
      "urls": [
        "https://example.com/page1",
        "https://example.com/page2",
        "https://example.com/page3"
      ],
      "webhook": {
        "url": "https://your-domain.com/webhook",
        "metadata": {
          "any_key": "n_importe_quelle_valeur"
        },
        "events": ["démarrage", "page", "terminé"]
      }
    }'
Pour une documentation complète sur les webhooks, incluant les types d’événements, la structure des payloads et des exemples d’implémentation, consultez la documentation sur les webhooks.

Référence rapide

Types d’événements :
  • batch_scrape.started - Lorsque le scraping par lot démarre
  • batch_scrape.page - Pour chaque URL extraite avec succès
  • batch_scrape.completed - Lorsque toutes les URL sont traitées
  • batch_scrape.failed - Si le scraping par lot rencontre une erreur
Charge utile de base :
{
  "success": true,
  "type": "batch_scrape.page",
  "id": "batch-job-id",
  "data": [...], // Données de page pour les événements 'page'
  "metadata": {}, // Vos métadonnées personnalisées
  "error": null
}
Pour une configuration détaillée des webhooks, les bonnes pratiques de sécurité et le dépannage, consultez la documentation sur les webhooks.
I