Scrapling : le scraper web qui s'autorépare

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Voici Scrapling, un scraper Python qui tente de résoudre le pire aspect du web scraping.
00:00:05Le scraper fonctionne aujourd'hui, puis casse dès que le site change. Une classe renommée,
00:00:10une balise div déplacée, une vérification anti-bot, et voilà que votre pipeline de données est mort. La promesse de Scrapling est que
00:00:17votre scraper peut s'adapter au lieu de tomber en panne. Il compte plus de 53 000 étoiles sur GitHub,
00:00:22et prend en charge l'analyse adaptative, le fetch furtif et les workflows de crawler plus importants.
00:00:27Je vais tester la seule question qui compte vraiment.
00:00:30Peut-il survivre à un changement de site sans réécrire les sélecteurs ? Nous allons le découvrir.
00:00:40Alors qu'est-ce que Scrapling ? Scrapling est un framework de web scraping Python adaptatif tout-en-un.
00:00:46Vous bénéficiez d'un analyseur auto-cicatrisant, de fetchers furtifs, d'un fetch basé sur navigateur si JavaScript est nécessaire,
00:00:51et d'un framework spider pour les crawls plus importants. Une installation, une API. Cela signifie moins de scrapers
00:00:57en panne et plus de données exploitables récupérées. Voyons maintenant la partie qui compte vraiment.
00:01:03Si vous aimez coder des outils pour accélérer votre workflow, n'oubliez pas de vous abonner. Nous sortons des vidéos
00:01:08tout le temps. Maintenant, j'ai une configuration de base ici, n'est-ce pas ? J'ai déjà installé Scrapling, donc nous irons vite
00:01:13sur cette partie. Un import et un appel suffisent pour obtenir la page. Tout en haut, j'ai créé du HTML qui change.
00:01:21L'un est un site de départ générique. Ensuite, j'ai gardé la même chose, mais j'ai changé les sélecteurs CSS.
00:01:27Disons que je veux le nom et le prix du produit. Normalement, je pourrais les récupérer avec des sélecteurs CSS,
00:01:34n'est-ce pas ? Donc page CSS, je mets mon sélecteur, auto-save, true. Je peux faire ça et ça va
00:01:40fonctionner et nous obtiendrons un dictionnaire de données. Ça a l'air normal. Deux sélecteurs, un dictionnaire,
00:01:46je passe à la suite. C'est tout. Mais en même temps, c'est justement le problème, car un scraper normal fonctionne
00:01:52très bien jusqu'à ce que la page change. Maintenant, que se passe-t-il si le site change aléatoirement du jour au lendemain ? Ils le redessinent.
00:01:58Ils font quelque chose pour empêcher cela. Donc le titre du produit devient en-tête d'article ou le prix devient
00:02:04valeur de prix. Il y a les mêmes données sur la page, mais tout le DOM change. Les anciens sélecteurs devraient
00:02:11être morts. Et c'est là que la plupart des scrapers vont simplement casser. Mais maintenant, nous pouvons activer le mode adaptatif.
00:02:18Un changement, autosave equals true devient adaptive equals true. Donc maintenant, je peux toujours mettre le titre du produit
00:02:26avec adaptive défini sur true. Même donnée. Je n'ai pas changé les sélecteurs. C'est une structure de page différente sans
00:02:34réécriture de sélecteur. C'est l'idée principale ici. Maintenant, quand vous scrapez un élément avec autosave true,
00:02:40Scrapling enregistre des indices à son sujet. Donc il va enregistrer des choses comme la balise, les attributs,
00:02:44les parents et enfants, tout texte voisin, probablement la position dans le DOM et la forme structurelle. Donc quand un
00:02:50nom de classe change, Scrapling a encore d'autres indices. Il n'a pas besoin que tout le site reste identique.
00:02:56Il lui suffit d'un signal structurel suffisant pour reconnaître à nouveau l'élément. Et c'est
00:03:01la partie qui compte, car les vraies pannes de scraper ne sont presque jamais une refonte totale. C'est une classe renommée,
00:03:06un nouveau wrapper, une mise en page décalée, une toute petite chose. C'est exactement ce pour quoi le matching adaptatif est conçu.
00:03:13Scrapling a trois grandes pièces qui comptent vraiment. La première est l'analyseur adaptatif, ce que vous venez de voir.
00:03:18Ensuite, il y a le fetcher multiple, un workflow, le bon outil pour le travail. Le fetcher opte pour du HTTP simple,
00:03:25rapide pour les pages web simples. Le fetcher furtif peut contourner les anti-bots si nécessaire. Le fetcher dynamique est un vrai
00:03:32navigateur pour les sites lourds en JS. Une API, échangez le fetcher, gardez le code. Le framework spider sert quand les scripts rapides
00:03:39deviennent un vrai crawler. Crawling asynchrone, pause et reprise, rotation de proxy, streaming, et toutes ces
00:03:46sessions mixtes. Les choses que vous ajoutez habituellement plus tard, c'est déjà là. Scrapling n'est pas juste un autre
00:03:53analyseur. Il remplace la stack de scraping. Requests, Beautiful Soup, Playwright, logique de réessai, assistants de proxy,
00:04:00code de spider avec un seul workflow. Scrapling ne dit pas que Beautiful Soup est inutile et ne dit pas non plus
00:04:06que Playwright ou Scrapy sont morts. Beautiful Soup plus Requests reste génial pour les pages simples. C'est facile,
00:04:13c'est lisible et tout le monde comprend, mais cela ne vous donne aucun type de furtivité. Cela ne vous donne
00:04:20pas de sélecteurs adaptatifs et ne rend pas le JavaScript. Et pour des travaux d'analyse plus importants, cela peut
00:04:26devenir le vrai goulot d'étranglement. Maintenant, Scrapy est puissant. Si vous construisez une infrastructure
00:04:31de crawling sérieuse, Scrapy mérite toujours du respect, mais Scrapy signifie souvent paramètres, pipelines, middleware,
00:04:36extensions et beaucoup plus de configuration. Playwright et Selenium sont géniaux quand vous avez besoin d'un vrai navigateur.
00:04:42Parfois, la page a juste besoin de JavaScript. Il n'y a pas moyen de contourner ça. Mais les navigateurs sont lourds. Ils sont
00:04:48plus lents que le HTTP brut et ils utilisent plus de mémoire. Et encore, ils ne règlent toujours pas le problème des sélecteurs
00:04:54cassés. Ils exécutent la page. Ils ne comprennent pas ce que votre scraper voulait extraire. Donc avec Scrapling,
00:05:01vous pouvez utiliser un fetch rapide quand vous le pouvez, la furtivité quand vous en avez besoin, le rendu navigateur quand la page
00:05:06l'exige et utiliser l'analyse adaptative. Donc un petit changement de front-end ne fait pas tout exploser. Maintenant, tout ça
00:05:12ne signifie pas que Scrapling n'a pas de problèmes. Si vous avez affaire à une protection au niveau du DOM,
00:05:17à un fingerprinting avancé ou à des limites de débit agressives, vous pourriez toujours avoir besoin de bons proxies. Donc Scrapling peut
00:05:23aider, mais il ne vous rend pas invisible. Le fetch dynamique peut aussi signifier une configuration navigateur supplémentaire. C'est
00:05:29juste le compromis à faire quand le rendu JavaScript est impliqué. Voici matière à réflexion pour tout cela.
00:05:34Scrapling vaut la peine d'être essayé si vous faites du vrai travail de scraping, surtout si vous construisez des pipelines de données,
00:05:41des jobs RAG, des agents IA, ou tout ce qui doit continuer à tourner après que le site cible change. La
00:05:47plus forte raison de l'utiliser n'est pas qu'il rend le scraping possible. Nous avons déjà des outils qui peuvent
00:05:53le faire, n'est-ce pas ? La plus forte raison est qu'il réduit la maintenance. Maintenant, je passerais probablement
00:05:59si vous avez un tout petit script, n'est-ce pas ? Requests et Beautiful Soup feront l'affaire,
00:06:04si vous aimez coder des outils comme ça, assurez-vous de vous abonner à la chaîne BetterStack. On se voit dans une autre vidéo.

Key Takeaway

Scrapling remplace les piles de scraping traditionnelles par un framework adaptatif capable de maintenir l'extraction de données malgré les changements de structure HTML des sites cibles.

Highlights

  • Scrapling utilise une analyse adaptative qui maintient le fonctionnement des extracteurs même après des modifications structurelles du DOM.

  • Le framework enregistre des indices structurels comme les balises, les attributs, la position relative et le texte voisin pour identifier les éléments après une refonte de site.

  • L'architecture unifiée remplace la combinaison Requests, Beautiful Soup et Playwright par une API unique.

  • Trois options de fetch permettent de choisir entre HTTP simple, requêtes furtives anti-bot ou rendu JavaScript complet via navigateur.

  • Le framework intègre nativement des fonctionnalités de crawler comme le crawling asynchrone, la rotation de proxy et la gestion de session.

Timeline

Problématique de la maintenance du scraping

  • Les scrapers classiques échouent dès qu'une classe est renommée ou qu'une balise est déplacée.
  • Scrapling intègre l'auto-cicatrisation pour s'adapter dynamiquement aux changements de page.

Le web scraping traditionnel souffre d'une fragilité constante face aux mises à jour fréquentes des sites web. Scrapling résout ce problème en proposant un framework tout-en-un qui combine analyse adaptative, fetch furtif et workflows de crawler. Cette approche réduit la fréquence des pannes dans les pipelines de données.

Fonctionnement de l'analyse adaptative

  • L'activation du mode adaptatif remplace les sélecteurs CSS rigides par une reconnaissance basée sur des indices structurels.
  • Le système enregistre des informations contextuelles comme les parents, les enfants, les attributs et la position dans le DOM.

Le système mémorise des signaux structurels lors de la première extraction réussie. Lorsque le DOM change, le framework utilise ces indices pour localiser à nouveau les éléments cibles sans nécessiter de réécriture de sélecteurs. Il ne dépend pas de l'identité parfaite du site, mais d'une correspondance structurelle suffisante pour identifier les données.

Architecture et outils intégrés

  • Le framework propose trois types de fetchers interchangeables via une API commune.
  • Le système remplace l'utilisation conjointe de Requests, Beautiful Soup et Playwright.
  • Les fonctionnalités de crawler incluent la rotation de proxy, le streaming et le crawling asynchrone.

L'API unique permet de passer d'un fetch rapide (HTTP brut) à un fetch furtif ou dynamique (navigateur complet) selon la complexité du site. Cette flexibilité évite de multiplier les dépendances tout en gérant les besoins spécifiques comme l'exécution de JavaScript ou le contournement des mesures anti-bots.

Limites et cas d'usage

  • Le framework ne garantit pas l'invisibilité totale face aux techniques avancées de fingerprinting.
  • L'utilisation est recommandée pour les pipelines de données, les agents IA et les jobs RAG nécessitant une haute résilience.

Bien que le framework réduise drastiquement la maintenance, des protections DOM complexes ou des limites de débit agressives peuvent encore exiger l'ajout de proxies. Les scripts simples ne nécessitant pas de maintenance peuvent rester sur des outils légers, mais le framework devient un atout pour les projets d'automatisation à long terme.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video