Masterclass de scraping dynamique
Techniques d'experts de Puppeteer, Playwright et Selenium
44:56
advanced
June 25, 2024
Vous rencontrez des difficultés avec le contenu dynamique et les données asynchrones dans le cadre du web scraping? Dans ce webinaire, nous allons aborder les problèmes courants auxquels sont confrontés les développeurs. Découvrez des solutions pratiques aux problèmes de web scraping dynamique que rencontrent les développeurs. Vous apprendrez à dimensionner votre infrastructure de navigation pour des opérations de scraping à grande échelle. Ce webinaire est conçu pour vous aider à surmonter ces défis et à améliorer de manière significative vos capacités de web scraping.
Dans ce webinaire en direct de 45 minutes, vous apprendrez comment
  • Gérer la limitation du débit et le blocage des adresses IP
  • Gérer la modification des localisateurs et des classes HTML
  • Naviguer dans le routage côté client dans les SPA
  • Gérer les données chargées de manière asynchrone
  • Simuler les interactions des utilisateurs pour le chargement différé
  • Accès aux données contenues dans les composants Shadow DOM
  • Garantir l'intégrité des captures d'écran du contenu dynamique
  • Adapter l'infrastructure des navigateurs à la collecte à grande échelle
Essai gratuit
Essai gratuit
Speakers
Dario Kondratiuk
Développeur Web et Microsoft MVP
Diego Molina
Responsable technique chez Sauce Labs
Greg Gorlen
Ingénieur logiciel Full Stack
Vous menez des opérations de scraping à grande échelle ? Contactez-nous pour obtenir une offre imbattable !
Contact us

Présentation du web scraping dynamique

Le web scraping consiste à extraire des données de sites Web, ce qui peut s’avérer particulièrement difficile lorsque le contenu dynamique change fréquemment. Nos experts, Greg, Dario et Diego, ont fourni des conseils pratiques pour surmonter ces défis à l’aide d’outils tels que Puppeteer, Selenium et Playwright.

Greg: Basé à San Francisco, Greg travaille chez Andela et se spécialise dans le génie logiciel traditionnel et le web scraping.
Dario : originaire d’Argentine, Dario travaille pour Mabel. Il s’est spécialisé dans les outils d’automatisation de l’assurance qualité à faible code et contribue à la version .NET de PuppeteerSharp et Playwright.
Diego: Venant de Valence, en Espagne, Diego dirige le projet Selenium et dirige le logiciel libre chez Sauce Labs, une plateforme de test dans le cloud.

Principaux points de discussion

1. Suivre l’évolution du code HTML

Greg a souligné l’importance de choisir des sélecteurs fiables. Évitez les longues chaînes de sélecteurs codés en dur tels que div > div > p. Utilisez plutôt des sélecteurs plus stables tels que aria-label ou des sélecteurs basés sur du texte. Mieux encore, interceptez les requêtes d’API lorsque cela est possible, car celles-ci sont moins susceptibles de changer que le DOM.

Outils et techniques:

  • Mozilla Readability: convertit le code HTML complexe en un format clair et lisible.
  • Interception d’API : accédez directement aux points de terminaison des données pour contourner les modifications du DOM.

2. Naviguer dans les applications de routage côté client et de page unique (SPA)

Dario a parlé de la gestion des SPA, qui utilisent souvent le routage côté client, ce qui complique l’extraction des données. Les points clés étaient les suivants :

  • Évitez de vous fier aux chargements initiaux: effectuez plusieurs vérifications pour vous assurer que la page est complètement chargée.
  • Vérifiez le contexte: assurez-vous que vous êtes à la bonne étape des processus en plusieurs étapes en vérifiant les titres ou d’autres éléments stables.
  • Outils : utilisez efficacement les fonctions de navigation et d’attente de Puppeteer ou de Playwright.

3. Accès aux données chargées de manière asynchrone

Diego a recommandé d’utiliser des frameworks qui gèrent automatiquement la synchronisation, tels que Selenide pour Java ou WebDriverIO pour JavaScript. Ces frameworks simplifient l’attente du chargement des éléments en fournissant des méthodes intégrées.

Conseils:

  • Prédicats pilotés par les événements : utilisez WaitForFunction pour attendre des états spécifiques dans le DOM.
  • Interception des demandes: capturez et utilisez les réponses de l’API directement lorsque cela est possible.

4. Imiter les interactions des utilisateurs pour le chargement différé

Greg a présenté des techniques pour gérer le chargement différé (le contenu se charge lorsque vous interagissez avec la page). Les principales stratégies étaient les suivantes :

  • Interactions avec le clavier : utilisez la touche Page suivante du clavier pour déclencher le chargement.
  • Capturez les données de manière incrémentielle: enregistrez les données par morceaux pour éviter toute perte en cas d’échec d’un script.
  • Éviter les interactions de l’utilisateur dans la mesure du possible : interceptez directement les réponses de l’API pour éviter les actions de l’utilisateur.

5. Extraction d’informations à partir de composants Shadow DOM

Dario a expliqué comment gérer le Shadow DOM, qui encapsule des parties de la page Web, les rendant ainsi plus difficiles à extraire. Les points clés étaient les suivants :

  • Comprendre Open vs. Shadow DOM fermé : la plupart des outils peuvent percer le Shadow DOM ouvert, mais pas le Shadow DOM fermé.
  • Gestion manuelle de JavaScript: utilisez la propriété ShadowRoot pour accéder manuellement aux éléments du Shadow DOM.
  • Support du framework: des outils tels que Playwright et Puppeteer gèrent Shadow DOM de manière efficace.

6. Captures d’écran d’une page complète

Diego a recommandé d’utiliser Firefox pour les captures d’écran en pleine page, car il dispose d’une commande native à cet effet. L’intégration de Selenium au protocole Chrome DevTools est une autre méthode efficace.

Conseils:

  • Network Idle: assurez-vous que tous les éléments sont chargés avant de prendre des captures d’écran.
  • Utiliser les méthodes intégrées: des outils tels que l’option FullPage de Puppeteer simplifient le processus.

7. Opérations à grande échelle

Jacob a évoqué les défis liés à la mise à l’échelle des opérations de web scraping, tels que la gestion des empreintes digitales, la gestion des sessions et la rotation des adresses IP. Il a présenté le navigateur Scraping Browser de Bright Data, qui résume ces complexités, permettant aux développeurs de se concentrer sur les scripts.

Fonctionnalités principales :

  • Gestion des sessions: gérez automatiquement les sessions pour éviter toute détection.
  • Rotation IP: utilisez différentes adresses IP pour simuler différents utilisateurs.
  • Playground for Testing: testez vos scripts dans un environnement contrôlé avant de passer à l’échelle supérieure.

Séance de questions-réponses interactive

Le webinaire s’est terminé par une séance de questions-réponses au cours de laquelle les participants ont posé des questions sur divers aspects du web scraping. Principaux sujets abordés :

  • Interception des appels d’API frontaux : utilisation d’outils de développement du navigateur pour identifier et répliquer les demandes d’API.
  • Sélecteurs robustes: évitez d’utiliser XPath; utilisez plutôt des sélecteurs plus stables et plus fiables.
  • Gestion de l’authentification: mettez en cache les jetons d’authentification et gérez l’authentification à deux facteurs manuellement si nécessaire.

Conclusion

Ce webinaire a fourni une mine de connaissances aux développeurs qui souhaitent maîtriser le web scraping dynamique. En tirant parti des informations partagées par Greg, Dario et Diego, vous pouvez améliorer vos techniques de scraping, rendant ainsi vos scripts plus robustes et efficaces. Pour ceux qui ont manqué la session en direct, l’enregistrement sera bientôt disponible. Restez à l’affût pour découvrir d’autres contenus éducatifs de Bright Data, qui vous aideront à exceller dans le web scraping et l’extraction de données.

Bon scraping !

The Data You Need
Is Only One Click Away.