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
1: Requests
2: Hml5lib
É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.Si 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 contenuLa 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..Nous 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 table
Imprimons la table pour avoir une meilleure idée de ce que nous avons jusqu’à présent, et utilisons .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 à
Vous devriez maintenant avoir uniquement ledans chaque instance de boucle disponible. Vous pouvez tester cela en exécutant print(row) dans la boucle.
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.
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éparerEt voilà, vous avez terminé. Voici ce à quoi devrait ressembler votre variable de citation maintenant :
À la fin de ce processus, vous pouvez enregistrer vos données dans un fichier, et votre code devrait ressembler à ceci :