Lorsque nous menons des projets liés aux données, tels que la surveillance des prix, l’analyse commerciale ou l’agrégation de nouvelles, nous avons toujours besoin d’extraire les données des sites Web. Dû au nombre géant de données en besoin, copier et coller les données ligne par ligne est impossible. Cet article va vous initier à faire du web scraping avec python en donnant un guide étape par étape.
Étape 0 : Introduction
Le web scraping est une technique qui pourrait nous aider à transformer des données HTML non structurées en données structurées dans un tableau ou une base de données. Outre l’utilisation de Python pour écrire des codes, l’accès aux données d’un site Web à l’aide d’une API ou d’outils d’extraction de données comme Octoparse sont également des options alternatives pour le web scraping.
Certains grands sites Web, comme Airbnb ou Twitter, fournissent des API aux développeurs pour accéder à leurs données. API signifie Application Programming Interface (interface de programmation d’applications), qui est l’accès permettant à deux applications de communiquer entre elles. Cependant, la plupart des sites Web ne proposent pas de services API. Parfois, même s’ils fournissent une API, les données que vous pouvez obtenir ne sont pas celles que vous souhaitez. Par conséquent, l’écriture d’un script python pour construire un robot d’exploration du Web devient une autre solution puissante et flexible.
Alors pourquoi devrions-nous utiliser python plutôt que d’autres langages ?
- Flexibilité
Comme nous le savons, les sites Web se mettent à jour rapidement. Non seulement le contenu mais aussi la structure du site changent fréquemment. Python est un langage facile à utiliser car il est dynamiquement imputable et hautement productif. Par conséquent, les gens peuvent modifier leur code facilement et suivre la vitesse des mises à jour du Web.
- Puissant
Python dispose d’une grande collection de bibliothèques matures. Par exemple, requests, beautifulsoup4 peuvent nous aider à récupérer des URLs et à extraire des informations des pages Web. Selenium pourrait nous aider à éviter certaines techniques anti-scraping en donnant aux crawlers web la capacité d’imiter les comportements de navigation humains. En outre, re, numpy et pandas peuvent nous aider à nettoyer et à traiter les données.
Commençons maintenant notre voyage sur le web scraping en utilisant Python !
Étape 1 : Importer la bibliothèque Python
Dans ce tutoriel, nous allons vous montrer comment récupérer les avis de Yelp. Nous allons utiliser deux bibliothèques : BeautifulSoup dans bs4 et request dans urllib. Ces deux bibliothèques sont couramment utilisées pour construire un crawler web avec Python. La première étape consiste à importer ces deux bibliothèques dans Python afin de pouvoir utiliser les fonctions de ces bibliothèques.
Étape 2 : Extraire le HTML de la page web
Nous devons extraire les commentaires de “https://www.yelp.com/biz/milk-and-cream-cereal-bar-new-york?osq=Ice+Cream“. Tout d’abord, sauvegardons l’URL dans une variable appelée URL. Ensuite, nous pourrons accéder au contenu de cette page web et enregistrer le HTML dans “ourUrl” en utilisant la fonction urlopen() dans la requête.
Ensuite, nous appliquons BeautifulSoup pour analyser la page.
Maintenant que nous avons la “soupe”, qui est le HTML brut de ce site Web, nous pouvons utiliser une fonction appelée prettify() pour nettoyer les données brutes et les imprimer pour voir la structure imbriquée du HTML dans la “soupe”.
Étape 3 : Localiser et récupérer les critiques
Ensuite, nous devrions trouver les revues HTML de cette page web, les extraire et les stocker. Pour chaque élément de la page web, ils auraient toujours un “ID” HTML unique. Pour vérifier leur ID, nous devrions les INSPECTER sur une page Web.
Après avoir cliqué sur “Inspecter l’élément” (ou “Inspecter”, selon les différents navigateurs), nous avons pu voir le HTML des commentaires.
Dans ce cas, les avis sont situés sous la balise “p”. Nous allons donc d’abord utiliser la fonction find_all() pour trouver le nœud parent de ces commentaires. Puis nous localiserons tous les éléments avec le tag “p” sous le noeud parent dans une boucle. Après avoir trouvé tous les éléments “p”, nous les stockons dans une liste vide appelée “review”.
Maintenant nous obtenons tous les avis de cette page. Voyons combien d’avis nous avons extrait.
Étape 4 : Nettoyer les examens
Vous devez remarquer qu’il y a encore des textes inutiles comme “<p lang=’en’>” au début de chaque critique, “<br/>” au milieu des critiques et “</p>” à la fin de chaque critique.
“<br/>” correspond à un simple saut de ligne. Nous n’avons pas besoin d’un saut de ligne dans les critiques, nous devrons donc les supprimer. De même, “<p lang=’en’>” et “</p>” sont le début et la fin du HTML et nous devons également les supprimer.
Enfin, nous avons réussi à obtenir tous les avis propres avec moins de 20 lignes de code.
Il ne s’agit ici que d’une démo pour récupérer 20 avis de Yelp. Mais dans des cas réels, nous pouvons avoir à faire face à beaucoup d’autres situations. Par exemple, nous aurons besoin d’étapes comme la pagination pour aller sur d’autres pages et extraire les autres avis pour cette boutique. Ou nous devrons également extraire d’autres informations comme le nom de l’évaluateur, sa localisation, l’heure de l’évaluation, la note, le check-in……. Ou il faut régler les Capthchas…
Pour mettre en œuvre l’opération ci-dessus et obtenir plus de données, nous devrions apprendre plus de fonctions et de bibliothèques telles que Selenium ou les expressions régulières. Il serait intéressant de consacrer plus de temps à l’étude des défis du web scraping.
Bonus : Web scraping avec outil nocode
Toutefois, si vous cherchez des moyens simples de faire du web scraping, Octoparse pourrait être votre solution. Octoparse est un puissant outil de web scraping qui peut vous aider à obtenir facilement des informations sur des sites Web. Consultez ce tutoriel pour savoir comment récupérer des avis sur Yelp avec Octoparse. N’hésitez pas à nous contacter si vous avez besoin d’un puissant outil de scraping Web pour votre entreprise ou votre projet !