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 :
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.
Le scraper Web Python nécessite deux modules nécessaires pour scraper les données :
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.
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.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 :
requests
module .get()
fonction télécharger les fichiers HTML à partir du lien du site Web fourni .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 :
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 :
yc_web_page
en utilisant la fonction BeautifulSoup et html.parser
pour récupérer les fichiers HTMLAvant 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 :
Avec Beautiful Soup, nous pouvons cibler des éléments spécifiques sur la page avec leurs noms de classe :
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 article_tag
en utilisant le .get_text()
fonction article_tag
en utilisant l'attribut href
avec le .get()
fonction 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'articleAvec 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 :
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.