Le terme web scraping est utilisé pour désigner une technique d’extraction de données d’un site web. Afin d’analyser les données concernant les détenteurs du titre MVP de Microsoft, que j’ai présentées dans l’article À nouveau Microsoft MVP pour 2018-2019, je partage avec vous quelques statistiques sur le programme, j’ai utilisé cette technique avec Power BI. Cet article vise à vous montrer comment j’ai procédé.
Site web d’origine
La technique décrite dans cet article a servi à extraire des informations contenues dans un moteur de recherche sur le site web suivant:
Extraction des données avec Power BI
1- Création d’une fonction pour déterminer le nombre de MVPs par catégorie
Afin d’extraire les données avec Power BI, j’ai d’abord cliqué sur Obtenir des données / Web et j’ai inséré l’URL du site web: https://mvp.microsoft.com/en-us/MvpSearch?kw=&x=16&y=12. Jusqu’à tout récemment, nous devions absolument “fouiller” dans l’architecture de la page web afin de trouver nos données et ça pouvait être très long, voire impossible d’aboutir aux données. À présent, une nouvelle fonctionnalité nous permet d’effectuer le travail beaucoup plus facilement. Il s’agit de l’option “Extraire la table à l’aide d’exemple”. C’est cette fonctionnalité que j’ai utilisée.
Cette option permet d’avoir un aperçu visuel de la page web. On peut ensuite insérer les informations que l’on cherche et charger Power BI de déterminer comment extraire l’information. Dans l’exemple ci-dessous, je cherchais d’abord à comprendre comment faire pour aller extraire le nombre total de MVPs par catégorie. Ce faisant, j’ai remarqué qu’en insérant une catégorie dans le moteur de recherche, la page web affichait la mention Results (nombre). J’ai donc simplement inséré cette information dans ma colonne d’exemple et j’ai cliqué sur OK.
J’ai donc obtenu le résultat ci-dessous, avec le code M associé.
J’ai ensuite inséré un paramètre “Category” et je lui ai attribué la valeur de départ AI.
J’ai ensuite modifié ma requête afin d’utiliser mon paramètre “Category” dans l’URL.
Afin d’extraire la valeur (le nombre de MVP) dans chaque catégorie, j’ai utilisé la fonctionnalité “Texte entre les délimiteurs” et j’ai inséré les parenthèses d’ouverture et de fermeture.
Ceci m’a permis de me débarrasser de la mention “Results “. J’ai ensuite cliqué sur la valeur avec le bouton droit de la souris et sélectionné “Drill-down”, afin d’extraire la valeur.
À ce stade-ci, je n’avais plus qu’à transformer ma requête en fonction (avec un clic droit de souris sur la requête). J’ai nommé cette fonction fnTotalMVPs.
Vous devez analyser de grandes quantités de données et les présenter dans des rapports et tableaux de bord, avec des indicateurs de performance pertinents ? Développez vos compétences avec nos formations en Power BI en français ou en anglais. |
---|
2 – Utilisation de la fonction pour trouver le nombre de pages par catégorie
J’ai ensuite importé dans une nouvelle requête, une table avec la liste de toutes les catégories de titres MVPs.
Afin d’obtenir le nombre de MVPs par catégorie, j’ai ajouté une colonne qui appelle ma fonction fnTotalMVPs.
J’ai obtenu ce qui suit:
Sachant qu’il y avait 18 MVP par page, j’ai ajouté une colonne personnalisée pour déterminer le nombre de pages par catégorie.
J’ai ensuite ajouté une colonne personnalisée pour créer la liste de pages qui sera utilisée pour chaque catégorie.
En développant le tout, j’ai obtenu une ligne par page. Autrement dit, j’ai obtenu la liste complète du nombre de pages du moteur de recherche et cela, présenté par catégorie.
3 – Création d’une fonction pour extraire les MVPs
J’ai d’abord créé un paramètre “PageNumber”, tel que spécifié ci-dessous.
Ceci m’a permis de briser l’URL afin de composer un URL qui pointe sur une catégorie et sur une page en particulier.
Par exemple, avec la catégorie AI et la page 1, j’ai pu extraire la première page des MVPs AI. À nouveau, j’ai utilisé l’extraction par exemple afin d’indiquer que je cherchais à extraire les “Name” (et j’ai tapé les 3 premiers noms), puis le Award Category (et j’ai tapé les 3 premières catégories) et finalement les “Country” (et j’ai tapé les 3 premiers pays). Power BI a compris ce que je cherchais à extraire et à compléter la liste pour moi. Ceci a permis de générer le code M nécessaire. Voici par exemple le code qui a été généré pour extraire les “Name”.
Une fois ma requête terminée, je l’ai convertie en fonction, que j’ai nommée fnMVPs.
Je suis donc retournée dans ma requête avec la liste complète de toutes les pages du site web par catégorie et j’ai ajouter une colonne qui appelle ma fonction fnMVPs.
J’ai donc obtenu le résultat suivant. Notez que certains MVPs ont 2 Award Category.
J’ai donc ajouté une colonne qui indique si l’individu est dans plus d’une catégorie et une autre avec le nom de ces catégories, le cas échéant.
Afin d’analyser les données, j’ai aussi été obligée de créer plusieurs mesures en DAX et d’ajuster mes calculs en fonction du fait que plusieurs MVPs sont “Anonymous” et répondent donc tous au même “Name”, ce qui faussait mon “DistinctCount”.
Au final, cela m’a permis de créer le rapport ci-dessous.
Fichier d’accompagnement VIP à télécharger
Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.
Formation complémentaire
Afin d’approfondir vos connaissances avec Power BI et plus particulièrement vos compétences avec l’éditeur de requête Power Query, nous vous recommandons notre formation Recettes magiques pour transformer vos données.
Voici quelques commentaires d’apprenants ayant suivi la formation en ligne Recettes magiques pour transformer vos données :
Bonjour
Je trouve cet article très intéressant, je tente de reproduire la démarche, mais Je bloque à l’étape 2 : Créer une table avec la liste de toutes les catégories de titres MVPs
Je ne comprends pas la méthode utilisée pour obtenir la liste. Est il possible d’avoir plus de détails
Merci
Bonjour Xavier,
D’abord, il faut savoir que Microsoft a modifié les catégories depuis la publication de cet article.
Comme il y a peu de catégories et qu’elles sont normalement fixes, j’ai simplement créé une table dans Excel avec la liste des catégories. Les nouvelles catégores sont sur la page suivante: https://mvp.microsoft.com/en-us/Pages/mvp-award-update.
Au plaisir,
Sophie
Bonjour
Merci d’avoir partagé cette fonctionnalité.
Je viens de tester de reproduire l’exemple donné. je suis arrivé jusqu’au bout. sauf que j’ai du créer manuellement dans Excel la liste des catégories. Je ne suis pas parvenu à importé dans une nouvelle requête, une table avec la liste de toutes les catégories de titres MVPs, point 2.
Est il possible d’avoir plus d’informations sur comme tu procèdes? Merci
Autre question : Sur ce travail, mon ordinateur reste pendant plusieurs très très longues minutes en actualisation des données, as tu une piste pour résoudre le problème
Je suis sous Windows 10 Pro x64, 8Mo de RAM, PowerBI x64
Xavier
Bonjour,
C’est normal que le temps de compilation des informations soit long… on demande de récupérer l’information de plusieurs dizaines de pages web.
Sophie