Les données sont devenues le carburant de la croissance des entreprises au cours de la dernière décennie. L’internet est la principale source de données, avec 5 milliards d’utilisateurs générant des milliards de points de données chaque seconde, ce qui constitue le Big Data . L’analyse des données web peut aider les entreprises à découvrir des informations qui leur permettront d’atteindre leurs objectifs commerciaux. Cependant, la collecte d’un grand volume de données n’est pas facile pour les entreprises. Surtout si ces dernières pensent encore que le bouton « Exporter vers Excel » (s’il existe) et le traitement manuel sont les seules options pour extraire les données. C’est là qu’intervient le web scraping avec BeautifulSoup .
Le web scraping permet aux entreprises d’automatiser les processus de collecte de données sur le web à l’aide de robots ou de scripts automatisés appelés web crawlers .
Dans article, sous forme de tutoriel exhaustif, nous allons mettre en lumière l’un des outils les plus utilisés pour le web scraping : Beautiful Soup . Nous verrons tous les aspects importants de cette librairie notamment ce qu’il est, pourquoi il est important et comment il fonctionne.
Qu’est-ce que BeautifulSoup ?
BeautifulSoup fournit des méthodes simples pour naviguer, rechercher et modifier un arbre d’analyse dans des fichiers HTML ou XML. Il transforme un document HTML complexe en un arbre d’objets Python. Il convertit aussi automatiquement le document en Unicode , de sorte que vous n’avez pas à penser aux encodages. Cet outil vous aide non seulement à scraper, mais aussi à nettoyer les données. BeautifulSoup prend en charge l’analyseur HTML inclus dans la bibliothèque standard de Python, mais aussi plusieurs analyseurs Python tiers comme lxml ou html5lib.
BeautifulSoup a été développé pour la première fois par Leonard Richardson , qui contribue toujours à ce projet. Il est également soutenu par Tidelift (un outil d’abonnement payant pour la maintenance des logiciels libres).
Il existe plusieurs raisons qui font de BeautifulSoup un outil d’élite pour le web scraping à savoir :
- BeautifulSoup est composé de différents outils d’analyse syntaxique tels que html, parser, lxml et HTML5lib. Ainsi, vous pouvez essayer différentes méthodes d’analyse pour profiter de leurs avantages dans différents cas.
- L’un des grands avantages de BeautifulSoup est sa facilité d’utilisation. Il suffit de quelques lignes de code pour créer un scraper. Cela ne signifie pas non plus qu’il se casse facilement. C’est pour ces raisons, entre autres, que BeautifulSoup est populaire auprès des développeurs, mais également chez les Data Engineer .
- Avec une documentation agréable et complète, Beautiful soup aide les scrappeurs à apprendre rapidement.
- Il existe une communauté en ligne qui propose diverses solutions aux différents problèmes que vous pouvez rencontrer lors de l’utilisation de cette bibliothèque.
Avec tous ces avantages, il est difficile de ne pas l’utiliser pour la collecte de données nécessaires à un projet Big Data.
Avant de passer à l’écriture de code en Python, vous devez comprendre le fonctionnement de BeautifulSoup. Une fois que vous avez extrait le contenu HTML d’une page web et que vous l’avez stocké dans une variable, disons html_obj , vous pouvez alors le convertir en un objet BeautifulSoup avec une seule ligne de code :
soupe_obj = BeautifulSoup(html_obj, 'html.parser')
Ici, html_obj est la donnée HTML, soup_obj est l’objet beautiful soup qui a été obtenu et « html.parser » est le parser qui a été utilisé pour effectuer la conversion. Une fois que vous avez l’objet beautifulsoup, appelé soup_obj , le parcourir est très facile. Et puisque le parcourir est assez simple, l’extraction de données le devient également.
Prenons un exemple. Supposons que vous ayez besoin de récupérer un point de données appelé le titre du produit, qui est présent sur chaque page d’un site de commerce électronique. Vous avez téléchargé une seule page de produit HTML de ce site Web et vous vous êtes rendu compte que chaque page contient le nom du produit mentionné dans un élément de type span dont l’id est productTitle . Alors comment allez-vous récupérer ces données à partir de 1000 pages de produits ? Eh bien, vous obtiendrez les données HTML pour chaque page, et vous récupérerez le point de données de cette manière :
for spans in soup.findAll('span', attrs={'id' : 'productTitle'}) :
nom_du_produit = spans.text.strip()
Bien qu’il s’agisse d’un moyen d’obtenir les données textuelles présentes entre un certain élément de balise, vous pouvez également récupérer les données des attributs de celle-ci.
Démarrer avec BeautifulSoup
Dans cette partie, nous allons travailler avec la page blog de notre site web. N’oubliez pas que cette liste est systématiquement mise à jour, il est donc fort probable que vous y verrez des articles différents :
La façon la plus simple d’installer non seulement BeautifulSoup, mais aussi Python et ses paquets les plus populaires (IPython, NumPy, Pandas , Matplotlib, …) est avec Anaconda, une distribution Python multiplateforme (Linux, macOS, Windows) pour l’analyse de données et le calcul scientifique. Les instructions d’installation pour Anaconda sont disponibles ici.
Après l’installation d’Anaconda, celle de Beautiful se fait avec la commande suivante :
conda install -c anaconda beautifulsoup4
Pour profiter pleinement de l’expérience Beautiful Soup, vous devez également installer un analyseur syntaxique. Pour des raisons de vitesse, lxml est généralement recommandé. Toutefois, si vous avez d’autres préférences (telles que l’analyseur html.parser intégré de Python), n’hésitez pas à l’utiliser.
Dans ce tutoriel, nous utiliserons lxml. Installons-le donc à partir de la ligne de commande :
conda install -c anaconda lxml
Parfait ! Il nous faut encore une chose pour commencer à le scraping, et c’est la bibliothèque Requests . Avec Requests, nous pouvons demander des pages web à des sites web. Installons aussi cette bibliothèque :
conda install -c anaconda requests
Maintenant que nous avons tous les outils nécessaires, nous pouvons passer au scraping de notre page web.
Scraping
Sans plus attendre, lançons un Jupyter Notebook et importons les bibliothèques que nous venons d’installer (sauf lxml, qui n’a pas besoin d’être importée) :
from bs4 import BeautifulSoup as bs
import requests
Rappelez-vous, nous avons importé Beautiful Soup comme bs, c’est la partie bs() du code. Le premier paramètre de la méthode bs() est html (qui est la variable où nous avons enregistré le contenu HTML difficile à lire à partir de l’URL de la page blog), le second paramètre (« lxml« ) est l’analyseur syntaxique qui est utilisé sur la variable html.
Le résultat est une soupe (un document HTML analysé) qui est beaucoup plus agréable à l’œil :
titre_articles = soup.find_all("h2", class_="card-title entry-title")
for titre in titre_articles:
print(titre.get_text(strip=True))
soup.find_all(« h2 ») trouve tous les éléments h2 de la page web ; avec class_= »card-title entry-title », nous spécifions que nous recherchons spécifiquement les balises h2 qui contiennent l’attribut class_= »card-title entry-title »
Note importante : le « _ » dans class_= »card-title entry-title » n’est pas une faute de frappe, il est requis dans Beautiful Soup lors de la sélection des attributs de classe.
Nous enregistrons les éléments h2 dans titre_articles, qui se comporte comme une liste. Cela nous permet de la parcourir avec une boucle for. À chaque itération, nous extrayons uniquement le texte de l’élément h2 avec .get_text(). Avec le paramètre strip=True, nous nous assurons de supprimer tout espace blanc inutile.
Obtenir les catégories des articles
L’étape précédente nous a permis d’obtenir tous les titres d’articles de la page blog de notre site web. Mais que savons-nous de leurs catégories ? Y a-t-il plus de d’articles de programmation informatique ou d’articles tutoriels big data ?
import pandas as pd
categories = soup.find_all("h6", class_="category text-info")
categories_series = pd.Series(categories)
categories_series.value_counts()
[[Programmation informatique], ] 19
[[Tutoriels Big Data], ] 8
Vous pouvez vous féliciter, car vous venez de scraper votre première page Web. Nous espérons que vous vous êtes amusé en lisant cet article. Mais, surtout, nous espérons que vous avez compris l’intérêt du webscraping dans le marché et son intérêt dans votre carrière et que vous serez fier d’utiliser les compétences acquises. N’hésitez pas à visiter l’article sur le webscraping avec Selenuim.
Et si vous souhaitez approfondir vos connaissances en Big Data et en programmation informatique, nous vous invitons à télécharger notre formation sur le langage Scala pour la data.
Juvénal JVC
Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/
Je veut utiliser la même technique sur un autre site. Mais je n’arrive pas à recuperer les informations contenues dans les balises . J’aimerai récupérer le commentaire et la note dans le https://www.agoda.com/fr-fr/palace-des-rois/hotel/all/douala-cm.html?finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=1&children=0&rooms=1&maxRooms=0&checkIn=2022-04-28&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=-1&showReviewSubmissionEntry=false¤cyCode=USD&isFreeOccSearch=false&flexibleDateSearchCriteria=%5Bobject%20Object%5D&isCityHaveAsq=false&los=1&searchrequestid=d0f02d13-1aef-4a1a-9e7d-f4bdaa73e932
Pour réaliser ta requête, cherche la balise associée au commentaire et scrape-là conformément à ce que nous montrons dans l’article.
Cordialement,
Juvénal
Les articles les plus consultés
Maîtrisez la manipulation des dates en SQL Il est essentiel de connaître la date et l’heure surtout quand vous traitez...
For-each/forEach() en Java : comment utiliser les boucles améliorées ? Dans toutes applications, surtout en Big Data, on sera toujours amené à eff...
Web Scraping : Comment collecter les données du web avec Python ? Vous travaillez avec Python ? Vus vous intéressez au Big Data et vous souha...
Switch/Case : gérer les expressions conditionnelles en Java En programmation informatique, les structures conditionnelles sont fondamen...
Java.util.Map : Maîtrisez les collections et structures de données de Java Java est à ce jour, le langage le plus utilisé de la planète. Grâce à sa va...
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.