Mise à jour 02/05/2014 : cet article existe aussi maintenant en webcast! Merci le GUSS 😉
Vous le savez surement, Power Query est l’add-in Excel publié par Microsoft via son offre Power BI, dédié à l’import de données de sources multiples. On en avait déjà parlé pour importer des fichiers identiques dans un même XLSX, une grosse galère sous Excel nature, une balade avec Power Query.
Si nous sommes nombreux à voir en Power Query un outil avec un potentiel exceptionnel, il y a un domaine où il est encore assez faible : l’import de données affichées sur une page web. Enfin ce n’est pas vraiment Power Query qui est faible, c’est plutôt qu’après 2500 lignes de JavaScript, le HTML final des sites est souvent complétement inexploitable…
Et un outil fantastique pour contourner le problème c’est kimono. Avec kimono, vous allez générer de manière complétement graphique une API à partir d’un site web, directement depuis de votre navigateur.
On fait juste une pause pour bien laisser ça descendre…
Générer une API, de manière graphique, directement dans le navigateur.
On ne vit pas dans le futur avec ça franchement ? Pour moi c’est le scénario d’usage final. Et pour revenir au sujet du jour, ça les API web, Power Query il maîtrise.
Le mieux pour comprendre tout ça étant certainement de prendre un exemple, on va pratiquer en rapatriant des données depuis MetaCritic, le site web qui agrège les notes données dans la presse (papier ou web) à entre-autres les jeux vidéo.
La source : les meilleurs jeux PC de 2014
On va commencer en essayant de se connecter directement à MetaCritic via Power Query, pour constater l’inutilisabilité de la chose :
1 – Je lance Excel, direction l’onglet Power Query, option importer depuis un site web, puis je renseigne l’adresse du site source :
2 – Hum, le navigateur de Power Query ne s’en sort pas tout seul, on va creuser (Edit) :
3 – Et boum, bon courage ! Si quelqu’un a trouvé une méthode pour s’y retrouver, je suis preneur, moi j’abandonne là en général…
Alors à la place on va se connecter à kimono (on s’enregistre, on ajoute le bookmarklet à sa barre de raccourci) et créer l’API de manière graphique, c’est parti!
1 – J’ouvre mon navigateur, je vais sur le site source et j’utilise kimonify (le bookmarklet). La barre d’outils Kimono apparaît en haut de la page, et je commence par importer les noms des jeux juste en cliquant sur eux dans la page de MetaCritic. Le moteur de Kimono reconnait alors l’attribut HTML et identifie les 88 noms suivant, je renomme le champ « Nom du jeu » :
2 – J’appuie sur + dans la barre Kimono, je sélectionne la première note (92 pour DS2), la deuxième (88 pour Hearthstone), et à nouveau Kimono identifie les 88 valeurs suivantes. Je renomme le champs « Note »:
3 – Je répète la manip pour le Score Utilisateur, cette fois-ci le moteur de Kimono hésite un peu, il me propose plusieurs séries et à force de sélectionner d’autres scores et refuser d’autres attributs (ainsi que le label « User Score »), il m’en trouve bien 85 (en effet 3 jeux n’ont pas ce score, mais ça ne casse pas la reconnaissance):
4 – J’ai assez d’info pour le moment, je valide (Done dans la barre Kimono), je donne un nom à mon API, et une période de rafraichissement (temps réel pour la démo, mais on peut alléger la charge sur la source en ne rafraichissant le dataset que périodiquement):
5 – Et Kimono me renvoie vers le tableau de bord de mon API:
6 – Via l’onglet « How To Use » je retrouve les éléments nécessaires pour accéder à l’API, y compris les URL (endpoints) que je vais pouvoir transmettre à Power Query en JSON, CSS ou RSS :
7 – On peut d’ailleurs tester le EndPoint CSV (ouais je suis oldschool) tout de suite :
8 – Mais le mieux c’est de l’appeler directement depuis Power Query (From Web toujours) :
9 – Et après quelques petites manipulations (on retire la première ligne, on sépare les colonnes par délimiteur, on utiliser la première ligne comme nom de colonne, on nettoie le User Score, on filtre les lignes de déchet), on obtient le bon dataset. Note : si vous optez pour le JSON et que vous galérez, regardez cette vidéo, si ça ne marche pas comme ça, c’est que l’API est mal formée, le mieux est de la casser et recommencer (Kimono est encore en beta hein… Celle-là fonctionne et elle est publique).
10 – Pour obtenir les données attendues dans Excel :
Personnellement je trouve ça juste énorme ! Et en plus tout est en live, la Query dans Excel et l’API côté Kimono, donc il suffit de rafraîchir pour que les données soient mises à jour depuis la source.
Si on rajoute la gestion des paramètres pour l’année (2014, 2013…) côté Power Query, la gestion de la pagination côté Kimono, on a les briques de base pour extraire toute la donnée dont on peut avoir besoin !
Joli non? Et sinon oui, c’est le bon moment pour prendre des actions dans Kimono Labs 😉