Scrapling — Le guide complet
juin 2026 · 10 min de lecture
Scrapling — Le guide complet
Donne à ton Claude le pouvoir de scraper n'importe quel site web
Sommaire
- C'est quoi Scrapling ?
- Installation
- Utilisation en Python
- La feature killer : le scraper adaptatif
- Brancher Scrapling à Claude (MCP)
- Exemples de prompts pour Claude
- Utilisation depuis le terminal (sans code)
- Bonnes pratiques
1. C'est quoi Scrapling ?
Scrapling est un framework Python de web scraping adaptatif open source (52 000 ⭐ sur GitHub). Il résout les trois grands problèmes du scraping classique :
| Problème classique | Solution Scrapling |
|---|---|
| Le site change → le code casse | Parser adaptatif qui retrouve les éléments automatiquement |
| Anti-bot, Cloudflare bloquent | StealthyFetcher intégré, bypass Cloudflare Turnstile nativement |
| Trop lent, trop de tokens IA | 700x plus rapide que BeautifulSoup, extraction ciblée avant envoi à l'IA |
Il intègre aussi un serveur MCP natif pour brancher les capacités de scraping directement à Claude (Desktop ou Code).
2. Installation
Prérequis
- Python 3.10 ou supérieur
- pip
Installation de base (parser uniquement)
pip install scrapling
Installation complète avec fetchers (recommandé)
pip install "scrapling[fetchers]"
# Installer les dépendances navigateur (Chromium, etc.)
scrapling install
Installation avec le serveur MCP pour Claude
pip install "scrapling[ai]"
# Toujours lancer ensuite pour les navigateurs
scrapling install
Tout installer d'un coup
pip install "scrapling[all]"
scrapling install
Via Docker (si tu veux éviter l'installation locale)
docker pull pyd4vinci/scrapling
3. Utilisation en Python
Requête HTTP simple
from scrapling.fetchers import Fetcher
page = Fetcher.get('https://example.com/')
titres = page.css('h1::text').getall()
print(titres)
Avec session persistante (pour plusieurs requêtes)
from scrapling.fetchers import FetcherSession
with FetcherSession(impersonate='chrome') as session:
page = session.get('https://quotes.toscrape.com/')
citations = page.css('.quote .text::text').getall()
print(citations)
Sites dynamiques (JavaScript requis)
from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.fetch('https://example.com/', network_idle=True)
data = page.css('.product::text').getall()
Sites protégés par Cloudflare
from scrapling.fetchers import StealthyFetcher
page = StealthyFetcher.fetch(
'https://site-avec-cloudflare.com/',
headless=True,
solve_cloudflare=True
)
data = page.css('#content a').getall()
Spider complet (crawl multi-pages)
from scrapling.spiders import Spider, Response
class MonSpider(Spider):
name = "produits"
start_urls = ["https://shop.example.com/"]
concurrent_requests = 10
async def parse(self, response: Response):
for produit in response.css('.product'):
yield {
"titre": produit.css('h2::text').get(),
"prix": produit.css('.price::text').get(),
}
page_suivante = response.css('.next a')
if page_suivante:
yield response.follow(page_suivante[0].attrib['href'])
result = MonSpider().start()
result.items.to_json("produits.json")
4. La feature killer : le scraper adaptatif
C'est la fonctionnalité unique de Scrapling : ton scraper se répare automatiquement quand un site change de structure.
Comment ça marche
Étape 1 — Tu scrapes normalement avec auto_save=True
from scrapling.fetchers import Fetcher
page = Fetcher.get('https://example.com/')
# Tu marques les éléments que tu veux suivre
produits = page.css('.product-card', auto_save=True)
print(produits)
Scrapling mémorise les caractéristiques de ces éléments (position, attributs, voisins dans le DOM…).
Étape 2 — Le site change de design. Tu passes juste adaptive=True
page = Fetcher.get('https://example.com/')
# Le sélecteur original ne marche plus ?
# Scrapling retrouve les éléments tout seul grâce à ce qu'il a mémorisé
produits = page.css('.product-card', adaptive=True)
print(produits)
Plus besoin de déboguer, de réécrire les sélecteurs, de perdre du temps.
Stockage adaptatif personnalisé
Par défaut, Scrapling stocke les empreintes en local. Tu peux configurer ton propre système de stockage (base de données, fichier distant…) pour des projets plus complexes.
5. Brancher Scrapling à Claude (MCP)
Le serveur MCP de Scrapling donne à Claude 10 outils de scraping accessibles en langage naturel. Il est le seul serveur MCP de scraping qui permet de cibler des éléments précis avec des sélecteurs CSS avant d'envoyer le contenu à Claude — ce qui réduit massivement la consommation de tokens.
Les 10 outils disponibles
| Outil | Description |
|---|---|
get |
Requête HTTP rapide avec fingerprint navigateur |
bulk_get |
Requête HTTP sur plusieurs URLs en parallèle |
fetch |
Navigateur Chromium pour sites dynamiques (JS) |
bulk_fetch |
Navigateur sur plusieurs URLs simultanément |
stealthy_fetch |
Mode furtif, bypass Cloudflare Turnstile |
bulk_stealthy_fetch |
Mode furtif sur plusieurs URLs |
screenshot |
Capture d'écran d'une page (PNG/JPEG) |
open_session |
Ouvre une session navigateur persistante |
close_session |
Ferme une session ouverte |
list_sessions |
Liste les sessions actives |
Configuration — Claude Desktop
1. Trouver le chemin vers l'exécutable Scrapling
# macOS / Linux
which scrapling
# Windows
where scrapling
Exemple de résultat : /Users/tonnom/.venv/bin/scrapling
2. Ouvrir la config Claude Desktop
Dans Claude Desktop : ☰ (menu hamburger) → Settings → Developer → Edit Config
Le fichier se trouve ici :
- macOS :
~/Library/Application Support/Claude/claude_desktop_config.json - Windows :
%APPDATA%\Claude\claude_desktop_config.json
3. Ajouter la config Scrapling
{
"mcpServers": {
"ScraplingServer": {
"command": "/Users/tonnom/.venv/bin/scrapling",
"args": ["mcp"]
}
}
}
Remplace
/Users/tonnom/.venv/bin/scraplingpar le chemin retourné parwhich scrapling.
4. Relancer Claude Desktop complètement
Tu dois voir l'icône 🔧 en bas à droite de la zone de saisie, ou ScraplingServer dans le menu Search and tools.
Configuration — Claude Code
Beaucoup plus simple. Dans le terminal :
claude mcp add ScraplingServer "/Users/tonnom/.venv/bin/scrapling" mcp
Vérifie l'installation :
claude mcp list
Configuration — Via Docker
Si tu utilises l'image Docker plutôt qu'une installation locale :
{
"mcpServers": {
"ScraplingServer": {
"command": "docker",
"args": ["run", "-i", "--rm", "pyd4vinci/scrapling", "mcp"]
}
}
}
Mode HTTP (serveur distant)
Pour exposer le serveur MCP via HTTP (utile pour un déploiement cloud) :
scrapling mcp --http --host 0.0.0.0 --port 8000
6. Exemples de prompts pour Claude
Une fois Scrapling branché, voici comment en tirer le maximum. Règle d'or : dis toujours à Claude quel outil utiliser pour éviter qu'il choisisse seul et gaspille des tokens.
Extraction basique
Utilise des requêtes normales pour scraper le contenu principal de https://example.com et convertis-le en markdown.
Avec sélecteur CSS ciblé (recommandé pour économiser des tokens)
Utilise des requêtes normales pour extraire tous les titres de https://example.com
en utilisant le sélecteur CSS ".article-title". Retourne une liste propre.
Site protégé par Cloudflare
Ce site utilise Cloudflare Turnstile. Utilise le mode furtif pour récupérer
le prix de ce produit : https://site-protege.com/produit-xyz
Rends le navigateur visible pendant l'opération.
Scraping de plusieurs URLs en parallèle
Scrape ces 5 pages produits en parallèle avec des requêtes normales
et retourne les noms et prix de chaque produit :
- https://shop.com/produit-1
- https://shop.com/produit-2
- https://shop.com/produit-3
Workflow multi-étapes
1. Va sur https://shop.example.com/categorie
2. Extrais tous les liens produits avec le sélecteur CSS "a.product-link"
3. Fais un bulk request sur les 5 premiers
4. Pour chaque produit, extrais le nom, le prix et la description
5. Retourne le tout en tableau markdown
Session persistante (plusieurs pages sur le même site)
Ouvre une session navigateur furtive avec maximum 5 pages simultanées.
Utilise-la pour scraper les 5 premières pages de résultats sur https://example.com.
Ferme la session quand c'est terminé.
⚠️ Important : toujours demander à Claude de fermer la session après usage, sinon le navigateur reste ouvert en mémoire.
Screenshot pour analyse visuelle
Ouvre une session navigateur dynamique,
prends un screenshot complet de https://example.com,
puis ferme la session.
7. Utilisation depuis le terminal (sans code)
Scrapling s'utilise aussi directement en ligne de commande, sans écrire une seule ligne de Python.
Extraire le contenu d'une page
# Format markdown
scrapling extract get 'https://example.com' contenu.md
# Format texte brut
scrapling extract get 'https://example.com' contenu.txt
# Format HTML
scrapling extract get 'https://example.com' contenu.html
Cibler un élément spécifique
scrapling extract get 'https://example.com' resultats.md --css-selector '.article-body'
Site dynamique (avec navigateur)
scrapling extract fetch 'https://spa-example.com' contenu.md
Site protégé Cloudflare
scrapling extract stealthy-fetch 'https://site-protege.com' contenu.html \
--css-selector '#main-content' \
--solve-cloudflare
Shell interactif (pour développer des scrapers)
scrapling shell
Lance un shell IPython avec Scrapling pré-intégré, idéal pour tester des sélecteurs CSS/XPath en direct.
8. Bonnes pratiques
Choisir le bon outil
Site statique simple → get / Fetcher
Site avec JavaScript → fetch / DynamicFetcher
Cloudflare ou anti-bot → stealthy_fetch / StealthyFetcher
Plusieurs URLs → bulk_* (toujours préférer le parallèle)
Économiser les tokens avec Claude
Toujours passer un sélecteur CSS pour que Scrapling filtre le contenu avant de l'envoyer à Claude :
❌ Scrape https://example.com et trouve le prix.
✅ Scrape https://example.com avec le sélecteur CSS ".price" et retourne les prix.
Protéger contre l'injection de prompt
Le serveur MCP de Scrapling filtre automatiquement les éléments cachés (CSS display:none, commentaires HTML, caractères zéro-width…) qui pourraient injecter des instructions malveillantes dans le contexte de Claude. Ce filtre est actif par défaut avec main_content_only=true.
Respecter les règles légales et éthiques
- Toujours vérifier
https://site.com/robots.txtavant de scraper - Ne pas surcharger les serveurs (espacer les requêtes)
- Lire les Conditions d'Utilisation du site
- Respecter le RGPD pour les données personnelles
Ressources
- Documentation officielle : scrapling.readthedocs.io
- GitHub : github.com/D4Vinci/Scrapling
- Démo vidéo MCP : youtube.com/watch?v=qyFk3ZNwOxE
- Discord : discord.gg/EMgGbDceNQ