Web Scraping For Beginners : Les bases et le cadre de travail en utilisant Python

Python, Scraping, Mar-29-20215 minutes de lecture

Le web scraping est l'art d'extraire des données d'un site web sous une forme automatisée et bien structurée. Il peut y avoir différents formats pour extraire des données comme Excel, CSV, et bien d'autres. Les études de marché, la surveillance des prix, les renseignements sur les prix, les études de marché et la génération de prospects sont quelques-uns des cas d'utilisation pratique du web scraping. Le web scraping est un instrument

Le web scraping est l'art d'extraire des données d'un site web sous une forme automatisée et bien structurée. Il peut y avoir différents formats pour extraire des données comme Excel, CSV, et bien d'autres. Les études de marché, la surveillance des prix, les renseignements sur les prix, les études de marché et la génération de prospects sont quelques-uns des cas d'utilisation pratique du web scraping. Le web scraping est une technique instrumentale qui permet d'utiliser au mieux les données disponibles publiquement et de prendre des décisions plus intelligentes. Il est donc important que chacun connaisse au moins les bases du web scraping afin d'en tirer profit.

Cet article aborde les bases du web scraping en jouant avec le framework Python appelé Beautiful Soup. Nous utiliserons Google Colab comme environnement de codage.

Étapes de l'extraction de données sur le Web à l'aide de Python

Tout d'abord, nous devons identifier la page web que nous voulons récupérer et envoyer une requête HTTP à cette URL. En réponse, le serveur renvoie le contenu HTML de la page web. Pour cette tâche, nous utiliserons une bibliothèque HTTP tierce pour gérer les requêtes python. Une fois que nous avons réussi à accéder au contenu HTML, la tâche principale consiste à analyser les données. Nous ne pouvons pas traiter les données simplement à l'aide d'une chaîne de caractères, car la plupart des données HTML sont imbriquées. C'est là qu'intervient l'analyseur, qui crée une structure arborescente imbriquée des données HTML. L'une des bibliothèques d'analyseurs HTML les plus avancées est html5lib. Vient ensuite la traversée de l'arbre, qui implique la navigation et la recherche dans l'arbre d'analyse. Pour ce faire, nous utiliserons Beautiful Soup (une bibliothèque Python tierce). Cette bibliothèque Python est utilisée pour extraire des données des fichiers HTML et XML.

Nous avons maintenant vu comment fonctionne le processus de web scraping. Commençons à coder,

Étape 1 : Installation de bibliothèques tierces

Dans la plupart des cas, Colab est livré avec des paquets tiers déjà installés. Cependant, si vos déclarations d'importation ne fonctionnent pas, vous pouvez résoudre ce problème en installant quelques paquets à l'aide des commandes suivantes, 

pip install requests
pip install html5lib
pip install bs4

Étape 2 : Accès au contenu HTML de la page Web

importer des demandes 
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
print(r.content)

Il affichera la sortie du formulaire,

Essayons de comprendre ce morceau de code,

Dans la première ligne de code, nous importons la bibliothèque requests.Ensuite, nous spécifions l'URL de la page web que nous voulons récupérer.Dans la troisième ligne de code, nous envoyons la requête HTTP à l'URL spécifiée et sauvegardons la réponse du serveur dans un objet appelé r.Enfin, print(r.content) renvoie le contenu HTML brut de la page web.

Étape 3 : Analyse du contenu HTML

import requests 
from bs4 import BeautifulSoup 
  
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
  
soup = BeautifulSoup(r.content, 'html5lib') # Si cette ligne provoque une erreur, lancez 'pip install html5lib' ou installez html5lib 
print(soup.prettify())

Sortie :

Il donne un résultat très long ; quelques captures d'écran sont jointes ci-dessous.

L'une des grandes qualités de Beautiful Soup est qu'il est construit sur des bibliothèques d'analyse HTML comme html5lib, html.parse, lxml, etc. qui permettent de créer simultanément l'objet de Beautiful Soap et la bibliothèque d'analyse. 

Dans le code ci-dessus, nous avons créé l'objet Beautiful Soup en lui passant deux arguments :

r.content : Contenu HTML brut.

html5lib : Spécifie l'analyseur HTML que nous voulons utiliser.

Enfin, soup.prettify() est imprimé, donnant à l'arbre d'analyse une représentation visuelle du contenu HTML brut.

Étape 4 : Recherche et navigation dans l'arbre d'analyse syntaxique

Il est maintenant temps d'extraire certaines données utiles du contenu HTML. Les objets soupe contiennent les données sous la forme d'une structure imbriquée, qui peut être extraite par programme. Dans notre cas, nous récupérons une page web contenant des citations. Nous allons donc créer un programme qui résout ces citations. Le code est donné ci-dessous,

#Python program to scrape website  
#and save quotes from website 
import requests 
from bs4 import BeautifulSoup 
import csv 
   
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
   
soup = BeautifulSoup(r.content, 'html5lib') 
   
quotes=[]  # a list to store quotes 
   
table = soup.find('div', attrs = {'id':'all_quotes'})  
   
for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)

Avant d'aller plus loin, il est recommandé de parcourir le contenu HTML de la page web, que nous avons imprimé à l'aide de la méthode soup.prettify(), et d'essayer de trouver un modèle pour naviguer vers les citations.

Je vais maintenant expliquer comment nous procédons dans le code ci-dessus, 

Si nous naviguons parmi les citations, nous constaterons que toutes les citations se trouvent à l'intérieur d'un conteneur div dont l'identifiant est "all_quotes". Nous recherchons donc cet élément div (appelé table dans le code) à l'aide de la méthode find() :

table = soup.find('div', attrs = {'id':'all_quotes'})

Le premier argument de cette fonction est la balise HTML à rechercher. Le second argument est un élément de type dictionnaire permettant de spécifier les attributs supplémentaires associés à cette balise. La méthode find() renvoie le premier élément correspondant. On peut essayer table.prettify() pour avoir une meilleure idée de ce que fait ce morceau de code.

Si nous nous concentrons sur l'élément table, le conteneur div contient chaque citation dont la classe est quote. Nous allons donc parcourir en boucle chaque conteneur div dont la classe est quote.

La méthode findAll() est très utile. Elle est similaire à la méthode find() en ce qui concerne les arguments, mais la principale différence est qu'elle renvoie une liste de tous les éléments correspondants. 

Nous itérons à travers chaque citation à l'aide d'une variable appelée "row".

Analysons un exemple de contenu de ligne HTML pour mieux comprendre :

Considérons maintenant le morceau de code suivant :

for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)

Ici, nous créons un dictionnaire pour enregistrer toutes les informations relatives à un devis. La notation en points est utilisée pour accéder à la structure imbriquée. Pour accéder au texte à l'intérieur de l'élément HTML, nous utilisons .text :

En outre, nous pouvons également ajouter, supprimer, modifier et accéder aux attributs de la balise. Pour ce faire, nous avons traité la balise comme un dictionnaire :

quote['url'] = row.a['href']

Ensuite, nous avons ajouté toutes les citations à la liste appelée citations. 

Enfin, nous générerons un fichier CSV, qui sera utilisé pour enregistrer nos données.

filename = 'inspirational_quotes.csv'

Nous avons nommé notre fichier inspirational_qoutes.csv et y avons enregistré toutes les citations pour les utiliser ultérieurement. Voici à quoi ressemble notre fichier inspirational_quotes.csv,

Dans le résultat ci-dessus, nous n'avons affiché que trois lignes, alors qu'il y en a 33 en réalité. Cela signifie que nous avons extrait une quantité considérable de données de la page web en faisant un simple essai. 

Remarque : dans certains cas, le "web scraping" est considéré comme illégal, ce qui peut entraîner le blocage permanent de votre adresse IP par le site web. Vous devez donc être prudent et ne scraper que les sites et pages web qui l'autorisent. 

Pourquoi utiliser le Web Scraping ?

Voici quelques-uns des scénarios du monde réel dans lesquels le web scraping pourrait être d'une grande utilité,

Génération de leads

Pour la plupart des entreprises, la génération de leads est l'une des activités de vente les plus importantes. Selon un rapport de Hubspot, la génération de trafic et de prospects est la priorité numéro un de 61 % des spécialistes du marketing entrant. Le web scraping peut jouer un rôle à cet égard en permettant aux spécialistes du marketing d'accéder à des listes de prospects structurées sur l'ensemble de l'internet.

Étude de marché 

La réalisation d'une bonne étude de marché est l'élément le plus important de toute entreprise en activité et nécessite donc des informations très précises. L'analyse de marché est alimentée par un volume important, une qualité élevée et une grande perspicacité du web scraping, qui peut être de tailles et de formes différentes. Ces données peuvent constituer un outil très utile pour l'intelligence économique. L'étude de marché se concentre principalement sur les aspects commerciaux suivants :

  • Il peut être utilisé pour analyser les tendances du marché.
  • Il peut nous aider à prévoir les prix du marché.
  • Il permet d'optimiser les points d'entrée en fonction des besoins des clients.
  • Il peut être très utile pour surveiller les concurrents.

Créer des listes

Le web scraping peut être une technique très pratique et fructueuse pour créer des listes en fonction des types d'entreprises, par exemple les agences immobilières et les boutiques de commerce électronique. Un outil de scraping web peut aider l'entreprise à parcourir des milliers de listes de produits concurrents sur son magasin et à rassembler toutes les informations nécessaires telles que les prix, les détails du produit, les variantes et les avis. Cette opération peut être réalisée en quelques heures seulement, ce qui permet de créer ses propres listes et de se concentrer davantage sur les demandes des clients.

Comparer les informations

Le web scraping permet à diverses entreprises de rassembler et de comparer des informations et de fournir ces données de manière significative. Prenons l'exemple des sites web de comparaison de prix qui extraient les avis, les caractéristiques et tous les détails essentiels de divers autres sites web. Ces informations peuvent être compilées et adaptées pour être facilement accessibles. Ainsi, une liste peut être générée à partir de différents détaillants lorsque l'acheteur recherche un produit particulier. Le web scraping facilitera donc grandement le processus de prise de décision du consommateur en lui présentant diverses analyses de produits en fonction de sa demande.

Informations globales

Le web scraping peut aider à agréger l'information et à l'afficher sous une forme organisée à l'intention de l'utilisateur. Prenons le cas des agrégateurs de nouvelles. Le web scraping sera utilisé de la manière suivante,

Le web scraping permet de collecter les articles les plus précis et les plus pertinents. Il peut aider à collecter des liens vers des vidéos et des articles utiles. Il permet d'établir des chronologies en fonction des nouvelles. Il permet de capturer les tendances en fonction des lecteurs des nouvelles.

Dans cet article, nous avons donc analysé en profondeur le fonctionnement du web scraping en considérant un cas d'utilisation pratique. Nous avons également fait un exercice très simple sur la création d'un scraper web simple en Python. Maintenant, vous pouvez scraper n'importe quel autre site web de votre choix. En outre, nous avons également vu quelques scénarios du monde réel dans lesquels le web scraping peut jouer un rôle important. Nous espérons que vous avez apprécié cet article et que tout était clair, intéressant et compréhensible.  

Si vous êtes à la recherche de services proxy exceptionnels pour vos projets de web scraping, n'oubliez pas de jeter un coup d'œil à ProxyScrape residential et premium proxys.