OFFRE À DURÉE LIMITÉE|20 % DE RÉDUCTION sur Seedance 2.0 & 2.0 Mini !

Comment transformer des sites web en JSON prêt pour les LLM avec AnyCrawl

Apprenez à auto-héberger AnyCrawl avec Docker, à configurer Atlas Cloud comme source d'API de modèle et à extraire des pages web au format Markdown et JSON structuré pour vos applications d'IA.

Comment transformer des sites web en JSON prêt pour les LLM avec AnyCrawl

AnyCrawl vous aide à convertir des pages web complexes en Markdown propre ou en JSON pour vos applications LLM. Ce tutoriel montre comment coupler AnyCrawl avec Atlas Cloud comme source d'API de modèle, scraper une page de projet, extraire des champs structurés, puis passer à l'échelle en utilisant les flux de travail de crawl et de recherche.

La plupart des tutoriels sur le web scraping s'arrêtent au téléchargement du HTML. Pour les applications d'IA, c'est généralement là que le vrai travail commence. Les pages brutes contiennent des en-têtes, des pieds de page, des barres latérales, des bannières de cookies, des liens répétés et du contenu généré en JavaScript. Ce dont votre modèle a réellement besoin, c'est d'une interface de données stable : du texte propre pour le contexte, et du JSON typé pour les champs spécifiques.

C'est là que réside l'intérêt d'AnyCrawl. Il s'agit d'un crawler et scraper Node.js / TypeScript conçu pour transformer les sites web en données prêtes pour les LLM, avec la prise en charge du scraping de page unique, du crawling de site, de la collecte SERP, des charges de travail multi-thread / multi-processus et de l'extraction JSON assistée par LLM.

Ce que nous allons construire

Nous allons créer un « extracteur de recherche de projet ».

Entrée :

plaintext
1L'URL d'une page de projet public ou d'une documentation

Sortie :

plaintext
1{
2  "project_name": "AnyCrawl",
3  "one_sentence_summary": "...",
4  "core_features": ["..."],
5  "best_for": ["..."],
6  "input_types": ["url", "search query"],
7  "output_formats": ["markdown", "json"],
8  "evidence_urls": ["..."]
9}

La démonstration utilise trois fonctionnalités d'AnyCrawl :

BesoinFonctionnalité AnyCrawlPourquoi c'est important
Extraire une page/v1/scrapeLe meilleur point de départ pour transformer une URL en Markdown ou JSON
Extraire plusieurs pages/v1/crawlUtile pour les sites de documentation, les pages produits, blogs et centres d'aide
Trouver des pages d'abord/v1/searchUtile quand vous avez besoin de résultats SERP avant de scraper des URL
Forcer des champs stablesMode JSONUtile quand votre application en aval a besoin d'une sortie typée, pas seulement de texte

L'API Scrape d'AnyCrawl convertit une URL en données structurées prêtes pour les LLM et peut renvoyer du Markdown, HTML, texte, capture d'écran, HTML brut, JSON, résumé et liens. La documentation décrit Scrape comme synchrone, vous n'avez donc pas besoin d'une boucle d'interrogation pour une seule page.

Étape par étape : Exécuter AnyCrawl avec Atlas Cloud et extraire des pages web en JSON

Dans ce tutoriel, nous allons auto-héberger AnyCrawl avec Docker, configurer Atlas Cloud comme fournisseur d'API de modèle pour l'extraction, puis appeler le serveur AnyCrawl local pour transformer une page web en JSON structuré.

Note : Ce tutoriel est rédigé pour les environnements de terminal macOS et Linux.

Étape 1 : Créer un dossier de projet propre

Ouvrez votre terminal et créez un petit dossier pour cette démonstration.

plaintext
1mkdir anycrawl-atlas-demo
2cd anycrawl-atlas-demo

Ce dossier contiendra uniquement le fichier d'environnement et le corps de requête utilisé pour tester l'API.

Étape 2 : Obtenir une clé API Atlas Cloud

Allez sur la console Atlas Cloud, ouvrez la page des clés API, cliquez sur Create API Key, puis copiez et stockez la clé de manière sécurisée. Atlas Cloud précise que la clé n'est affichée qu'une seule fois, donc conservez-la précieusement lors de sa création.

Atlas Cloud

Gardez la clé privée. Ne la collez pas dans un dépôt GitHub public, une ébauche d'article ou une capture d'écran.

Étape 3 : Créer le fichier .env

Créez un fichier .env dans le dossier actuel :

plaintext
1cat > .env <<'EOF'
2NODE_ENV=production
3ANYCRAWL_API_PORT=8080
4ANYCRAWL_HEADLESS=true
5ANYCRAWL_API_AUTH_ENABLED=false
6
7ATLASCLOUD_BASE_URL=https://api.atlascloud.ai/v1
8ATLASCLOUD_API_KEY=VOTRE_CLE_API_ATLASCLOUD
9DEFAULT_LLM_MODEL=atlascloud/deepseek-v4
10DEFAULT_EXTRACT_MODEL=atlascloud/deepseek-v4
11EOF

Remplacez VOTRE_CLE_API_ATLASCLOUD par votre vraie clé.

C'est l'endroit approprié pour configurer le fournisseur de modèle. La requête de scraping elle-même doit rester concentrée sur l'URL, le format de sortie et le schéma JSON. Le routage du modèle appartient à l'environnement du serveur AnyCrawl, car c'est lui qui exécute l'étape d'extraction assistée par LLM.

Étape 4 : Démarrer AnyCrawl avec Docker

Note : Sur macOS, assurez-vous que Docker Desktop est installé et en cours d'exécution avant de démarrer AnyCrawl. Pour les Mac Apple Silicon, utilisez auto ou playwright au lieu de puppeteer sauf si vous exécutez explicitement l'image amd64.

Exécutez le conteneur tout-en-un AnyCrawl et montez le fichier .env à l'intérieur.

plaintext
1docker run -d \
2  --name anycrawl-atlas-demo \
3  -p 8080:8080 \
4  -v "$(pwd)/.env:/usr/src/app/.env:ro" \
5  ghcr.io/any4ai/anycrawl:latest

Vérifiez si le service est en cours d'exécution :

plaintext
1curl http://localhost:8080/health

La documentation Docker utilise le port 8080 pour le déploiement local et indique /health comme point de terminaison de vérification.

Étape 5 : Tester une requête de scraping de base

Avant de demander du JSON, testez si AnyCrawl peut lire une page et renvoyer du Markdown.

plaintext
1curl -X POST "http://localhost:8080/v1/scrape" \
2  -H "Content-Type: application/json" \
3  -d '{
4    "url": "https://github.com/any4ai/AnyCrawl",
5    "engine": "auto",
6    "formats": ["markdown"],
7    "only_main_content": true
8  }'

L'API Scrape d'AnyCrawl transforme une URL en données structurées prêtes pour les LLM. Elle prend en charge des moteurs tels que auto, cheerio, playwright et puppeteer, et supporte des formats de sortie incluant markdown, html, text, json, summary et links.

Pour cette première requête, markdown suffit. Vous vérifiez si le contenu de la page est visible avant de demander au modèle d'extraire des champs structurés.

Étape 6 : Créer la requête d'extraction JSON

Créez maintenant un corps de requête qui demande à AnyCrawl d'extraire un profil de projet structuré.

plaintext
1cat > scrape-project.json <<'EOF'
2{
3  "url": "https://github.com/any4ai/AnyCrawl",
4  "engine": "auto",
5  "formats": ["markdown", "json"],
6  "only_main_content": true,
7  "extract_source": "markdown",
8  "json_options": {
9    "schema_name": "open_source_project_profile",
10    "schema_description": "A structured profile of an open-source project based only on the visible page content.",
11    "schema": {
12      "type": "object",
13      "properties": {
14        "project_name": {
15          "type": "string"
16        },
17        "one_sentence_summary": {
18          "type": "string"
19        },
20        "core_features": {
21          "type": "array",
22          "items": {
23            "type": "string"
24          }
25        },
26        "best_for": {
27          "type": "array",
28          "items": {
29            "type": "string"
30          }
31        },
32        "supported_tasks": {
33          "type": "array",
34          "items": {
35            "type": "string"
36          }
37        },
38        "developer_setup_notes": {
39          "type": "array",
40          "items": {
41            "type": "string"
42          }
43        }
44      },
45      "required": [
46        "project_name",
47        "one_sentence_summary",
48        "core_features"
49      ]
50    },
51    "user_prompt": "Extract only facts that are visible on the page. Do not guess. Summarize the project for a developer who wants to use web data in an AI application."
52  }
53}
54EOF

Une erreur courante : lors de l'utilisation de json_options, vous devez inclure "json" dans formats, sinon la réponse ne contiendra pas les données JSON extraites. Le mode JSON d'AnyCrawl prend en charge l'extraction par prompt uniquement, par schéma uniquement, ou par les deux. Pour ce tutoriel, nous utilisons le prompt et le schéma car cela permet à la fois un contrôle des champs et un guidage de l'extraction.

Étape 7 : Exécuter l'extraction JSON

Envoyez la requête à votre serveur AnyCrawl local :

plaintext
1curl -X POST "http://localhost:8080/v1/scrape" \
2  -H "Content-Type: application/json" \
3  -d @scrape-project.json

Si tout est correctement configuré, la réponse devrait inclure un résultat de scraping réussi et un résultat d'extraction JSON respectant le schéma défini.

À ce stade, le flux est complet :

plaintext
1Page projet GitHub
2→ API de scrape AnyCrawl locale
3→ Extraction Markdown
4→ Extraction JSON assistée par LLM
5→ Profil de projet structuré

L'élément important est que la requête n'appelle jamais directement le fournisseur de modèle. AnyCrawl gère le flux de scraping et d'extraction, tandis que la source de l'API du modèle est configurée au niveau du serveur.

Étape 8 : Essayer une page riche en JavaScript si le Markdown semble vide

Si le résultat Markdown est trop court, vide ou qu'il manque du contenu visible, basculez le moteur sur playwright.

plaintext
1{
2  "url": "https://example.com",
3  "engine": "playwright",
4  "formats": ["markdown", "json"],
5  "only_main_content": true,
6  "json_options": {
7    "user_prompt": "Extract the main topic, key facts, and important links from this page."
8  }
9}

La documentation d'AnyCrawl décrit cheerio comme rapide pour le HTML statique, playwright comme meilleur pour les pages générées en JavaScript, et auto comme l'option polyvalente qui peut choisir le moteur automatiquement.

Étape 9 : Arrêter et nettoyer le conteneur de démo

Lorsque vous avez fini les tests, arrêtez le conteneur :

plaintext
1docker stop anycrawl-atlas-demo
2docker rm anycrawl-atlas-demo

Vous pouvez redémarrer le même flux de travail plus tard en exécutant à nouveau la commande Docker depuis le dossier contenant votre fichier .env.

Ce que vous venez de construire

Vous disposez maintenant d'un service AnyCrawl local capable de scraper une page web publique, de la nettoyer en Markdown et d'extraire du JSON typé via un flux LLM guidé par schéma. Cette configuration maintient le crawler, le modèle d'extraction et la sortie de l'application dans le bon ordre : page web d'abord, contenu structuré ensuite, intégration à l'application en dernier.

FAQ

À quoi sert AnyCrawl ?

AnyCrawl est utilisé pour transformer des pages web, des sites entiers et des résultats de recherche en données prêtes pour les LLM telles que le Markdown et le JSON structuré. Il prend en charge le scraping de page unique, le crawling complet de site, la collecte SERP et l'extraction JSON assistée par LLM, ce qui le rend utile pour les applications RAG, les agents IA, les outils de recherche et les pipelines de données internes.

Comment extraire du JSON d'une page web avec AnyCrawl ?

Utilisez /v1/scrape, incluez "json" dans formats, et passez json_options avec un prompt, un schéma, ou les deux. La documentation du mode JSON d'AnyCrawl note spécifiquement que si vous utilisez json_options sans inclure "json" dans formats, la réponse ne contiendra pas les données JSON extraites.

Comment utiliser Atlas Cloud avec AnyCrawl ?

Utilisez Atlas Cloud comme fournisseur LLM compatible avec OpenAI dans l'environnement du serveur AnyCrawl, et non à l'intérieur de chaque requête de scraping. La documentation d'Atlas Cloud décrit son point de terminaison LLM comme compatible OpenAI avec l'URL de base https://api.atlascloud.ai/v1, tandis que la configuration du fournisseur d'AnyCrawl utilise des variables d'environnement telles que ATLASCLOUD_BASE_URL, ATLASCLOUD_API_KEY et les paramètres de modèle d'extraction par défaut.

AnyCrawl peut-il crawler un site web entier ?

Oui, AnyCrawl peut crawler un site web via /v1/crawl, ce qui crée une tâche de crawl asynchrone. L'API Crawl vous permet de contrôler la portée avec des options telles que max_depth, limit, include_paths et exclude_paths, puis d'interroger la tâche de crawl et de récupérer les résultats paginés.

AnyCrawl peut-il scraper les résultats de recherche Google ?

Oui, AnyCrawl inclut une API Search pour collecter des résultats SERP structurés avant de scraper des URL sélectionnées. Son API Search prend en charge des paramètres tels que query, pages, limit, lang, country et timeRange, ce qui est utile lorsque votre flux de travail IA commence par une requête de recherche plutôt que par une URL connue.

AnyCrawl est-il meilleur que Firecrawl ou Crawl4AI ?

Pas nécessairement ; cela dépend de vos besoins de déploiement et de flux de travail. AnyCrawl est un bon choix pour ce tutoriel car nous voulons un service Docker local, une configuration de fournisseur de modèle au niveau du serveur et un workflow de scraping vers JSON simple via /v1/scrape, tandis que Firecrawl et Crawl4AI ont leurs points forts respectifs dans l'extraction managée et le crawling programmable.

Dois-je utiliser Cheerio, Playwright ou Puppeteer dans AnyCrawl ?

Commencez par auto ou cheerio, puis passez à playwright lorsque la page nécessite un rendu JavaScript. La documentation de scraping d'AnyCrawl positionne Cheerio comme léger pour le HTML statique et Playwright/Puppeteer comme moteurs basés sur navigateur pour des pages plus complexes. Le flux de travail pratique consiste donc à inspecter le Markdown d'abord et à n'utiliser un moteur plus lourd qu'en cas de besoin.

Pourquoi ma sortie JSON AnyCrawl est-elle manquante ?

La raison la plus fréquente est que "json" n'a pas été inclus dans formats. Une autre cause courante est que le moteur sélectionné n'a pas capturé correctement le contenu de la page, en particulier sur les sites générés en JavaScript ; dans ce cas, réessayez avec auto ou playwright et vérifiez le Markdown avant de déboguer le schéma.

Puis-je utiliser AnyCrawl pour des pipelines de données RAG ?

Oui, AnyCrawl est une solution pratique pour la préparation de données RAG car il peut convertir des pages web en Markdown et en JSON guidé par schéma avant que le contenu n'entre dans votre base de données vectorielle ou système de connaissances. Un bon modèle de production consiste à scraper d'abord, valider les champs extraits, stocker l'URL source et conserver suffisamment de Markdown pour le débogage.

Quel est le flux de travail AnyCrawl le plus simple pour les débutants ?

Le flux de travail le plus simple est : scraper une URL, demander du Markdown, confirmer que le contenu semble correct, ajouter le mode JSON, valider la sortie, et seulement ensuite passer au crawl ou à la recherche. Cela évite de mélanger les problèmes d'accès aux pages, les problèmes de rendu et les problèmes de schéma d'extraction dans une seule requête difficile à déboguer.

Conclusion

AnyCrawl est utile parce qu'il traite les pages web comme des entrées pour des systèmes d'IA, et non simplement comme des documents HTML à télécharger. Commencez par une page, inspectez le Markdown, ajoutez un schéma, validez le JSON, et passez seulement après au crawl ou à la recherche.

Cet ordre maintient la simplicité du flux de travail. Il permet également de rendre les points de défaillance visibles, ce qui est essentiel lorsque les données web deviennent partie intégrante d'une application d'IA.

Modèles récents

Une seule API pour toute l'IA multimédia.

Explorer tous les modèles

Join our Discord community

Join the Discord community for the latest model updates, prompts, and support.

Tutoriel AnyCrawl : Transformez des sites web en JSON prêt pour les LLM