Leçon de Web Scraping avec Power BI

Publié le 05 juillet 2018
par Sophie Marchand M.Sc., CPA, CGA, MVP
Mvp award moteur de recherche

Leçon de Web Scraping avec Power BI

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:Moteur de recherche MVP

 

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.

Power BI Extraire à partir d'exemples

 

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.
 
Power BI extraction web

 

J’ai donc obtenu le résultat ci-dessous, avec le code M associé.
 
Power BI - Résultat extraction web

 

J’ai ensuite inséré un paramètre “Category” et je lui ai attribué la valeur de départ AI.
 
Power BI - Paramètre catégorie

 

J’ai ensuite modifié ma requête afin d’utiliser mon paramètre “Category” dans l’URL.
 
Power BI - À partir du web

 

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.
 
Texte entre les délimiteurs

 

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.
 
Drill down sur 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.

 

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.
 
Importation table catégories

 

Afin d’obtenir le nombre de MVPs par catégorie, j’ai ajouté une colonne qui appelle ma fonction fnTotalMVPs.

Invoquer fonction nouvelle colonne

 

J’ai obtenu ce qui suit:
 
Total MVP par catégorie

 

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.
 
Diviser par 18 et arrondir à l'entier supérieur

 

J’ai ensuite ajouté une colonne personnalisée pour créer la liste de pages qui sera utilisée pour chaque catégorie.
 
Ajout colonne liste des pages

 

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.
 
Liste des pages 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.
 
Paramètre Page Number

 

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.
 
URL web parts

 

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”.
 
Extraction AI

 

Une fois ma requête terminée, je l’ai convertie en fonction, que j’ai nommée fnMVPs.
 
Exemple AI page 1

 

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.
 
Ajout colonne fonction fnMVPs

 

J’ai donc obtenu le résultat suivant. Notez que certains MVPs ont 2 Award Category.
 
Exemple extractions MVPS

 

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.
 
Retraitement de l'information

 

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.
 
Rapport MVP 2018-2019


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 :

ahua blaise samouth
Écrit il y a 2 semaines
Formation très intéressante

Formation très intéressante

Sylvain LEPRÊTRE
Écrit il y a 8 mois
Formation très intéressante

Formation très intéressante si on veut monter au niveau supérieur dans Power Query


CFO-Masque_Formations-en-ligne_FB Le CFO masqué offre un vaste choix de formations en informatique décisionnelle avec Excel et Power BI, via un portail en ligne et à distance en temps réel, selon un calendrier. Si vous désirez organiser des formations privées, faites nous simplement parvenir un courriel à info@lecfomasque.com . Des certificats convenant aux normes de formation continue des divers ordres professionnels du Québec sont offerts pour l'ensemble des formations.  

Découvrez quelles formations vous conviennent

 

4 réflexions sur “Leçon de Web Scraping avec Power BI”

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

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Scroll to Top