
Scraping Wikipedia dans Alteryx
Bonjour à tous ! Aujourd’hui, je souhaiterais vous montrer comment nous pouvons utiliser Alteryx pour scraper des données sur Wikipedia ! Cependant, le principe restera le même avec la majorité des sites webs statiques. Sans rentrer dans les détails, la plupart des sites d’informations renvoient du contenu statique pour des raisons d’optimisation SEO. Wikipedia est un bon exemple mais les sites d’informations en sont d’autres.
Le site le plus adapté au web scraping est probablement Wikipedia. C’est une mine d’informations sans fin et il accepte les robots sans tenter de les bloquer. Par ailleurs, sa structure html est particulièrement bien lisible. Pour terminer, il dispose même d’une API que vous pourriez utiliser ce qui signifie que vous n’auriez même pas besoin de faire du scraping : https://www.mediawiki.org/wiki/API:Main_page
1/ Télécharger une page Wikipedia
Alors j’ai besoin d’un docteur donc je vais aller chercher un hôpital dans Paris. Figurez-vous qu’il y a une page Wikipedia listant des hôpitaux à Paris, n’est-ce pas merveilleux? Je vais télécharger cette page avec Alteryx mais vous pouvez le faire à la main. Pour cela, je rentre l’url https://fr.wikipedia.org/wiki/Liste_des_hôpitaux_et_hospices_de_Paris dans un champ input, je rajoute un outil Download puis un outil Select pour ne garder que le champ DownloadData. Pour terminer, j’enregistre le résultat dans un fichier result.html.
Vous avez ci-dessous un résumé visuel des étapes effectuées (n’hésitez pas à ouvrir l’image dans un nouvel onglet si celle-ci est trop petite sur votre écran).
NB: vous pouvez tout à fait télécharger à la main cette url mais je trouve intéressant de montrer comment il est possible de le faire dans Alteryx si vous avez des gros besoins de data-scraping.
2/ Scraping du contenu
Une fois que vous avez enregistré en local votre page web, il vous sera possible de l’analyser dans Alteryx en faisant tourner votre workflow comme vous le souhaitez autant de fois que vous le voulez sans forcer le téléchargement à chaque fois.
Vous pouvez donc charger le contenu html avec un outil Input comme si c’était un fichier csv avec une seule colonne. Faites attention car, par défaut, Alteryx propose une longueur de champ de 254 qui sera dépassée par la taille de notre fichier. N’oubliez donc pas d’augmenter la taille des champs. Par ailleurs, votre fichier contenant plusieurs lignes de html il vous faudra rajouter un outil Summarize pour concaténer le tout.
2.1/ balises ul
Ensuite, ouvrez la page wikipedia en question avec votre éditeur de texte favori (Notepad++ est mon choix de prédilection). Vous verrez alors que les informations relatives aux hôpitaux recherchés sont situées dans des balises <ul>. Nous allons donc rajouter un outil Parse XML paramétré pour récupérer les éléments ul dans le document.
Vous devriez ainsi obtenir 38 enregistrements qui correspondent à autant de balises <ul> présentes dans votre document. Dans le langage html, les balises ul correspondent à l’abbréviation « unordered list » ou liste non ordonnée. Il vous faudra adapter votre workflow en fonction de la structure du document html que vous souhaitez analyser.
2.2/ balises li
L’étape suivante consistera à récupérer les balises <li> correspondant à chaque élément des listes des hôpitaux. Pour cela, je répète les étapes précédentes en rajoutant un outil XML Parse. J’y indique ensuite rechercher les balises <li> dans le champ ul_OuterXml pour y récupérer les valeurs enfants contenues dans ces balises.
Je remarque dans mon cas que les données intéressantes sont situées dans les colonnes a, li et a_href. Je renomme donc les champs en fonction de ce qu’ils signifient pour moi. A ce stade, tout dépendra de ce que vous cherchez à récupérer, il faut toujours faire preuve d’astuce et d’ingéniosité pour récupérer les données qui vous intéressent ! Notez que j’ai pu récupérer des liens de redirection html pour chaque hôpital. Ces liens correspondent à la page wikipedia de l’hôpital en question quand celle-ci existe. Libre à vous de construire un flux Alteryx qui va ensuite télécharger les pages de chaque hôpital si vous souhaitez obtenir plus d’informations sur le sujet 😉 .
3/ Nettoyage des données
De manière générale en effectuant un parsing basique comme celui que nous venons de faire il y aura toujours une phase de nettoyage des données. Dans notre exemple, il y a un certain nombre d’enregistrements qui ont été récupérés sans qu’ils ne correspondent à des hôpitaux :
En général, l’utilisation de l’outil Summarize, Filter et Formula devraient suffire à obtenir des données plus propre. Dans mon cas, je me concentre sur l’obtention des Hôpitaux dont l’adresse est renseignée. J’ai besoin de savoir où se trouvent les hôpitaux parisiens après tout !
Et voilà, je n’ai plus qu’à me rendre à l’hôpital le plus proche de chez moi ! Voici comment vous pouvez relativement simplement effectuer du Scraping sur un site comme Wikipedia ! 🙂 N’hésitez pas à me faire part de vos commentaires et à me partager vos applications de Web Scraping !
Une très bonne journée ! 🙂