D4Vinci/Scrapling
D4Vinci/Scrapling has 98,904 GitHub stars and 10,362 forks. GitHot measured +739 stars in 24 hours, +8,089 in 7 days, and +9,583 in 15 days. Last checked 2026-11-07 03:57 UTC. Last push 2026-11-01.
Comment ces chiffres sont mesurés
đ·ïž Le meilleur framework de scraping web, capable de tout gĂ©rer, dâune simple requĂȘte Ă un crawl Ă grande Ă©chelle ! Rejoignez la communautĂ© : https://discord.gg/EMgGbDceNQ et suivez-nous pour dĂ©couvrir des conseils et astuces chaque jour : https://x.com/Scrapling_dev
What you can do
- Fetch & interact: Fast HTTP requests, stealth browsers, JavaScript rendering, Cloudflare Turnstile/Interstitial handling, persistent sessions, and background API capture.
- Parse & extract: CSS, XPath, text and regex search, adaptive element tracking, similar-element matching, and clean Markdown output.
- Crawl & export: Concurrent spiders, proxy rotation, retries, AutoThrottle, pause/resume, streaming, ready-made templates, and JSON/JSONL/CSV/XML exports.
- Scrape with AI or from your terminal: An MCP server for AI agents to browse and extract data, an Agent Skill, CLI commands, and an interactive shell.
Progression mesurée des étoiles
- in 24h
- +739
- in 7 days
- +8âŻ089
- in 15 days
- +9âŻ583
- in 1 month
- Historique en cours
Variations nettes sur des pĂ©riodes qui se chevauchent, pas des totaux quotidiens. Les mesures absentes restent vides. Les Ă©toiles indiquent lâintĂ©rĂȘt, pas la qualitĂ©.
docs/README_FR.md
Original
Extrayez simplement les données du web moderne
Méthodes de sélection · Fetchers · Spiders · Rotation des proxies · CLI · MCP
Scrapling est un framework de web scraping pour Python. Il rĂ©unit des requĂȘtes HTTP rapides, des navigateurs furtifs, lâanalyse de pages et lâexploration simultanĂ©e de sites dans une seule bibliothĂšque.
Extrayez les donnĂ©es de pages statiques, exĂ©cutez JavaScript, interagissez avec les sites et accĂ©dez aux API quâils utilisent. CrĂ©ez des crawlers avec des sessions rĂ©utilisables, la rotation des proxies, de nouvelles tentatives automatiques, la pause et la reprise, et des exports intĂ©grĂ©s.
Utilisez Scrapling depuis Python, le terminal ou votre agent IA grĂące au serveur MCP et Ă lâAgent Skill. Il couvre tout le processus, de lâextraction de quelques champs Ă lâenregistrement dâun site entier en fichiers Markdown propres.
Ce que vous pouvez faire avec Scrapling
- RĂ©cupĂ©rer des pages et interagir : RequĂȘtes HTTP rapides, navigateurs furtifs, exĂ©cution de JavaScript, gestion de Cloudflare Turnstile et Interstitial, sessions persistantes et capture des rĂ©ponses des API en arriĂšre-plan.
- Analyser et extraire : Recherche par CSS, XPath, texte et expressions rĂ©guliĂšres, suivi des Ă©lĂ©ments aprĂšs un changement de page, recherche dâĂ©lĂ©ments similaires et sortie en Markdown propre.
- Explorer et exporter : Spiders simultanĂ©s, rotation des proxies, nouvelles tentatives, AutoThrottle, pause et reprise, rĂ©sultats en streaming, modĂšles prĂȘts Ă lâemploi et exports en JSON, JSONL, CSV et XML.
- Extraire avec lâIA ou depuis le terminal : Un serveur MCP pour que les agents IA naviguent et extraient des donnĂ©es, une Agent Skill, des commandes CLI et un shell interactif.
Commencez par une seule page :
from scrapling.fetchers import Fetcher
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()
print(quotes)
Ou extrayez plus de données avec un spider :
from scrapling.spiders import Spider, Response
class QuotesSpider(Spider):
name = "quotes"
start_urls = ["https://quotes.toscrape.com/"]
async def parse(self, response: Response):
for quote in response.css('.quote'):
yield {
"text": quote.css('.text::text').get(),
"author": quote.css('.author::text').get(),
}
result = QuotesSpider().start()
print(len(result.items))
result.items.to_json("quotes.json")
Cet exemple affiche 10 et enregistre les citations et leurs auteurs dans quotes.json.
Sponsors Platine
|
NodeMaven - le fournisseur de proxys le plus efficace pour le Web Scraping et l'automatisation, avec la meilleure qualitĂ© d'IP du marchĂ©. Utilisez le code SCRAPLING35 pour obtenir 35âŻ% de rĂ©duction. |
|
Scrapling gÚre Cloudflare Turnstile. Pour une protection de niveau entreprise, Hyper Solutions fournit des endpoints API qui génÚrent des tokens antibot valides pour Akamai, DataDome, Kasada et Incapsula. De simples appels API, sans automatisation de navigateur. |
|
Evomi
: proxies rĂ©sidentiels Ă partir de 0,49 $/Go. Navigateur de scraping avec Chromium dont lâempreinte est entiĂšrement modifiĂ©e, IPs rĂ©sidentielles, rĂ©solution automatique de CAPTCHA et contournement anti-bot. API Scraper pour des rĂ©sultats sans tracas. IntĂ©grations MCP et N8N disponibles. |
|
Lisez une critique complÚte de Scrapling sur The Web Scraping Club (nov. 2025), la newsletter n°1 dédiée au Web Scraping. |
|
Swiftproxy propose des proxys résidentiels évolutifs avec plus de 80 millions d'IPs dans plus de 195 pays, offrant des connexions rapides et fiables, une rotation automatique et des fonctions pour éviter les blocages. Essai gratuit disponible. |
|
Byteful fournit des proxys rĂ©sidentiels, mobiles, ISP et de centres de donnĂ©es issus de sources Ă©thiques, ainsi que des outils de scraping et dâautomatisation par IA. Utilisez le code SCRAPLING10 pour obtenir 10âŻ% de rĂ©duction sur les proxys rĂ©sidentiels. |
|
ProxyLane : 90âŻ% de CAPTCHAs en moins lors de vos exĂ©cutions de Scrapling. 28 millions dâappareils P2P rĂ©els chez des particuliers, 98,7âŻ% dâIP propres, 195 pays. Ciblage par ville/ISP/code postal, sessions Ă IP fixe ou rotative, trafic sans expiration. Essayez 350 MB pour $1.95. Code SCRAPEANDTAKE : 25âŻ% de rĂ©duction. |
|
LundProxy : Ne payez plus par GB. Trafic rĂ©sidentiel illimitĂ©, plus de 100 millions dâIP, plus de 190 pays. Payez selon la bande passante. Demandez un essai gratuit de proxies rĂ©sidentiels Ă 50 Mbps. |
|
Resolvr : Le scraping Ă grande Ă©chelle implique de nombreux CAPTCHAs. Resolvr rĂ©sout les dĂ©fis reCAPTCHA et Cloudflare sur de vrais appareils via une seule API. LâaccĂšs gratuit Ă la version bĂȘta est disponible dĂšs maintenant. |
|
Des dĂ©fis hCaptcha lors de vos exĂ©cutions de Scrapling ? NoneCap renvoie des jetons hCaptcha valides via une seule API, y compris pour les clĂ©s de site Enterprise. 1âŻ300 crĂ©dits gratuits Ă lâinscription. |
|
$1/GB chez DataImpulse. Proxies de premiĂšre main issus de sources Ă©thiques. Plus de 90 millions dâIP, plus de 195 pays. RĂ©sidentiels, de datacenter et mobiles. Paiement Ă lâusage = sans abonnement. Le trafic nâexpire jamais. |
Vous souhaitez afficher votre publicité ici ? Cliquez ici
Sponsors
Vous souhaitez afficher votre publicité ici ? Cliquez ici et choisissez le niveau qui vous convient !
Fonctions principales
Spiders : un framework complet dâexploration de sites
- đ·ïž API de Spider proche de Scrapy : DĂ©finissez des spiders avec
start_urls, des callbacksparseasynchrones et des objetsRequestetResponse. - ⥠Exploration simultanĂ©e : RĂ©glez le nombre de requĂȘtes simultanĂ©es, les limites par domaine et le dĂ©lai entre les tĂ©lĂ©chargements.
- đ Plusieurs sessions : Utilisez des requĂȘtes HTTP et des navigateurs furtifs sans interface graphique dans le mĂȘme spider. Dirigez les requĂȘtes vers diffĂ©rentes sessions grĂące Ă leur ID.
- đŸ Pause et reprise : Enregistrez les requĂȘtes en attente et les URL visitĂ©es avec
crawldir. Appuyez sur Ctrl+C pour arrĂȘter proprement, puis relancez avec le mĂȘme dossier. - đĄ RĂ©sultats en streaming : Recevez les Ă©lĂ©ments dĂšs leur extraction avec
async for item in spider.stream(), avec des statistiques en temps rĂ©el. Utile pour les interfaces, les traitements de donnĂ©es et les explorations longues. - đĄïž DĂ©tection des requĂȘtes bloquĂ©es : DĂ©tectez et relancez les requĂȘtes bloquĂ©es automatiquement. Vous pouvez adapter ce comportement.
- đŠ AutoThrottle : Le spider ajuste le dĂ©lai de chaque domaine selon la vitesse de rĂ©ponse du site. Si le site bloque ou limite les requĂȘtes, il double le dĂ©lai ou respecte la durĂ©e indiquĂ©e par
Retry-After. Il accĂ©lĂšre Ă nouveau quand la limitation prend fin. - đ€ Respect de robots.txt : Activez
robots_txt_obeypour respecter les directivesDisallow,Crawl-delayetRequest-rate, avec un cache par domaine. - đ§Ș Mode dĂ©veloppement : Enregistrez les rĂ©ponses sur disque lors de la premiĂšre exĂ©cution et rĂ©utilisez-les ensuite. Vous pouvez ainsi ajuster
parse()sans envoyer de nouvelles requĂȘtes aux serveurs. - đ§© ModĂšles de spider prĂȘts Ă lâemploi : Utilisez
CrawlSpiderpour suivre les liens selon des rĂšgles,SitemapSpiderpour explorer Ă partir de sitemaps ou de robots.txt,XMLFeedSpideretCSVFeedSpiderpour lire des flux XML, RSS et CSV, etShopifySpiderpour collecter les produits des boutiques Shopify publiques, avec un Ă©lĂ©ment par variante. - đ Extraction de liens :
LinkExtractorpermet dâaccepter ou de refuser des liens selon des motifs, de filtrer les domaines et les extensions, de limiter la recherche avec CSS ou XPath et de normaliser les URL. Utilisez-le avec les modĂšles ou seul. - đŠ Export intĂ©grĂ© : Exportez les rĂ©sultats avec des hooks et votre propre traitement de donnĂ©es, ou utilisez les formats JSON, JSONL, CSV et XML intĂ©grĂ©s :
result.items.to_json(),to_jsonl(),to_csv()etto_xml().
Récupération de pages avec des sessions
- RequĂȘtes HTTP : Envoyez des requĂȘtes HTTP rapides et furtives avec
Fetcher. Vous pouvez imiter lâempreinte TLS et les en-tĂȘtes dâun navigateur, et utiliser HTTP/3. - Chargement dynamique : RĂ©cupĂ©rez les sites dynamiques avec une automatisation complĂšte du navigateur grĂące Ă
StealthyFetcher, compatible avec le Chromium de Playwright et Google Chrome. - Contournement des systĂšmes antibot :
StealthyFetchermasque lâautomatisation et imite les empreintes du navigateur. Il peut franchir automatiquement les diffĂ©rents types de Cloudflare Turnstile et Interstitial. - Gestion des sessions :
FetcherSessionetStealthySessionconservent les cookies et lâĂ©tat entre les requĂȘtes. - Rotation des proxies :
ProxyRotatorpermet une rotation cyclique ou personnalisĂ©e dans tous les types de sessions. Vous pouvez aussi choisir un proxy pour une requĂȘte prĂ©cise. - Blocage des domaines et des publicitĂ©s : Bloquez les requĂȘtes vers certains domaines et leurs sous-domaines, ou activez le blocage des publicitĂ©s des fetchers de navigateur. Il couvre environ 3âŻ500 domaines connus de publicitĂ© et de suivi.
- PrĂ©vention des fuites DNS : Activez DNS-over-HTTPS pour envoyer les requĂȘtes DNS par le service DoH de Cloudflare et Ă©viter les fuites lorsque vous utilisez des proxies.
- Navigateurs distants : Connectez-vous par CDP à un navigateur déjà ouvert avec
cdp_url, sur votre ordinateur, un autre serveur ou un service de navigateurs. Vous pouvez aussi utiliser votre propre version de Chromium avec tout fetcher de navigateur grĂące Ăexecutable_path. - Capture des API en arriĂšre-plan : Activez
record_requests=Truedans une session de navigateur et cherchez les rĂ©ponses enregistrĂ©es avecsession.network.search(limit=None). Lisez les donnĂ©es des API et les erreurs HTTP de plusieurs chargements sans rĂ©pĂ©ter les requĂȘtes. Lâhistorique a une taille limitĂ©e et conserve le contenu des rĂ©ponses textuelles. - Mode asynchrone : Tous les fetchers peuvent fonctionner en mode asynchrone, avec des classes de session propres Ă ce mode.
Analyse de pages et extraction de données
- đ Suivi des Ă©lĂ©ments : Retrouvez les Ă©lĂ©ments aprĂšs un changement du site grĂące Ă des algorithmes de similaritĂ©.
- đŻ SĂ©lection souple : Utilisez CSS, XPath, les filtres, le texte, les expressions rĂ©guliĂšres et plus encore.
- đ ĂlĂ©ments similaires : Trouvez automatiquement des Ă©lĂ©ments proches de ceux que vous avez dĂ©jĂ trouvĂ©s.
Fonctions pour lâIA
- đ€ Serveur MCP : Permet aux assistants et agents IA, comme Claude et Cursor, dâextraire des donnĂ©es avec Scrapling par des requĂȘtes HTTP, des actions du navigateur, des captures dâĂ©cran, un Ă©tat de connexion enregistrĂ© et des rĂ©ponses dâAPI en arriĂšre-plan. Il utilise notre navigateur furtif et des outils qui aident les modĂšles adaptĂ©s Ă rĂ©soudre les CAPTCHA, en plus du solveur Cloudflare. Il rĂ©duit le contenu envoyĂ© au modĂšle, bloque les publicitĂ©s et protĂšge contre les injections de prompts. Il permet aussi dâutiliser des navigateurs distants par CDP et des connexions HTTP avec des options dâauthentification. (VidĂ©o de dĂ©monstration)
- đ§ Agent Skill : Une Agent Skill prĂȘte Ă installer qui enseigne la bibliothĂšque aux agents de programmation pour quâils Ă©crivent du code conforme Ă lâAPI actuelle.
- đ Markdown prĂȘt pour le RAG : Convertissez une page en Markdown propre et adaptĂ© aux modĂšles de langage avec une ligne (
page.markdown()), ou enregistrez un site entier en fichiers Markdown avec le modĂšleContentSpider. Le processus ne demande aucun modĂšle de langage. (Documentation)
Performances et usage réel
- đ Grande vitesse : Des performances optimisĂ©es qui dĂ©passent la plupart des bibliothĂšques de web scraping pour Python.
- đ Faible usage de la mĂ©moire : Des structures de donnĂ©es optimisĂ©es et un chargement Ă la demande.
- ⥠Conversion rapide en JSON : 10 fois plus rapide que la bibliothÚque standard.
- đïž TestĂ© en pratique : Les tests couvrent 92âŻ% de Scrapling et tout le code a des annotations de type. Des centaines de personnes lâont utilisĂ© chaque jour pour extraire des donnĂ©es pendant lâannĂ©e passĂ©e.
Outils pour développer et extraire des données
- đŻ Shell interactif : Un shell IPython en option, intĂ©grĂ© Ă Scrapling, avec des raccourcis et des outils pour crĂ©er des scripts plus vite. Convertissez les requĂȘtes curl en requĂȘtes Scrapling et consultez les rĂ©sultats dans votre navigateur.
- đ Usage depuis le terminal : Extrayez les donnĂ©es dâune URL sans Ă©crire de code.
- đ ïž Navigation dans le DOM : AccĂ©dez aux Ă©lĂ©ments parents, frĂšres et enfants.
- 𧏠Traitement du texte : Expressions réguliÚres, nettoyage du texte et opérations optimisées sur les chaßnes.
- đ CrĂ©ation de sĂ©lecteurs : GĂ©nĂ©rez des sĂ©lecteurs CSS et XPath fiables pour tout Ă©lĂ©ment.
- đ API familiĂšre : Proche de Scrapy et BeautifulSoup, avec les mĂȘmes pseudo-Ă©lĂ©ments que Scrapy et Parsel.
- đ€ IntĂ©gration directe avec Scrapy : Ajoutez le dĂ©corateur
scrapling_responseĂ un callback pour analyser les rĂ©ponses que vous rĂ©cupĂ©rez dĂ©jĂ avec le parser de Scrapling, sans réécrire votre programme. - đ Annotations de type complĂštes : Elles aident lâĂ©diteur Ă vĂ©rifier et Ă complĂ©ter le code. Tout le code est vĂ©rifiĂ© automatiquement par PyRight et MyPy Ă chaque changement.
- đ Image Docker prĂȘte Ă lâemploi : Une image Docker avec tous les navigateurs est créée et publiĂ©e automatiquement Ă chaque version.
Pour commencer
Voici quelques exemples de ce que vous pouvez faire avec Scrapling.
Utilisation de base
RequĂȘtes HTTP avec des sessions
from scrapling.fetchers import Fetcher, FetcherSession
with FetcherSession(impersonate='chrome') as session: # Utiliser la derniĂšre version de l'empreinte TLS de Chrome
page = session.get('https://quotes.toscrape.com/', stealthy_headers=True)
quotes = page.css('.quote .text::text').getall()
# Ou utiliser des requĂȘtes ponctuelles
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()
Mode furtif avancé
from scrapling.fetchers import StealthyFetcher, StealthySession
with StealthySession(headless=True, solve_cloudflare=True) as session: # Garder le navigateur ouvert jusqu'à ce que vous ayez terminé
page = session.fetch('https://nopecha.com/demo/cloudflare', google_search=False)
data = page.css('#padded_content a').getall()
# Ou utiliser le style requĂȘte ponctuelle : ouvre le navigateur pour cette requĂȘte, puis le ferme aprĂšs
page = StealthyFetcher.fetch('https://nopecha.com/demo/cloudflare', solve_cloudflare=True)
data = page.css('#padded_content a').getall()
Automatisation complĂšte du navigateur
from scrapling.fetchers import StealthyFetcher, StealthySession
with StealthySession(headless=True, disable_resources=False, network_idle=True) as session: # Garder le navigateur ouvert jusqu'à ce que vous ayez terminé
page = session.fetch('https://quotes.toscrape.com/', load_dom=False)
data = page.xpath('//span[@class="text"]/text()').getall() # Sélecteur XPath si vous le préférez
# Ou utiliser le style requĂȘte ponctuelle : ouvre le navigateur pour cette requĂȘte, puis le ferme aprĂšs
page = StealthyFetcher.fetch('https://quotes.toscrape.com/')
data = page.css('.quote .text::text').getall()
Spiders
CrĂ©ez des crawlers complets avec des requĂȘtes simultanĂ©es, plusieurs types de sessions, la pause et la reprise :
from scrapling.spiders import Spider, Response
class QuotesSpider(Spider):
name = "quotes"
start_urls = ["https://quotes.toscrape.com/"]
concurrent_requests = 10
async def parse(self, response: Response):
for quote in response.css('.quote'):
yield {
"text": quote.css('.text::text').get(),
"author": quote.css('.author::text').get(),
}
next_page = response.css('.next a')
if next_page:
yield response.follow(next_page[0].attrib['href'])
result = QuotesSpider().start()
print(f"{len(result.items)} citations scrapées")
result.items.to_json("quotes.json")
Utilisez plusieurs types de sessions dans un seul spider :
from scrapling.spiders import Spider, Request, Response
from scrapling.fetchers import FetcherSession, AsyncStealthySession
class MultiSessionSpider(Spider):
name = "multi"
start_urls = ["https://example.com/"]
def configure_sessions(self, manager):
manager.add("fast", FetcherSession(impersonate="chrome"))
manager.add("stealth", AsyncStealthySession(headless=True), lazy=True)
async def parse(self, response: Response):
for link in response.css('a::attr(href)').getall():
# Router les pages protégées via la session furtive
if "protected" in link:
yield Request(link, sid="stealth")
else:
yield Request(link, sid="fast", callback=self.parse) # Callback explicite
Enregistrez la progression pour mettre en pause et reprendre les explorations longues. Lancez le spider ainsi :
QuotesSpider(crawldir="./crawl_data").start()
Avec crawldir, Ctrl+C enregistre les requĂȘtes en attente et les URL visitĂ©es. Relancez avec le mĂȘme crawldir pour reprendre. Enregistrez les donnĂ©es extraites sĂ©parĂ©ment.
Vous pouvez aussi utiliser un modĂšle prĂȘt Ă lâemploi. Par exemple, rĂ©cupĂ©rez tout le catalogue dâune boutique Shopify :
from scrapling.spiders import ShopifySpider
class MyStore(ShopifySpider):
target_website = "example.com"
result = MyStore().start() # Tous les produits de la boutique, un élément par variante
Le modÚle lit les produits disponibles sur les endpoints publics des collections, avec un élément par variante.
Analyse avancée et navigation
from scrapling.fetchers import Fetcher
# Sélection riche d'éléments et navigation
page = Fetcher.get('https://quotes.toscrape.com/')
# Obtenir des citations avec plusieurs méthodes de sélection
quotes = page.css('.quote') # Sélecteur CSS
quotes = page.xpath('//div[@class="quote"]') # XPath
quotes = page.find_all('div', {'class': 'quote'}) # Style BeautifulSoup
# Identique Ă
quotes = page.find_all('div', class_='quote')
quotes = page.find_all(['div'], class_='quote')
quotes = page.find_all(class_='quote') # et ainsi de suite...
# Trouver un élément par contenu textuel
quotes = page.find_by_text('Albert Einstein', first_match=False)
# Navigation avancée
quote_text = page.css('.quote')[0].css('.text::text').get()
quote_texts = page.css('.quote').css('.text::text').getall() # Sélecteurs chaßnés
first_quote = page.css('.quote')[0]
author = first_quote.css('.author::text').get()
next_quote = first_quote.next
parent_container = first_quote.parent
# Relations et similarité entre éléments
similar_elements = first_quote.find_similar()
below_elements = first_quote.below_elements
Vous pouvez utiliser le parser directement, sans récupérer de page web :
from scrapling.parser import Selector
page = Selector("<html>...</html>")
Il fonctionne de la mĂȘme façon.
Exemples de sessions asynchrones
import asyncio
from scrapling.fetchers import FetcherSession, AsyncStealthySession
async def main():
async with FetcherSession(http3=True) as http_session: # `FetcherSession` s'adapte au contexte et fonctionne en mode sync comme async
page1 = await http_session.get('https://quotes.toscrape.com/')
page2 = await http_session.get('https://quotes.toscrape.com/page/2/', impersonate='chrome')
print(len(page1.css('.quote')), len(page2.css('.quote')))
async with AsyncStealthySession(max_pages=2) as browser_session:
urls = ['https://quotes.toscrape.com/js/', 'https://quotes.toscrape.com/js/page/2/']
pages = await asyncio.gather(*(browser_session.fetch(url, wait_selector='.quote') for url in urls))
print([len(page.css('.quote')) for page in pages])
asyncio.run(main())
CLI et shell interactif
Vous pouvez aussi utiliser Scrapling depuis le terminal :
Lancez le shell interactif de web scraping :
pip install "scrapling[shell]"
scrapling shell
Extrayez des pages directement dans un fichier sans programmation. Utilisez --css-selector pour choisir le contenu ou --ai-targeted pour sélectionner et nettoyer le contenu de body. Utilisez .txt pour du texte, .md pour du Markdown ou .html pour du HTML.
scrapling extract get 'https://quotes.toscrape.com/' quotes.md
scrapling extract get 'https://quotes.toscrape.com/' quotes.txt --css-selector '.quote' --impersonate 'chrome'
scrapling extract fetch 'https://quotes.toscrape.com/js/' quotes.md --css-selector '.quote' --wait-selector '.quote' --no-headless
scrapling extract fetch 'https://nopecha.com/demo/cloudflare' captchas.html --css-selector '#padded_content a' --solve-cloudflare
[!NOTE] Consultez les autres fonctions, dont le serveur MCP et le shell interactif, dans la documentation complĂšte.
Tests de performance
Scrapling se distingue aussi par sa vitesse. Ces tests comparent son parser aux derniĂšres versions dâautres bibliothĂšques connues.
Vitesse dâextraction du texte (5âŻ000 Ă©lĂ©ments imbriquĂ©s)
| # | BibliothĂšque | Temps (ms) | Par rapport Ă Scrapling |
|---|---|---|---|
| 1 | Scrapling | 1,99 | 1,0x |
| 2 | Parsel/Scrapy | 2,06 | 1,035 |
| 3 | Lxml seul | 2,56 | 1,286 |
| 4 | PyQuery | 23,98 | ~12x |
| 5 | Selectolax | 197,02 | ~99x |
| 6 | MechanicalSoup | 1545,15 | ~776,5x |
| 7 | BS4 avec Lxml | 1562,1 | ~785,0x |
| 8 | BS4 avec html5lib | 3412,73 | ~1714,9x |
Recherche dâĂ©lĂ©ments similaires et de texte
La recherche adaptative dâĂ©lĂ©ments de Scrapling est plus rapide que les autres solutions :
| BibliothĂšque | Temps (ms) | Par rapport Ă Scrapling |
|---|---|---|
| Scrapling | 2,3 | 1,0x |
| AutoScraper | 12,58 | 5,47x |
Chaque rĂ©sultat est la moyenne dâau moins 100 exĂ©cutions. Consultez benchmarks.py pour connaĂźtre la mĂ©thode.
Installation
Scrapling demande Python 3.10 ou une version plus récente :
pip install scrapling
[!IMPORTANT] Cette commande installe seulement le parser et ses dépendances, sans fetchers ni outils en ligne de commande. Avec cette seule installation, importer depuis
scrapling.fetchersouscrapling.spiders, comme dans les exemples prĂ©cĂ©dents, provoqueModuleNotFoundError. Pour utiliser les fetchers ou les spiders, installez dâabord les dĂ©pendances des fetchers comme indiquĂ© ci-dessous.
Dépendances facultatives
Pour utiliser les fetchers, leurs classes ou les fonctions supplémentaires suivantes, installez les dépendances des fetchers et des navigateurs :
pip install "scrapling[fetchers]" scrapling install # installation normale scrapling install --force # réinstallation forcéeCette commande télécharge tous les navigateurs, leurs dépendances systÚme et les outils de modification des empreintes du navigateur.
Vous pouvez aussi les installer depuis Python, au lieu de lancer une commande :
from scrapling.cli import install install([], standalone_mode=False) # installation normale install(["--force"], standalone_mode=False) # réinstallation forcéeFonctions supplémentaires :
- Installer le serveur MCP :
pip install "scrapling[ai]" - Installer les dépendances pour créer des systÚmes RAG :
pip install "scrapling[rag]" - Installer le shell interactif et la commande
extract:pip install "scrapling[shell]" - Tout installer :
Lancezpip install "scrapling[all]"scrapling installpour utiliser les fetchers de navigateur. Les requĂȘtes HTTP ne demandent pas de navigateur.
- Installer le serveur MCP :
Docker
Vous pouvez aussi télécharger depuis DockerHub une image Docker avec tous les extras et navigateurs :
docker pull pyd4vinci/scrapling
Ou la télécharger depuis le registre GitHub :
docker pull ghcr.io/d4vinci/scrapling:latest
Lâimage est créée Ă partir de la branche principale du dĂ©pĂŽt et publiĂ©e automatiquement par GitHub Actions.
Contribuer
Les contributions sont les bienvenuesâŻ! Lisez nos consignes de contribution avant de commencer.
Avertissement
[!CAUTION] Cette bibliothĂšque est destinĂ©e Ă lâenseignement et Ă la recherche. En lâutilisant, vous acceptez de respecter les lois locales et internationales sur lâextraction de donnĂ©es et la vie privĂ©e. Les auteurs et contributeurs ne sont pas responsables dâun usage abusif de ce logiciel. Respectez les conditions dâutilisation des sites et les fichiers robots.txt.
đ Citations
Si vous avez utilisé cette bibliothÚque dans vos recherches, citez-la avec cette référence :
@misc{scrapling,
author = {Karim Shoair},
title = {Scrapling},
year = {2024},
url = {https://github.com/D4Vinci/Scrapling},
note = {A Python Web Scraping framework for everything from a single request to a full-scale crawl!}
}
Licence
Ce projet utilise la licence BSD-3-Clause.
Remerciements
Ce projet inclut du code adapté de :
- Parsel (Licence BSD) - Utilisé pour le sous-module translator
Explorer des projets similaires
n8n-io/n8n
Plateforme Fair-code dâautomatisation des flux de travail, avec des capacitĂ©s dâIA natives. Elle associe la conception visuelle au code personnalisĂ©, peut ĂȘtre hĂ©bergĂ©e sur vos propres serveurs ou utilisĂ©e dans le cloud, et propose plus de 400 intĂ©grations.
209,723 étoileslanggenius/dify
CrĂ©er des workflows agentiques et des pipelines RAG, avec une prise en charge riche des modĂšles et outils dâIA, dans un seul espace de travail collaboratif. DĂ©ployer dans le cloud, sur un VPC ou en auto-hĂ©bergement, afin que les Ă©quipes passent du prototype Ă la production sans reconstruire la pile.
160,568 étoilesmicrosoft/PowerToys
Microsoft PowerToys est un ensemble dâutilitaires qui amĂ©liorent la productivitĂ© et la personnalisation sous Windows
140,628 étoilesstablyai/orca
Orca est l'endroit pour travailler avec une flotte d'agents (p. ex. Grok Bot, Claude Code). Exécutez n'importe quel agent de programmation avec votre propre abonnement. Disponible sur ordinateur, sur mobile et en environnement d'exécution distant.
117,928 étoiles






