Scrapling : scraping adaptatif des requêtes uniques aux crawls complets
Un framework de Web Scraping adaptatif qui gère tout, d'une simple requête à une exploration à grande échelle !
En bref
- De quoi s’agit-il ?
- Un aperçu de D4Vinci/Scrapling basé sur son README, couvrant le parseur adaptatif, les fetchers, les spiders, la CLI et les notes d'installation.
- À qui s’adresse-t-il ?
- Scrapling est un framework de scraping multicouche dont le README met l'accent sur le parsing adaptatif, la récupération furtive et par navigateur, et les exécutions de spiders à grande échelle. Le dépôt fournit des exemples de code, des instructions d'installation et des benchmarks auto-déclarés, mais les affirmations de performance et anti-bot nécessiteraient des tests indépendants du README.
- Puis-je l’utiliser commercialement ?
- Oui. BSD-3-Clause est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 1 jour.
- En quel langage est-il écrit ?
- Principalement Python, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Un framework de scraping adaptatif au large périmètre
Scrapling est un framework Python de scraping web, décrit dans son README comme adaptatif et capable de gérer tout, d'une requête unique à un crawl complet. Le README organise le projet en trois couches principales : des fetchers pour récupérer les pages, un parseur qui peut relocaliser des éléments après des modifications du site, et un framework de spiders pour des crawls concurrents et multi-sessions. Les métadonnées du dépôt indiquent que le langage est Python, la licence BSD-3-Clause, et la page d'accueil le site de documentation de Scrapling. Les métadonnées enregistrent également 72 624 étoiles, 7 221 forks et 10 issues ouvertes, avec la branche par défaut main.
Suivi des éléments et parseur adaptatif
L'affirmation centrale du README est que le parseur apprend des changements de site. Deux indicateurs de code sont présentés : `auto_save=True` enregistre les positions des éléments lors d'un premier scraping, et `adaptive=True` retrouve ensuite ces éléments après une modification de la structure de la page. Le parseur prend en charge les sélecteurs CSS, XPath, la recherche de texte, la recherche par expression régulière et les appels `find_all` de style BeautifulSoup, et inclut des méthodes de navigation pour les éléments parents, frères et enfants. Une classe `Selector` autonome permet d'analyser directement des chaînes HTML. Le README inclut également un tableau de benchmarks pour l'extraction de texte et la similarité d'éléments, mais ces chiffres sont auto-déclarés par le dépôt et ne sont pas vérifiés indépendamment ici. Il mentionne aussi un générateur automatique de sélecteurs qui produit des sélecteurs CSS ou XPath pour n'importe quel élément.
Fetchers, sessions et contrôle du navigateur
La couche de fetchers propose des requêtes HTTP simples via `Fetcher`, l'automatisation du navigateur via `DynamicFetcher`, et une récupération orientée furtivité via `StealthyFetcher`. Chacun a une variante de session, comme `FetcherSession`, `DynamicSession` et `StealthySession`, pour conserver les cookies et l'état entre les requêtes. Le README affirme que le fetcher furtif peut contourner Cloudflare Turnstile et d'autres systèmes anti-bot, et mentionne le DNS-over-HTTPS optionnel, la rotation de proxys et la connexion à des navigateurs distants via CDP. Il décrit également `capture_xhr`, qui collecte les réponses XHR et fetch correspondantes pendant le chargement d'une page. Le README mentionne aussi le blocage de domaines et de publicités, avec une liste intégrée d'environ 3 500 domaines publicitaires et de suivi connus. Ces capacités sont décrites dans le README ; aucun résultat de test indépendant n'est fourni.
Spiders pour des crawls plus importants
Le framework de spiders utilise une API de type Scrapy avec `start_urls`, des callbacks asynchrones `parse`, et des objets `Request` et `Response`. Le README énumère les limites de concurrence, le throttling par domaine, le routage multi-sessions, la pause et la reprise via des points de contrôle, les résultats en streaming et la nouvelle tentative automatique des requêtes bloquées. Les modèles prêts à l'emploi incluent `CrawlSpider`, `SitemapSpider` et `ShopifySpider`, et les résultats peuvent être exportés en JSON, JSONL, CSV ou XML. L'exemple du README définit un `QuotesSpider` qui produit des éléments et suit les liens de pagination. Le README indique également que la base de code a une couverture de tests de 92 % et une couverture complète des annotations de type, et que le mode développement peut mettre en cache les réponses sur disque pour les rejouer. Il ne précise pas de taille maximale de crawl ni ne fournit de données de performance en production.
CLI, shell interactif, serveur MCP et compétence d'agent
Scrapling inclut une interface en ligne de commande. Le README montre `scrapling shell` pour un shell de scraping interactif et `scrapling extract` pour extraire directement le contenu d'une page dans des fichiers depuis le terminal, avec des options pour les sélecteurs CSS, l'usurpation et le mode headless. Le shell est décrit comme optionnel et supportant des conversions telles que la transformation de requêtes curl en requêtes Scrapling. Il existe aussi un serveur MCP intégré pour le scraping assisté par IA, qui, selon le README, peut garder les sessions navigateur ouvertes entre les appels, prendre des captures d'écran et piloter des navigateurs distants via CDP. Un répertoire de compétences d'agent est également inclus pour enseigner aux agents de codage l'API actuelle de la bibliothèque. Le README ne détaille pas la version du protocole du serveur MCP ni ne liste les clients IA pris en charge.
Installation, dépendances, licence et lacunes
L'installation commence avec Python 3.10 ou supérieur et `pip install scrapling`, mais le README prévient que cette installation de base ne comprend que le parseur et ses dépendances. Les fetchers et les spiders nécessitent `scrapling[fetchers]`, suivi de `scrapling install` pour télécharger les navigateurs. Les fonctionnalités supplémentaires sont regroupées dans `scrapling[ai]`, `scrapling[shell]` et `scrapling[all]`. Des images Docker sont disponibles sur Docker Hub et le registre GitHub Container Registry. Le projet est sous licence BSD-3-Clause, avec les droits d'auteur attribués à Karim Shoair. La licence permet la redistribution sous conditions et exclut les garanties, mais ne dit rien sur le support, la maintenance ou les garanties de sécurité. Le README inclut également un avertissement indiquant que la bibliothèque est destinée à des fins éducatives et de recherche et que les utilisateurs doivent se conformer aux lois applicables. Le README renvoie aussi aux directives de contribution.
Choisir le niveau de contrôle du crawl
Scrapling devient intéressant lorsque la collecte passe d’une requête isolée à un crawl avec pagination, cache ou adaptation aux changements de page. La lecture des exemples du dépôt doit précéder le choix de l’API : ils montrent quels sélecteurs, en-têtes et mécanismes de stockage sont réellement prévus. Un essai ciblé sur une URL documentée permet de comparer le HTML reçu, les éléments extraits et les erreurs lorsque la structure varie.
Conclusion éditoriale
Scrapling est un framework de scraping multicouche dont le README met l'accent sur le parsing adaptatif, la récupération furtive et par navigateur, et les exécutions de spiders à grande échelle. Le dépôt fournit des exemples de code, des instructions d'installation et des benchmarks auto-déclarés, mais les affirmations de performance et anti-bot nécessiteraient des tests indépendants du README.
Notes de la communauté