Scrapling - Framework de scraping web adaptatif
(github.com/D4Vinci)- Contourne la structure complexe du web moderne et les systèmes anti-bot tout en gérant aussi bien une requête unique que le crawling à grande échelle
- Intègre un parseur intelligent capable de relocaliser automatiquement les éléments lorsque la structure d’un site web change
- Intègre un module Fetcher capable de contourner nativement les principaux systèmes de sécurité comme Cloudflare Turnstile
- Prend en charge les fonctionnalités de crawling à grande échelle via le framework Spider : concurrence, gestion des sessions, pause/reprise, rotation de proxy, etc.
- API similaire à Scrapy : utilisation de
start_urls, de callbacksparseasynchrones et d’objetsRequest/Response - Crawling concurrent et isolation des sessions : possibilité d’exécuter plusieurs sessions de navigateur en parallèle
- Fonction de pause et reprise basée sur des checkpoints : stable même pour les crawls de longue durée
- Mode de streaming en temps réel : permet de traiter immédiatement les données collectées ou de les refléter dans une interface
- Détecte automatiquement les requêtes bloquées et permet de les retenter avec une logique personnalisée
- Possibilité d’exporter les résultats vers son propre pipeline via des hooks (JSON/JSONL)
- API similaire à Scrapy : utilisation de
- Fetching avancé de sites web avec prise en charge des sessions
- La classe Fetcher prend en charge des fonctionnalités de requête avancées comme HTTP/3, l’usurpation d’empreinte TLS et le camouflage des en-têtes
- DynamicFetcher permet une automatisation de navigateur basée sur Playwright/Chrome
- StealthyFetcher contourne automatiquement les défenses anti-bot comme Cloudflare Turnstile
- ProxyRotator permet de changer de proxy à chaque requête et de contrôler le blocage par domaine
- Tous les Fetcher fonctionnent de manière asynchrone (async), avec des classes de session fournies (
FetcherSession,DynamicSession, etc.)
- Le scraping adaptatif (Adaptive Scraping) permet de relocaliser automatiquement les éléments même après des modifications du site web
- Algorithme de suivi d’éléments basé sur la similarité : permet une collecte de données robuste face aux changements de structure
- Prise en charge des sélecteurs CSS/XPath/texte/basés sur des expressions régulières
- Serveur MCP intégré pour l’intégration avec l’IA : extraction de données assistée par IA en lien avec Claude, Cursor, etc.
- Avant l’appel à l’IA, Scrapling sélectionne le contenu cible pour réduire l’usage de tokens et améliorer la vitesse
- Architecture haute performance
- Offre une vitesse de traitement supérieure à celle de la plupart des bibliothèques de scraping Python
- Exécution allégée grâce à une structure économe en mémoire et au lazy loading
- Vitesse de sérialisation JSON 10 fois plus rapide, 92 % de couverture de tests et prise en charge complète des indications de types statiques
- Déjà éprouvé en production par plusieurs communautés de web scraping
- Offre une expérience pensée pour les développeurs et les web scrapers
- Shell interactif de web scraping intégré : exploration en temps réel basée sur IPython et prise en charge de la transformation des requêtes
- Les commandes CLI permettent de scraper des URL et d’extraire des fichiers sans écrire de code
- L’API d’exploration du DOM permet de naviguer entre parents/frères-enfants et propose aussi une recherche d’éléments similaires
- Générateur automatique de sélecteurs pour créer automatiquement des sélecteurs CSS/XPath robustes
- API similaire à Scrapy/BeautifulSoup : expérience de développement familière pour les utilisateurs existants
- Déploiement facilité grâce à l’analyse statique basée sur PyRight/MyPy et à la construction automatique d’images Docker
- Benchmarks de performance
- Le parseur de Scrapling est légèrement plus rapide que Parsel/Scrapy,
et enregistre une vitesse de traitement jusqu’à plus de 700 fois supérieure à BeautifulSoup4 (bs4) - Les performances de recherche par similarité d’éléments sont également plus de 5 fois supérieures à celles d’AutoScraper
- Le parseur de Scrapling est légèrement plus rapide que Parsel/Scrapy,
- Installation via
pip install scrapling
ou environnement d’exécution complet avec navigateur inclus grâce à l’image Docker :docker pull pyd4vinci/scrapling - Licence BSD-3-Clause
3 commentaires
Est-ce qu’il n’y a vraiment aucun problème sur le plan légal ??? J’ai déjà vu passer des explications disant qu’il n’y avait pas de souci à récupérer des informations en ligne…
Mais je me demande s’il n’y a pas de risque si on contourne les blocages mis en place par un site pour empêcher le crawling afin de lire ces données.
Est-ce que c’est seulement le contenu consultable après connexion qui est risqué ?
Intéressant. Jusqu'ici, je cherchais toujours et je les ajoutais manuellement, mais c'est la première fois que je vois une bibliothèque comme celle-ci. Ça a l'air pratique.
Je me demande cependant comment ils comptent contourner Cloudflare. Il faudrait sans doute jeter un œil au code pour comprendre.