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 !