En tant que navigateur sur Internet on a accès à beaucoup d’informations qui portent sur des clients, des offres, des cours d’actions, des phénomènes physiques, etc. Ces données peuvent être lues par d’utilisateurs, mais on aimerait pouvoir les exploiter en les transformant dans un format opérationnel pour enfin les analyser et en tirer profit. Le web scraping est la technique qui permet de retirer ces informations en un format exploitable par les programmes informatiques. Nous allons découvrir dans cet article comment la réaliser avec Beautiful Soup.
À quoi sert Beautiful Soup ?
Par exemple, on peut avoir envie d’avoir accès à tous les avis d’un Pack de Cartouches d’encre noire HP sur Amazon pour pouvoir faire de l’analyse syntaxique, sémantique et sentimentale et se faire son propre avis. Le web scraping à partir d’un localisateur de magasins (carte par exemple) permet de créer une liste d’emplacements commerciaux. On peut également obtenir les cours d’actions afin de prendre des meilleures décisions d’investissement.
En ce qui concerne la partie analyse de données il y a des techniques spécifiques pour chaque type de données et chaque objectif. Dans le schéma suivant on peut voir le processus « logistique » qui permet d’aboutir à une prise de décision en connaissance de cause :
Si on est dans la phase récupération des données, on souhaiterait avoir accès à toutes les informations présentes sur une page web pour pouvoir faire ensuite l’étude souhaitée.
Pour cela on a la possibilité de les copier « à la main » dans un autre document. Mais c’est un travail de fourmi puisque cela peut prendre beaucoup de temps, sans compter les erreurs de frappe qui pourraient se produire lors de la saisie. Comme dit dans l’introduction, le web scraping permet d’avoir accès à ces informations dans un format exploitable.
Pour la deuxième phase, on fait appel à des compétences techniques des data analystes, data engineers ou data scientists pour mettre en place des algorithmes et des études statistiques pertinentes. Par exemple, dans le cas de l’analyse des commentaires sur un produit on peut utiliser un algorithme NLP, qui permet aux machines de comprendre le langage humain.
L’interprétation des données est souvent faite au sein d’une équipe en tenant compte de l’avis des spécialistes du domaine (par exemple, tenir compte d’avis du médecin si on travaille sur un projet avec des données médicales), pour enfin arriver à une prise de décision optimale.
Présentation de Beautiful Soup
Dans cet article, nous allons nous concentrer sur la Phase 1 puisqu’on s’intéresse à la récupération des données.
Dans le paragraphe suivant, nous allons voir une application de la libraire Beautiful Soup qui permet de faire du web scraping en Python.
Dans le paragraphe suivant, nous allons nous intéresser à une librairie qui permet de faire du web scraping disponible en Python et qui constitue un excellent outil (facile à manipuler) pour extraire des informations de données non structurées : Beautiful Soup.
La librairie Python Beautiful Soup permet d’extraire du contenu et le transforme en une liste, tableau ou dictionnaire Python.
Cette librairie est très populaire parce qu’elle a une documentation complète et ses fonctionnalités sont bien structurées. De plus, il y a une grande communauté qui propose diverses solutions concernant l’utilisation de cette librairie.
Pourquoi s’intitule t-elle « Beautiful Soup » ?
Les sites web sont écrits avec les langages informatiques HTML et CSS qui permettent de mettre en page des pages web. Pour gérer et organiser le contenu on utilise le HTML. La partie gestion de l’apparence de la page web (couleurs, taille du texte, etc.) est gérée par le langage CSS.
Dans le domaine du développement web, la « tag soup » (soupe aux balises) est un terme dépréciatif désignant l’écriture du HTML syntaxiquement ou structurellement incorrecte écrite pour une page web.
Un exemple de web scraping avec Beautiful Soup
Prenons un exemple simple pour se familiariser avec ces notions. L’exemple suivant a été pris sur Kaggle et le but est de scraper des données sur la population dans le monde. Les données sont disponibles sur le site Worldometer, une open source géré par une équipe internationale de développeurs et chercheurs bénévoles, dont l’objectif est de mettre les statistiques mondiales à disposition d’un large public dans le monde entier.
Voici un aperçu de la page qu’on va scraper
Notre but est de récupérer cette table et la transformer en un DataFrame sans avoir à copier « à la main » toutes ces données.
- Dans un Jupyter Notebook on commence d’abord par importer les librairies nécessaires.
- Puis on crée une variable url en format string (du texte) qui contient le lien de la page en question.
Pour préparer les données on utilise la fonction requests.get() :
- Maintenant que les données sont préparées, la fonction BeautifulSoup() permet d’extraire le code HTML de cette page. Dans l’argument de cette fonction on va sélectionner l’objet .text.
- Dans la variable data on stocke le code HTML on cherche le mot clé « table » avec la fonction .find_all() :
- On utilise la commande .read_html(str()) pour que la machine lise le code HTML et puis on récupère le premier et unique élément de cet objet (le tableau).
À présent on affiche les premiers éléments, commande .head() du DataFrame :
- On peut aussi exporter la base de données en format csv avec la commande suivante :
Cette commande crée un fichier en format csv localisé au chemin indiqué.
Pour rendre plus faciles les manipulations sur le DataFrame, on peut penser à changer les noms de colonnes ou en éliminer quelques-unes si on ne les utilise pas.
Maintenant que nous avons pu obtenir les données qui ont été mises à disposition sur le site de Worldometer et qu’elles sont bien dans un format DataFrame, on peut passer aux autres étapes et faire des études. On peut donc se lancer dans la suite du processus (Phase 2, 3 et 4, voir le schéma en introduction). Selon la nature des données et en fonction d’objectifs à atteindre on peut faire différentes études : analyse exploratoire, proposer un modèle de machine learning, modélisation des séries temporelles, etc.
Conclusion
Nous venons de voir un exemple qui permet de récupérer les données stockées dans table, mais il faut retenir qu’en fonction de la structure de la page web sur laquelle on veut scraper les données on utilise des librairies et des fonctions différentes. La bonne nouvelle c’est qu’il y a beaucoup d’exemples disponibles sur l’Internet selon le format de la page et la configuration des données que l’on veut scraper.
Pour résumer, le web scraping permet de naviguer « intelligemment » sur Internet et donc constitue une ressource riche pour tout domaine de recherche ou d’intérêt personnel.
La formation Data Analyst de Datascientest vous permet de vous familiariser et de mettre en pratique les compétences en web scraping et pas uniquement. Si vous souhaitez vous former en analyse des données et gagner en compétences techniques liées à ce sujet, n’hésitez pas à vous inscrire pour la formation de Data Analyst.