Webscraping avec BeautifulSoup

scraping web des données html via beautifulsoup et requests - selenium

1. A propos du webscraping

Le scraping Web est l'un des moyens les plus efficaces et les plus utiles pour extraire des données d'un site Web.
Certains sites Web peuvent contenir une très grande quantité de données précieuses: Cours boursiers, détails des produits, statistiques sportives, contacts de l'entreprise, etc.
Si vous souhaitez accéder à ces informations, vous devez soit utiliser le format utilisé par le site Web, soit copier-coller les informations manuellement dans un nouveau document. C'est là que le scraping Web peut vous aider.
Qu'est-ce que le scraping Web ?
Le scraping Web fait référence à l'extraction de données d'un site Web. Ces informations sont collectées puis exportées dans un format plus utile pour l'utilisateur. Qu'il s'agisse d'une feuille de calcul ou d'une API.
Bien que le scraping Web puisse être effectué manuellement, dans la plupart des cas, les outils automatisés sont préférés lors du scraping de données Web, car ils peuvent être moins coûteux et fonctionner à un rythme plus rapide.
Mais dans la plupart des cas, le scraping Web n'est pas une tâche simple. Les sites Web se présentent sous de nombreuses formes, par conséquent, les scraping web varient en termes de fonctionnalités et de caractéristiques.




2. Pourquoi utilise -t- on le webscraping?

Les données obtenues via le web scraping peuvent être utilisées dans de nombreux domaines et pour différentes applications, en fonction des besoins:

  1. Surveillance des concurrents : Collecter des informations sur les produits commerciaux, promotions, avis et stratégies des concurrents pour ajuster ses propres actions commerciale.
  2. Études de marché : Analyser des données de marché telles que les tendances de consommation, les produits populaires, ou les nouvelles sorties.
  3. Données financières : Extraction des données boursières (prix des actions, fluctuations des marchés) à partir de sites spécialisés, pour alimenter des systèmes de trading ou d'analyse financière.
  4. Suivi de produits : Extraction de données sur les produits commerciaux (disponibilité, ruptures de stock, promotions) pour les détaillants et e-commerçants afin de suivre en temps réel les performances du marché.
  5. Autre usages : Ainsi que de nombreux autres usages selon les besoins des sociétés et des organismes...

3. Les Outils couramment utilisés pour le web scraping

  1. BeautifulSoup : Une bibliothèque Python permettant de naviguer dans le HTML et d'extraire des données à partir de la structure de la page.
  2. lxml : Un parser XML/HTML très performant, utilisé pour analyser rapidement les pages web.
  3. Selenium : Utilisé pour les sites dynamiques, où le contenu est généré par JavaScript. Selenium permet d'automatiser un navigateur web et d'interagir avec les éléments de la page (clics, défilements, etc.).
  4. Scrapy : Un framework Python complet dédié au scraping de données à grande échelle. Il est puissant pour crawler plusieurs pages de manière automatique.

Dans ce tutoriel nous allons nous intéresser à la bibliothèque beautifulsoup & requests

4. Installation de beautifulSoup & requests

Pour créer des applications de scraping web, il est nécessaire d'installer les deux bibliothèques beautifulSoup et requests, il suffit pour cela d'utiliser l'invite de commande cmd et d'exécuter la commande:

5. Envoyer et analyser une requête HTTP

Le web scraping consiste à envoyer des requêtes HTTP pour obtenir le contenu des pages web.
Les données sont ensuite analysées (parsed) à partir de la structure HTML du document pour en extraire les informations désirées. A cet effet nous utilisons la bibliothèque requests pour envoyer une requête HTTP vers une page web et obtenir le code HTML.

6. Analyser le contenu HTML avec BeautifulSoup

Une fois que vous avez le code HTML, vous pouvez utiliser BeautifulSoup pour l'analyser et naviguer dans le DOM du contenu HTML.

Code complet:

7. Naviguer dans l'arbre HTML

BeautifulSoup permet de naviguer facilement dans l'arbre HTML et de trouver les éléments dont vous avez besoin.

7.1 Accéder à des balises spécifiques

7.2 Utiliser des sélecteurs CSS

8. Extraire des attributs spécifiques

Vous pouvez également extraire des attributs HTML tels que les liens des images...

9. Gérer des structures plus complexes

Certains sites peuvent avoir des structures HTML complexes. Vous pouvez combiner différentes méthodes pour extraire des données de sections spécifiques.

10. Gérer des pages dynamiques

Certaines pages web utilisent JavaScript pour charger dynamiquement du contenu, ce qui peut rendre le scraping avec requests et BeautifulSoup insuffisant. Dans ce cas, vous devrez utiliser une solution comme Selenium pour simuler un navigateur.

11. Scraping avec pagination

Si les données sont réparties sur plusieurs pages, vous devrez gérer la pagination pour accéder à toutes les pages.

12. Respecter les conditions d'utilisation

Notez bien qu'ilfaut toujours respecter les règles du site en consultant le fichier robots.txt et en évitant d'envoyer trop de requêtes en un court laps de temps (throttling). Vous pouvez utiliser des pauses entre les requêtes pour éviter de surcharger le serveur.

13. Exemple complet - Scraping des titres d'articles d'un blog

Voici un exemple complet qui scrape les titres d'articles d'une page d'un blog:

14. Exporter les données extraites

Vous pouvez exporter les données collectées dans un fichier CSV ou JSON.

14.1 Exporter vers un fichier CSV

14.2 Exporter vers un fichier JSON




 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply