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.
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.

NOTRE OFFRE DE FORMATIONS

Le CFO masqué vous offre un vaste choix de formations Excel et Power BI, réparties dans 8 catégories: Excel – Tableaux de bord, Excel – Modélisation financière, Excel – VBA, Excel – Power Tools, Excel – Ninja, Power BI, Analytique d’affaires et Finance corporative. Ces formations sont offertes en classe, en entreprise et en ligne. Nos formateurs sont des experts dans leur domaine et ils sont accrédités par Emploi-Québec et vous remettent un certificat, à la fin de chaque formation, que vous pouvez notamment utiliser pour faire reconnaître des heures de formation continue auprès de votre ordre professionnel. De plus, nos formations peuvent mener à l’obtention d’une accréditation.
Découvrez quelles formations vous conviennent
Pour info: 514-605-7112 ou [email protected]