Comment récupérer des données sur le Web à l’aide de Python ?

 

Vous devinez une façon simple de récupérer des données sur une page Web ? C’est par le biais d’une technique appelée web scraping.

Au cas où vous ne seriez pas familier avec le web scraping, voici une explication:

« Le web scraping est une technique logicielle informatique d’extraction d’informations à partir de sites web »

« Le web scraping se concentre sur la transformation de données non structurées sur le web, généralement au format HTML, en données structurées qui peuvent être stockées et analysées dans une base de données locale centrale ou une feuille de calcul. »

Certaines pages web vous facilitent la vie, elles offrent quelque chose appelé API, elles offrent une interface que vous pouvez utiliser pour télécharger des données. Des sites web comme Rotten tomatoes et Twitter fournissent une API pour accéder aux données. Mais si une page web ne fournit pas d’API, vous pouvez utiliser Python pour racler les données de cette page web.

Je vais utiliser deux modules Python pour racler les données.

 

Alors, êtes-vous prêt à racler une page web ? Tout ce que vous avez à faire pour commencer est de suivre les étapes données ci-dessous :

 

Comprendre les bases de l’HTML

Le scrapping est une question de balises html. Vous devez donc comprendre le html afin de pouvoir scraper des données.

Voici un exemple pour une page web minimale définie en balises HTML. La balise racine est <html> et ensuite vous avez la balise <head>  ; Elle comprend le titre de la page et peut également contenir d’autres méta-informations comme les mots-clés. La balise <body> inclut le contenu réel de la page. <h1> ; <h2> ;  <h3> ; <h4> ; <h5> ; et <h6> ; sont différents niveaux d’en-tête.

 

Voici quelques balises html utiles que vous devez connaître.

 

Je vous encourage à inspecter une page web et à consulter son code source pour mieux comprendre le html.

 

Scraping d’une page web à l’aide de Beautiful Soup

Je vais scraping des données à partir de bigdataexaminer.com. J’importe urllib2, beautiful soup(bs4), Pandas et Numpy.

import urllib2

  ; import bs4

  ; import pandas as pd

  ; import numpy as np

 

 

Quoi beautiful = urllib2.urlopen(url).read() fait, c’est qu’il va sur bigdataexaminer.com et récupère l’intégralité du texte html. Je le stocke ensuite dans une variable appelée beautiful.

Maintenant, je dois analyser et nettoyer le code HTML. BeautifulSoup est un module Python vraiment utile pour analyser les fichiers HTML et XML. Beautiful Soup donne un objetBeautifulSoup qui représente le document comme une structure de données imbriquée.

 

Prettify

Vous pouvez utiliser la fonction prettify() pour afficher différents niveaux du code HTML.

 

La façon la plus simple de naviguer dans l’arbre d’analyse est de dire le nom de la balise que vous voulez. Si vous voulez la balise <h1>  ;, dites simplement soupe.h1.prettify():

 

Contenus

soup.tag.contents retournera le contenu d’une balise sous forme de liste.

In[18] : soupe.head.contents

 

La fonction suivante retournera le titre présent à l’intérieur du tag head 

In[45] : x = soupe.head.title

Out [45] :<title></title>

.string renverra la chaîne présente à l’intérieur de la balise title de big data examiner. Comme big dataexaminer.com n’a pas de titre, la valeur renvoyée est None.

 

Descendants

Descendants vous permet d’itérer sur tous les enfants d’une balise, de manière récursive.

Vous pouvez également regarder les chaînes de caractères en utilisant .strings generator

In [56] : soupe.get_text()

extrait tout le texte de Big data examiner.com

 

FindALL

Vous pouvez utiliser Find_all() pour trouver toutes les ‘a’ balises de la page.

 

Pour obtenir les quatre premières balises ‘a’, vous pouvez utiliser l’attribut limit.

 

Pour trouver un texte particulier sur une page Web, vous pouvez utiliser l’attribut text avec find All.  ; Ici, je recherche le terme ‘data’ sur big data examiner.

 

Donnez-moi l’attribut de  ; la deuxième ‘a’ balise sur big data examiner.

 

Vous pouvez également utiliser une compréhension de liste pour obtenir les attributs des 4 premières balises ‘a’ sur bigdata examiner.

 

Conclusion

Un data scientist doit savoir comment gratter des données à partir de sites web, et j’espère que vous avez trouvé cet article utile comme introduction au web scraping avec Python. En dehors de beautiful soup, il existe une autre bibliothèque python utile appelée pattern pour le web scraping. J’ai également trouvé un bon tutoriel sur le web scraping en utilisant Python.

Au lieu de prendre le chemin difficile du web scraping en utilisant une configuration interne construite par vous à partir de zéro, vous pourriez toujours faire confiance en toute sécurité au service de web scraping de PromtCloud pour prendre la propriété de bout en bout de votre projet.

Le web scraping n’est pas qu’une question de  » codage  » en soi, vous devez être adepte du codage, des protocoles Internet, de l’entreposage de bases de données, de la demande de services, du nettoyage de code, de la conversion de données non structurées en données structurées, et même d’un peu d’apprentissage automatique de nos jours.