41 points par GN⁺ 2024-02-21 | 5 commentaires | Partager sur WhatsApp

Les avantages du web scraping en Python

  • Syntaxe simple : permet de coder rapidement
  • Bibliothèques intégrées : urllib, lxml, etc., utiles pour le scraping
  • Bibliothèques de scraping matures : Beautiful Soup, Scrapy, etc.
  • Polyvalence : utile pour construire des pipelines de données
  • Interopérabilité : s’intègre bien avec d’autres langages et fonctionne efficacement lorsque les performances sont importantes

Bibliothèques de web scraping en Python

  • BeautifulSoup : parsing HTML/XML, navigation et recherche flexibles
  • Scrapy : rapide et extensible, avec middleware et fonctions de crawling distribué
  • Selenium : automatisation du navigateur, gestion des sites centrés sur JavaScript
  • lxml : parseur XML/HTML très rapide
  • pyquery : accès aux éléments HTML avec une syntaxe de style jQuery

Préparatifs pour le scraping

  • Il est recommandé de configurer un environnement virtuel
  • Bibliothèques nécessaires : Requests, BeautifulSoup, OS

Choisir le site web à scraper

  • Sélection de la page Wikipédia « Liste des races de chiens »
  • HTML bien structuré, champs de données variés, images incluses

Écrire le code de scraping

  • Importer les bibliothèques nécessaires
  • Utiliser un User-Agent pour se faire passer pour un navigateur
  • Télécharger la page HTML avec requests et vérifier sa validité
  • Parser le HTML avec BeautifulSoup
  • Extraire les données avec des sélecteurs CSS
  • Télécharger et enregistrer les images

Défis concrets du web scraping et bonnes pratiques

  • Gestion du contenu dynamique : utiliser Selenium ou l’intégration Splash de Scrapy
  • Éviter les blocages : réguler la vitesse des requêtes, imiter un navigateur, faire tourner les user agents et les proxies
  • Limitation de débit : respecter le délai de crawl, utiliser des proxies, ajuster automatiquement les requêtes
  • Parsing HTML complexe : utiliser des parseurs puissants comme lxml et renforcer les sélecteurs

L’avis de GN⁺

  • Point le plus important : Python est un langage puissant pour le web scraping ; sa syntaxe simple et la richesse de ses bibliothèques le rendent adapté à des projets de toutes tailles.
  • Pourquoi c’est intéressant : le web scraping est une compétence essentielle pour la collecte et l’analyse de données, et ce guide fournit des connaissances pratiques qu’un ingénieur logiciel débutant peut appliquer à de vrais projets.
  • Pourquoi c’est utile : le web scraping peut être appliqué dans de nombreux domaines, et ce guide aide à développer des compétences solides grâce à des défis réels et des bonnes pratiques.

5 commentaires

 
yangeok 2024-02-26

Pour le rendu JavaScript, Playwright est vraiment ce qu’il y a de mieux. La prise en charge des langages est très large.

En l’associant à Scrapy, il pourrait y avoir une vraie synergie.

 
ikbzbcg15 2024-02-21

Eh, de nos jours, il faut utiliser Playwright.

 
bandoche 2024-02-21

En pratique, quand on fait du scraping dans le cadre du travail, ce qui est plus fastidieux qu’on ne l’imagine, c’est surtout de gérer le navigateur (notamment le chrome webdriver, qui provoque souvent des erreurs) et de contourner les blocages (les différents CAPTCHA).

 
GN⁺ 2024-02-21
Avis Hacker News
  • Il est important de distinguer le crawling du scraping web. Le crawling consiste à trouver des URL et à récupérer le contenu HTML, tandis que le scraping consiste à extraire des données structurées à partir du HTML. Séparer ces deux étapes permet ensuite de modifier rapidement le scraper et de le réappliquer aux données existantes.
  • Playwright est recommandé comme outil de web scraping en Python. C’est un outil d’automatisation de navigateur très puissant et bien conçu, et l’auteur utilise l’outil CLI shot-scraper pour scraper directement des pages web depuis la ligne de commande.
  • Que des entreprises SaaS fassent la promotion de leurs produits dans des billets de blog fait partie du marketing, mais il est toujours amusant de voir des débutants découvrir un problème pour la première fois et se voir proposer leur produit comme solution.
  • Il peut être utile de consulter <domain>/robots.txt, qui contient des informations utiles pour le scraping d’un site web, et d’extraire les données via des métadonnées structurées plutôt qu’en analysant les balises HTML. Il existe aussi des bibliothèques qui permettent d’extraire cela en JSON.
  • Certains s’interrogent sur la popularité du web scraping avec Node.js plutôt qu’avec Python. npm propose des packages bien conçus pour l’analyse du DOM et, comme on utilise JavaScript, on bénéficie de fonctionnalités DOM plus naturelles.
  • Il est possible de récupérer simplement des liens avec read_html de pandas. Cela permet d’extraire facilement les données tabulaires d’un site web.
  • Lassés des tâches de web scraping répétitives et peu créatives, certains essaient désormais d’automatiser tout le processus avec des LLM (Large Language Models). Utiliser des LLM pour générer et ajuster du code de scraping capable de s’adapter aux changements d’un site web est jugé efficace.
  • Certains remettent en question le nombre de « guides complets » consacrés au scraping en Python.
  • Une configuration moderne de web scraping nécessite un agent navigateur, et pour récupérer des données depuis les grandes plateformes de réseaux sociaux ou des articles du New York Times, il peut être nécessaire de construire ses propres outils.
  • La bibliothèque requests-cache peut être utile pendant les tâches de scraping. Elle remplace requests, mais met en cache toutes les réponses dans une base de données SQLite, ce qui aide à ajuster un script lorsqu’un site impose des limitations.
 
xguru 2024-02-21

L’important dans ce commentaire, c’est ceci :

Le fait que des entreprises SaaS fassent la promotion de leurs produits dans des billets de blog fait partie du marketing, mais c’est toujours amusant de voir qu’en présentant un problème pour la première fois à des débutants, elles proposent leur propre produit comme solution.

C’est bien ça. Il faut toujours garder à l’esprit que ce genre d’articles finit par inclure la promotion de leur propre produit.
À l’inverse, on peut aussi dire que les entreprises coréennes devraient, elles aussi, utiliser ce type d’approche comme base.