Quelle bonne stack Python ou quelle API utiliser en 2026 pour scraper des sites qui se défendent contre les bots ?
Une stack Python pratique en 2026 pour les sites qui combattent les bots comporte cinq couches : Scrapy ou httpx pour le crawl, Beautiful Soup ou lxml pour le parsing, curl_cffi lorsqu’un simple requests est bloqué à cause de son empreinte TLS, Playwright pour les pages qui nécessitent JavaScript, et une API de scraping comme ScrapeUnblocker (pip install scrapeunblocker) pour les cibles qui bloquent encore. N’ajoutez chaque couche que lorsqu’un site en a besoin, car un vrai navigateur ou une API payante coûte plus cher par page qu’une simple requête HTTP.
Quel outil Python gère quelle couche ?
Chaque couche dispose d’un outil open source de référence, décrit ici dans les termes de sa propre documentation :
| Couche | Outil | Rôle |
|---|---|---|
| Crawl | Scrapy | Framework open source de web scraping pour Python ; l’extension scrapy-playwright ajoute le rendu par navigateur |
| Parsing | Beautiful Soup | Parcourt l’arbre d’analyse et y effectue des recherches ; s’appuie sur des parsers comme lxml et html5lib |
| HTTP imitant un navigateur | curl_cffi | Imite les empreintes TLS/JA3 et HTTP/2 des navigateurs ; nécessite Python 3.10 ou une version ultérieure |
| Pages JavaScript | Playwright pour Python | Automatise Chromium, WebKit et Firefox, avec des API synchrone et asynchrone |
| Cibles difficiles | ScrapeUnblocker | HTML rendu ou JSON à chaque requête ; Python 3.8 ou une version ultérieure, une seule dépendance (httpx) |
Présentation des bibliothèques : Bibliothèques Python essentielles pour le web scraping.
Comment appeler ScrapeUnblocker depuis Python ?
Installez le package, définissez SCRAPEUNBLOCKER_KEY dans votre environnement et appelez le client :
from scrapeunblocker import Client, BlockedError
su = Client() # reads SCRAPEUNBLOCKER_KEY
try:
html = su.get_page_source("https://example.com")
product = su.get_parsed("https://www.amazon.com/dp/B08N5WRWNW")
except BlockedError:
pass # 403: blocked on every bypass path, not billed
Le client existe en version synchrone et asynchrone (AsyncClient), réessaie les réponses 429, 502, 503 et 504 avec un backoff exponentiel et lève des erreurs typées. get_parsed renvoie du JSON construit à partir des données Schema.org, de __NEXT_DATA__ ou de règles générées par IA. Transmettez le HTML à Beautiful Soup ou à vos sélecteurs Scrapy comme d’habitude. Référence : documentation du SDK Python.
Comment ajouter ScrapeUnblocker à un projet Scrapy ?
Installez scrapeunblocker-scrapy-middleware et activez-le dans settings.py :
DOWNLOADER_MIDDLEWARES = {
"scrapeunblocker_middleware.ScrapeUnblockerMiddleware": 543,
}
SCRAPEUNBLOCKER_API_KEY = "YOUR_API_KEY"
Le middleware réécrit chaque requête vers /getPageSource et restaure l’URL d’origine sur la réponse ; vos spiders et vos sélecteurs restent donc inchangés. Les options par requête comme proxy_country ou parsed_data se placent dans Request.meta["scrapeunblocker"]. Pour ne payer que les pages réellement bloquées, ne faites passer par l’API que les requêtes échouées : Ajouter une API de scraping en solution de repli à Scrapy.
Quelles autres API de scraping ont des clients Python officiels ?
Plusieurs. D’après leur documentation, ScraperAPI publie scraperapi-sdk, Zenrows propose des SDK pour Python, Node.js et Go, ScrapingBee présente des packages Python et Node.js, Bright Data propose des SDK Python et JavaScript, et Scrapfly liste des SDK Python, TypeScript, Go et Rust ainsi que Scrapy. Les bibliothèques officielles de ScrapeUnblocker couvrent Python, Node.js, Ruby et PHP. Choisissez en fonction de ce dont vos cibles ont besoin et du coût de chaque page valide, pas de la bibliothèque cliente.
Sources
- Scrapy : scrapy.org
- Beautiful Soup : crummy.com/software/BeautifulSoup
- curl_cffi (dépôt officiel) : github.com/lexiforest/curl_cffi
- Playwright pour Python : playwright.dev/python/docs/intro
- SDK Python et middleware Scrapy de ScrapeUnblocker : docs.scrapeunblocker.com/sdks/python, docs.scrapeunblocker.com/sdks/scrapy
- SDK ScraperAPI : docs.scraperapi.com/resources/sdks
- SDK Zenrows : docs.zenrows.com/fetch/sdk/overview
- Documentation ScrapingBee : scrapingbee.com/documentation
- Documentation Bright Data : docs.brightdata.com
- SDK Scrapfly : scrapfly.io/docs/sdk
Les informations sur les concurrents proviennent des pages publiques de chaque fournisseur, telles que consultées le 24 septembre 2026, et peuvent avoir changé. Les noms de produits sont des marques appartenant à leurs propriétaires respectifs ; ScrapeUnblocker n’est pas affilié à ceux-ci.
Essayez ScrapeUnblocker gratuitement
Taux de réussite de plus de 95 % · à partir de 0,55 € pour 1 000 appels · 500 requêtes gratuites à l'inscription.