8. Vous enseigner les méthodes et concepts
de base pour récupérer et traiter des
informations issues du web.
1. qui se trouvent sur une page web
(Wikipedia…)
2. qui se trouvent dans des documents
numériques (PDF, Word…) 8
10. MATIN
9h30: Introduction
10h: Web Scraping
12h30: Lunch
APRÈS-MIDI
14h: Fouille de texte
?h: formation à la demande
17h30: Fin de la formation
1
0
18. Nom Naissance Parti
Charles Michel 21/12/1975 MR
Elio Di Rupo 18/07/1951 PS
Yves Leterme 06/10/1960 CD&V
Herman Van Rompuy 31/10/1947 CD&V
… … …
18
19. Processus qui consiste à convertir
automatiquement des ressources présentes sur le
web (HTML) en un format structuré.
Un script informatique parcourt une série de
pages web et extrait certains éléments.
Le résultat est le plus souvent renvoyé sous forme
de tableau (csv, Excel…).
19
20. 20
Comment parcourir automatiquement des pages
web ?
Comment sélectionner des éléments précis au sein
de ces pages web ?
Au fait, c’est quoi une page web ?
21. 21
import urllib2
from bs4 import BeautifulSoup
url = "https://fr.wikipedia.org/wiki/Charles_Michel »
page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
tags = soup.findAll('a')
for el in tags:
print(el.contents)
https://repl.it/repls/UncomfortableEsteemedHexagon
26. Dès que je dis « regardez ! », merci de
lever les yeux pour regarder ce que je fais.
Quand je dis « c’est à vous », vous
pouvez commencer à reproduire ce que j’ai
montré
26
28. 28
Installez le plugin Chrome Web Scraper
A partir de la page
https://fr.wikipedia.org/wiki/Liste_:_Premiers_ministres_de_Be
lgique :
1. Récupérez la date de naissance, le lieu de naissance et le parti
politique des 51 Premiers ministres.
2. Exportez le résultat en CSV
Exercice 1 (10 minutes)
29. 1. Rendez-vous sur la page de départ. Copiez l’URL de cette page.
2. Ouvrez le web développer de Chrome ("inspecter), et allez dans l’onglet web scraper.
3. Créez une nouvelle « Sitemap » en indiquant comme « Start URL » celle de votre page de départ.
Donnez un nom à votre sitemap, par exemple « test »
4. Cliquez sur « add new selector ». Une fois l’outil ouvert, cliquez sur « select » et donnez quelques
exemples de ce que vous voulez sélectionner, jusqu’à ce que le logiciel comprenne. N’oubliez pas de
cliquer ensuite sur « Done selecting ! ».
5. Sélectionnez dans la liste déroulante « Type » la catégorie adéquate (par exemple « links »), cochez
au besoin la case « Multiple ». Donnez un nom au sélecteur et sauvegardez.
6. Cliquez sur le sélecteur que vous venez de créer. En même temps, cliquez sur l’un des liens de la
page afin d’afficher à l’écran les informations que vous souhaitez récupérer.
7. Ajoutez de nouveaux sélecteurs pour extraire des éléments de la page (comme aux étapes 4 et 5).
8. Une fois terminé, cliquez sur le menu « Sitemap test », puis sur « scrape ». Patientez.
9. Une fois le scraping terminé, cliquez sur « refresh ».
10. Si le résultat vous convient, cliquez à nouveau sur « sitemap test», puis sur « Export data as CSV ».
Sauvegardez le CSV sur votre bureau.
29
30. 30
Suite de la démonstration avec le plugin Web scraper:
https://www.youtube.com/watch?v=-cxNhoVufEo
31. 31
A partir de https://scrapethissite.com/pages/forms/ :
1. Créez un scraper capable de récupérer les résultats de
l’équipe Chicago Blackhawks (et seulement cette équipe)
2. Exportez le résultat en CSV
Exercice 2 (10 minutes)
32. 32
Web scraper Chrome est très bon pour suivre une liste
d’URLs ou une pagination.
Problème : parfois, il n’existe pas de liste d’URL réunies
sur une page, ni de « page suivante ».
Astuce : récréer soi-même des URLs :
https://www.neodownloader.com/tools/link-builder/
33. 33
A l’aide de Link Builder : https://www.neodownloader.com/tools/link-
builder/ (ou de Manipulist : https://manipulist.com/app/toolkit )
Et à partir du fichier Excel REFNIS 2019 : https://statbel.fgov.be/fr/propos-
de-statbel/methodologie/classifications/geographie
Et à partir de la page des résultats électoraux à la Chambre:
https://elections2019.belgium.be/fr/resultats-
chiffres?el=CK&id=CKK21016
1. Reconstruisez les URL vers les résultats des 19 cantons-communes de BXL
2. Scrapez chaque tableau de résultats avec Web Scraper Chrome
Exercice 3 (10 minutes)
34. 34
1. Récupérer (ou créer) une liste d’ URLS (ou
naviguer vers elles)
2. Récupérer le code source des pages
3. Extraire un ou plusieurs éléments bruts de ce
code HTML (un élément avec toutes ses
balises)
4. Extraire ce qui nous intéresse dans le ou les
éléments bruts en question (texte, lien, etc…)
36. 36
Site web de Bruxelles Mobilité : https://mobilite-
mobiliteit.brussels/fr
Comment récupérer l’emplacement des stations
Villo ?
37. 37
A partir du site web « Bruxelles sous surveillance » :
https://bruxelles.sous-surveillance.net/
Et l’aide du convertisseur JSON to CSV suivant :
http://www.convertcsv.com/json-to-csv.htm
1. Récupérez les données du site sous forme de tableau (CSV,
Excel…)
Exercice 4 (10 minutes)
38. 38
A partir du site du Moniteur Belge :
http://www.ejustice.just.fgov.be/doc/rech_f.htm :
1. Récupérez les liens vers les 670 articles qui contiennent le
mot « immigration »
Astuce : jetez un œil d’abord au code source de la page de résultats
Exercice 5 (facultatif)
41. 1. Extensions Google Chrome
Web scraper Chrome (pour scraper des pages web)
Selector Gadget (pour identifier les sélecteurs CSS)
PickyJSON (pour afficher dans le navigateur des JSON formatés)
2. Convertisseur en ligne
http://www.convertcsv.com/json-to-csv.htm
41
60. ISBN TITLE AUTHOR PUBDATE PUBLISHER PUBLOCATION
9783640246991
Les Misérables -
Tome I - Fantine
Victor Hugo 2009-01-19 GRIN Publishing London
9782807302150
Introduction aux
humanités
numériques :
méthodes et
pratiques
Seth VanHooland 2016-06-05
de Boeck
Supérieur
Bruxelles
9782075047449
Notre-Dame de
Paris
Victor Hugo 2015-05-21 Gallimard Paris
9782253087663
Vernon Subutex
Tome 1
Virginie Despentes 2016-03-02 Grasset Paris
6
0
61. ISBN,TITLE,AUTHORS,PUBDATE,PUBLISHER,PUBLOCATION
9783640246991,Les Misérables - Tome I - Fantine,Hugo Victor,19/01/2009,GRIN
Publishing,London
9782807302150,Introduction aux humanités numériques : méthodes et pratiques,Seth
Van Hooland,05/06/2016,de Boeck Supérieur,Bruxelles
9782075047449,Notre-Dame de Paris,Victor Hugo,21/05/2015,Gallimard,Paris
9782253087663,Vernon Subutex Tome 1,Virginie Despentes,02/03/2016,Graset,Paris
6
1
63. ISBN;TITLE;AUTHORS;PUBDATE;PUBLISHER;PUBLOCATION
9783640246991;Les Misérables - Tome I - Fantine;Hugo Victor;19/01/2009;GRIN
Publishing;London
9782807302150;Introduction aux humanités numériques : méthodes et pratiques;Seth
Van Hooland;05/06/2016;de Boeck Supérieur;Bruxelles
9782075047449;Notre-Dame de Paris;Victor Hugo;21/05/2015;Gallimard;Paris
9782253087663;Vernon Subutex Tome 1;Virginie Despentes;02/03/2016;Graset;Paris
6
3
68. 68
Exemples
Géolocalisation gratuite (Flandre et Bruxelles uniquement)
https://loc.geopunt.be/v4/Location?q=50%20avenue%20Franklin%20Roosevelt
Où se trouve la Station spatiale internationale en ce moment ?
http://api.open-notify.org/iss-now.json
Infos sur les pages ‘Einstein’ dans Wikipedia fr
https://fr.wikipedia.org/w/api.php?format=json&action=query&generator=search&
gsrnamespace=0&gsrsearch=einstein&gsrlimit=20&prop=categories%7Cextracts
%7Cinfo%7Crevisions%7Cpageprops&inprop=url&ppprop=wikibase_item&rvprop
=content&exintro=&explaintext=&exsentences=2&exlimit=max&cllimit=max
71. 71
Exemple avec Open Refine
Avenue de l'Héliport 22 b55 1000 Bruxelles
Avenue de Broqueville 2 1150 Woluwe-Saint-Pierre
Auguste Reyerslaan 15 b6 1030 Schaerbeek
Duivenstraat 34 8940 Wervik
Rue du Lombard 43 1000 Bruxelles
72. 72
Application Programming Interface
Ensemble de codes et protocoles qui permettent
à deux logiciels de communiquer
Les APIs web (REST) utilisent des requêtes
HTTP
Résultats fournis aux formats JSON ou XML
79. 79
Copiez-collez ces cinq adresses dans Open Refine
Avenue de l'Héliport 22 b55 1000 Bruxelles
Avenue de Broqueville 2 1150 Woluwe-Saint-Pierre
Auguste Reyerslaan 15 b6 1030 Schaerbeek
Duivenstraat 34 8940 Wervik
Rue du Lombard 43 1000 Bruxelles
Retrouvez leur latitude et longitude avec l’API suivante :
https://loc.geopunt.be/v4/Location?q=50%20avenue%20Franklin%20Roosevelt
Exercice
80. 80
Créer un projet OpenRefine (clipboard, collez les adresses)
Créer des urls avec « add column based on… »:
‘https://loc.geopunt.be/v4/Location?q=‘ + value.escape(‘url’)
Créer une nouvelle colonne à partir des URL en utilisant
« Fetch URLs » (Réduire le Throttle Delay à 1000
milisecondes)
Parser le JSON : value.parseJson().LocationResult[0].Municipality
Etapes effectuées
82. 82
Lire la documentation
Obtenir une clé ou un token, si nécessaire
Tester éventuellement les paramètres dans une sandbox ou
dans un logiciel comme Postman
Note : la fonction « fetch URLs » d’OpenRefine ne peut envoyer
que des requêtes GET (mais on peut utiliser Python à la place)
Etapes à suivre