Apprenez à utiliser Beautiful Soup pour le web scraping sous Python en 3 minutes

Vous cherchez un didacticiel rapide pour vous aider à commencer à faire du web scraping à l’aide de Beautiful Soup de Python ? Vous avez trouvé la bonne adresse ! Lisez la suite et commencez dès maintenant.
6 min de lecture
How to Scrape with BeautifulSoup

Dans cet article, nous parlerons des points suivants :

Comment fonctionne le web scraping ?

Le scraping d’une page web consiste en la requête de données spécifiques d’une page web cible. Lorsque vous faites le scraping d’une page, le code que vous écrivez envoie votre requête au serveur hébergeant la page de destination. Le code télécharge ensuite la page, en extrayant uniquement les éléments de la page définis initialement dans la tâche.

Supposons par exemple que nous cherchions à cibler les données des balises de titre H3. Nous écrirons le code d’un scraper qui recherchera spécifiquement ces informations. Le scraper fonctionne en trois étapes :

Étape 1 : envoi d’une requête.au serveur pour télécharger le contenu du site.

Étape 2 : filtrage du code HTML de la page pour rechercher les balises H3 désirées.

Étape 3 : copie du texte à l’intérieur des balises cibles et production de la sortie au format spécifié précédemment dans le code.

Il est possible d’effectuer des tâches de web scraping dans de nombreux langages de programmation avec différentes bibliothèques, mais l’utilisation de Python avec la bibliothèque Beautiful Soup est l’une des méthodes les plus populaires et efficaces qui soient. Dans les sections suivantes, nous allons aborder les bases du web scraping en Python avec Beautiful Soup.

Qu’est-ce que Beautiful Soup ?

Beautiful Soup fournit des méthodes simples de navigation, de recherche et de modification d’une arborescence d’analyse dans des fichiers HTML et XML. Il transforme un document HTML complexe en une arborescence d’objets Python. De plus, il convertit automatiquement le document en Unicode, ce qui évite d’avoir à tenir compte des codages. Cet outil vous aide non seulement à faire du web scraping, mais aussi à nettoyer vos données. Beautiful Soup prend en charge l’analyseur HTML inclus dans la bibliothèque standard de Python, mais il prend également en charge plusieurs analyseurs Python tiers, comme lxml ou hml5lib.

Pour en savoir plus sur l’éventail complet de ses fonctionnalités, ouvrez le lien suivant : Documentation Beautiful Soup.

Installation de Requests et de Beautiful Soup

Pour installer Beautiful Soup, vous avez besoin de pip ou de n’importe quel autre programme d’installation Python. Vous pouvez également utiliser votre JupyterLab. Dans ce post, nous utiliserons pip car c’est l’outil le plus pratique. Ouvrez votre terminal ou JupyterLab et écrivez command line syntax for pip install beautifulsoup4 for Beautiful Soup Libraries in Python

Vous pouvez également installer un analyseur qui interprète le code HTML, par exemple html5lib. Pour ce faire, exécutez le code suivant sur le terminal :command line for installing html5lib using pip install for Python

Installation de Requestsscreenshot of syntax for pip install requests for python

Une autre méthode consiste à télécharger les bibliothèques manuellement en suivant ces liens :

1: Requests

2: Hml5lib

3: Beautifulsoup4

Étapes faciles pour faire du web scraping en Python, en utilisant Requests et Beautiful Soup

Étape 1 : Vous devez envoyer une requête HTTP au serveur de la page que vous souhaitez récupérer. Le serveur répond en envoyant le contenu HTML de la page web. Puisque nous utilisons Python pour nos requêtes, nous avons besoin d’une bibliothèque HTTP tierce – nous utiliserons Requests.

Commencez par importer la bibliothèque Requests et adressez une simple requête GET à l’URL – nous avons choisi https://www.brainyquote.com/topics/motivational-quotes parce que ce site a une structure HTML simple et nous permettra de démontrer facilement le potentiel de Beautiful Soup.python code to import requests and then scrape a given URLSi vous obtenez la réponse [200], cela signifie essentiellement que le site a répondu avec un code de réponse HTTP 200 OK et nous a envoyé le contenu HTML de la page

Faisons de nouveau la même requête, mais cette fois, nous stockerons le résultat dans une variable appelée r, et nous imprimerons son contenuscraping using requests and saving the URL as a variable called rLa sortie doit correspondre au code HTML complet de cette page. Comme vous pouvez le constater, cette sortie n’est pas structurée et Beautiful Soup nous aidera à la nettoyer et à obtenir les données dont nous avons besoin.

Étape 2 : Maintenant que nous avons le contenu HTML, nous devons analyser les données. Pour cela, nous allons utiliser Beautiful Soup avec un analyseur html5lib..importing beautiful soup from bs4 - command line syntaxNous devons passer deux valeurs dans BeautifulSoup()

1. Chaîne HTML du site web : r.content

2. Quel analyseur HTML utiliser : html5lib

Étape 3 : À ce stade, vous voulez accéder au site que vous voulez scraper. Ouvrez les Devtools (F12) et accédez à l’onglet Elements. Nous allons rechercher la couche supérieure de la tablenice chunk of scraped data using beautiful soup

command line syntax for configuring a table in beautiful soup using python

Imprimons la table pour avoir une meilleure idée de ce que nous avons jusqu’à présent, et utilisons .prettify()command line for displaying the table in the console using prettify

Votre sortie devrait ressembler à ceci :

Cherchons maintenant les données dont nous avons besoin. Pour cet exemple, nous rechercherons seulement le texte cité et le nom de l’auteur. Comme vous pouvez le voir, toutes ces données sont à

Faisons donc une boucle sur toutes les instances de cette classe pour obtenir toutes les citations dans notre table.command line for looping through all the data to find the rows you need for the table

Vous devriez maintenant avoir uniquement ledans chaque instance de boucle disponible. Vous pouvez tester cela en exécutant print(row) dans la boucle.

 
finding the alt-text inside the scraped data

Nous recherchons les informations sous la clé « img alt » ; nous allons donc créer une variable de citation et affecter ces données à cette variable.

assigning data to the alt text

Comme vous pouvez le voir, j’ai utilisé pour cela une déclaration « try ». Dans ce cas, si l’une des lignes ne contient pas les données que vous recherchez, vous ne recevrez pas d’erreur et la boucle continuera. Je divise également les résultats au niveau des « – ». Comme vous l’avez vu précédemment, le texte et le nom de l’auteur sont séparés par un tiret « – » ; utilisons cela pour différencier les deux et les séparerexample of alt-attribute text being filled with the data providedEt voilà, vous avez terminé. Voici ce à quoi devrait ressembler votre variable de citation maintenant :

example of the data after it has applied the alt-text scrape

À la fin de ce processus, vous pouvez enregistrer vos données dans un fichier, et votre code devrait ressembler à ceci :Screen shot of the final Python code and how it should look