Comment créer un grattoir Web Python : extraire des données de n'importe quel site Web by@terieyenike
1,280 lectures

Comment créer un grattoir Web Python : extraire des données de n'importe quel site Web

2022/09/08
4 min
par @terieyenike 1,280 lectures
tldt arrow
FR
Read on Terminal Reader

Trop long; Pour lire

Python vous permet de récupérer ou de récupérer des données d'un site Web avec un script Python. Cette méthode de collecte de données est appelée web scraping. La plupart des sites Web ne veulent pas que vous grattiez leurs données, et pour savoir ce qui est légal et autorisé pour le grattage, les sites Web ont une page dédiée qui affiche les détails des terminaux autorisés. Dans cet exercice, nous récupérons la page d'accueil du contenu de l'actualité, ce que nous pouvons faire en fonction de l'agent utilisateur. Avec tout le script écrit, notre page devrait récupérer les données de la page d'accueil des nouvelles de YCombinator.
featured image - Comment créer un grattoir Web Python : extraire des données de n'importe quel site Web
Teri Eyenike HackerNoon profile picture

@terieyenike

Teri Eyenike

I am a frontend developer with a particular interest in...

Apprendre encore plus
LEARN MORE ABOUT @TERIEYENIKE'S EXPERTISE AND PLACE ON THE INTERNET.
react to story with heart

Dans cet article, nous allons créer un programme qui vous permet de récupérer ou de récupérer des données d'un site Web avec un script Python. Cette méthode de collecte de données est appelée web scraping.

Le scraping Web consiste à utiliser par programmation Python ou tout autre langage de programmation pour télécharger, nettoyer et utiliser les données d'une page Web. La plupart des sites Web ne veulent pas que vous grattiez leurs données, et pour savoir ce qui est légal et autorisé pour le grattage, les sites Web ont une page dédiée qui affiche les détails des terminaux autorisés.

Joignez robots.txt à la fin de n'importe quel lien pour en savoir plus sur les points de terminaison autorisés. Par exemple, utilisons https://news.ycombinator.com/robots.txt .

Le résultat devrait ressembler à ceci avec ce fichier texte ci-dessous :

image

La capture d'écran indique quels points de terminaison nous sommes autorisés et non autorisés à supprimer du site Web YCombinator. Un retard d'exploration signifie une pause lors du grattage des données du site Web avec des programmes, évitant ainsi de surcharger leurs serveurs et de ralentir le site Web en raison d'un grattage constant.

Dans cet exercice, nous récupérons la page d'accueil du contenu de l'actualité, ce que nous pouvons faire en fonction de l'agent utilisateur.

Commencer

Le scraper Web Python nécessite deux modules nécessaires pour scraper les données :

  • Belle soupe
  • Demandes

Belle soupe

Beautiful Soup est une bibliothèque Python pour extraire des données à partir de fichiers HTML. Il modifie le fichier à l'aide d'un analyseur, transforme les données en un document précieux et évite aux programmeurs des heures de travail manuel et répétitif.

Demandes

La bibliothèque HTTP des requêtes permet de télécharger des fichiers HTML en utilisant le lien vers le site Web avec le

 .get()
fonction.

Création d'un grattoir Web

Passons maintenant aux détails de ce projet. Créez un nouveau répertoire, et là-dedans, un fichier qui contiendra tous les scripts du programme Web Scraper.

Copiez et collez le code suivant :

 # app.py import requests response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text print(yc_web_page)

Le code ci-dessus effectue les opérations suivantes :

  • Importer le
     requests
    module
  • En utilisant la variable de réponse, les requêtes attachées au
     .get()
    fonction télécharger les fichiers HTML à partir du lien du site Web fourni
  • Lire le contenu de la page Web avec
     .text

Si vous exécutez ce code avec la commande python

 app.py
et cela ne vous donne aucune sortie, cela signifie que les deux modules importés doivent être installés.

Exécutez les commandes suivantes pour installer les modules.

 pip3 install requests pip install beautifulsoup4

Le résultat du code source devrait ressembler à ceci :

image

Ensuite, mettons à jour le

 app.py
fichier avec le reste du code en utilisant une belle soupe :

 # main.py import requests from bs4 import BeautifulSoup # add this
response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text # add this 
soup = BeautifulSoup(yc_web_page, 'html.parser' ) article_tag = soup.find(name= "a" , class_= 'titlelink' ) article_title = article_tag.get_text() article_link = article_tag.get( 'href' ) article_upvote = soup.find(name= "span" , class_= "score" ).get_text() result = {  "title" : article_title,  "link" : article_link,  "point" : article_upvote } print(result)

Suivez l'extrait de code ci-dessus en procédant comme suit :

  • Importer la fonction BeautifulSoup du module bs4
  • Ensuite, utilisez la variable soupe pour analyser le document à partir du
     yc_web_page
    en utilisant la fonction BeautifulSoup et
     html.parser
    pour récupérer les fichiers HTML

Avant de parcourir le reste du code, ouvrons notre navigateur Web avec le lien fourni dans

 .get()

Ensuite, cliquez avec le bouton droit sur la page et cliquez sur inspecter pour afficher l'onglet des éléments de la page d'actualités de YCombinator .

Notre page Web devrait ressembler à ceci :

image

Avec Beautiful Soup, nous pouvons cibler des éléments spécifiques sur la page avec leurs noms de classe :

  • En attribuant la variable article_tag, chaque élément de la page a un nom de balise utilisant le
     find()
    fonction avec le nom de l'élément, la balise a et la
     class_
    avec un trait de soulignement. Ceci est fait pour empêcher un écrasement de la classe dans l'élément sur la page Web
image
  • Maintenant, nous voulons extraire l'un des titres de lien du
     article_tag
    en utilisant le
     .get_text()
    fonction
  • Ensuite, extrayez le lien du
     article_tag
    en utilisant l'attribut
     href
    avec le
     .get()
    fonction
  • Il en va de même pour le
     article_upvote
    variable, où le nom de la balise,
     <span>
    , et le nom de la classe sont utilisés pour extraire les points pour chaque lien d'article
  • Créer un résultat variable qui affichera les données extraites sous forme de dictionnaire avec la paire clé et valeur
  • Imprimez le résultat final

Avec tout le script écrit, notre page devrait récupérer les données de la page d'accueil des nouvelles de YCombinator et ressembler à ceci :

image

Conclusion

Cet article vous a appris à utiliser Python Web Scraper pour extraire des données d'une page Web.

De plus, les fonctionnalités de l'utilisation d'un grattoir Web sont qu'il permet d'économiser du temps et des efforts en produisant de grands ensembles de données plus rapidement plutôt que manuellement.

Apprendre encore plus

HISTOIRES CONNEXES

L O A D I N G
. . . comments & more!
Hackernoon hq - po box 2206, edwards, colorado 81632, usa