SlideShare une entreprise Scribd logo
1  sur  82
ETTORE RIZZA
AJPro Summer School 2019
2019-08-26
1
2
3
4
http://appsso.eurostat.ec.europa.eu/nui/show.do?dataset=demo_gind&lang=en
5
6
https://www.foodweb.be/operator/Public/SearchOperator.aspx?language=fr
7http://www.etat.lu/mesoc/entr/archives/frame/index.php?year=2016
 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
http://data.blog.lemonde.fr/2016/04/
08/panama-papers-un-defi- technique-
pour-le-journalisme-de- donnees/
Comment les journalistes du
Monde ont recherché des
numéros d’entreprises français
dans les Panama Papers
9
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
PARTIE 1
LE WEB SCRAPING
1
1
1
2
1
3
3
5
En quoi est-ce inédit ? Lister toutes les
nouveautés de cette nomination.
1
5
51 chefs de
gouvernement
16
https://fr.wikipedia.org/wiki/Liste_des_
Premiers_ministres_de_Belgique
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
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
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
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
22
23
https://github.com/ettorerizza/AJPRO_dataj/blob/master/scraping%20scrutin%202019/code/scraping_elec
tions_2019.R
24
25
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
27
 http://example.webscraping.com/
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)
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
Suite de la démonstration avec le plugin Web scraper:
https://www.youtube.com/watch?v=-cxNhoVufEo
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
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
 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
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…)
35
Infinite scrolling : https://scrollmagic.io/examples/advanced/infinite_scrolling.html (solution
: https://forum.webscraper.io/t/infinite-scroll/1385 )
Element click : https://www.transfermarkt.com/
CAPTCHAs : http://testing-ground.scraping.pro/captcha
Résultats limités :
https://www.memoiredeshommes.sga.defense.gouv.fr/fr/arkotheque/client/mdh/recherche_transversal
e/bases_nominatives.php
AJAX (Asynchronous JavaScript and XML)
36
Site web de Bruxelles Mobilité : https://mobilite-
mobiliteit.brussels/fr
Comment récupérer l’emplacement des stations
Villo ?
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
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)
Source :
http://www.storybench.org/to-
scrape-or-not-to-scrape-the-
technical-and-ethical-challenges-of-
collecting-data-off-the-web/
39
 Documentation : https://www.webscraper.io/documentation
 Tutos : https://www.webscraper.io/tutorials
 Forum : https://forum.webscraper.io/latest
40
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
42
ANNEXES
RAPPELS
TECHNIQUES
4
3
Slides empruntés à Garrett Grolemund : https://github.com/rstudio/webinars
 https://www.w3schools.com/code/tryit.asp?filename=FTXZ66BI3AEH
51
 https://www.w3schools.com/cssref/trysel.asp
52
 http://xpather.com/HTumUskh
59
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
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
ISBN,TITLE,AUTHORS,PUBDATE,PUBLISHER,PUBLOCATION
9783640246991,Les Misérables - Tome I - Fantine,Hugo Victor,19/01/2009,GRIN
Publishing,London
6
2
9782807302150,Introduction aux humanités numériques : méthodes et pratiques,Seth
Van Hooland,05/06/2016,de Boeck Supérieur,Bruxelles
…
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
4
9
{
"9782075047449": {
"publisher": {
"publisher_name": "Gallimard",
"publisher_location": "Paris"
},
"title": "Notre-Dame de Paris",
"authors": {
"author": "Victor Hugo"
},
"pubdate": "2015-05-21",
"tags": {
"tag": [
"Romans - Historique",
"Classics",
"Juvenile Fiction",
"General"
]
}
}
}
<?xml version='1.0' encoding='utf-8’?>
<ma_bibliotheque>
<book>
<publisher>de Boeck Supérieur</publisher>
<isbn>9782807302150</isbn>
<title>Introduction aux humanités numériques : méthodes et pratiques</title>
<authors>
<author>Seth Van Hooland</author>
<author>Florence Gillet</author>
<author>Simon Hengchen</author>
<author>Max De Wilde</author>
</authors>
<pubdate>2016-06-05</pubdate>
</book>
</ma_bibliotheque>
6
5
Bonus
Les APIs
66
67
Geolocalisation
 https://loc.geopunt.be/v4/Location?q=Avenue+Franklin+Roosevelt+5
0+1050+Bruxelles
Wikipedia
 https://fr.wikipedia.org/w/api.php?action=query&format=json&list=s
earch&utf8=1&srsearch=bruxelles
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
69
Application Programming Interface
Comme un site web, mais en XML ou JSON plutôt
qu’en HTML
Permettent d’automatiser des tâches
70
Exemple avec Open Refine
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
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
73
Source : https://github.com/rstudio/webinars
JSON
XML
…
GET
POST
…
74
 Google Maps (API) :
https://maps.googleapis.com/maps/api/geocode/json?address=
Avenue+Franklin+Roosevelt+50,+1000+Bruxelles
&key=YOUR_API_KEY
 Documentation :
https://developers.google.com/maps/documentation/geocoding/intro#geocoding
75
Google Maps (version HTML)
Google Maps (API)
76
1. Connectez-vous au compte que vous avez créé dans
https://labs.cognitiveclass.ai/login?logout=true
2. Installez le plugin Chrome PickyJSon
77
78
Parsing des résultats
Démonstration avec Open Refine
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
 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
81
 https://www.programmableweb.com/category/all/apis?page=1
 https://github.com/toddmotto/public-apis
Exemples:
 Google Maps
 Facebook
 Twitter
 Flickr
 The Open Movie Database (OMDb)
 …
Pour dénicher des APIs :
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

Contenu connexe

Similaire à Initiation au Web scraping - AJPro

Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
Guide de la recherche sur internet
Guide de la recherche sur internetGuide de la recherche sur internet
Guide de la recherche sur internetYoussef Bensafi
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
25emes journées du_rndh_atelier_ff19-10-2012
25emes journées du_rndh_atelier_ff19-10-201225emes journées du_rndh_atelier_ff19-10-2012
25emes journées du_rndh_atelier_ff19-10-2012URFIST de Paris
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutantKorteby Farouk
 
Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...
Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...
Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...Morgan Magnin
 
Les extensions Firefox et Google Chrome pour naviguer efficacement
Les extensions Firefox et Google Chrome pour naviguer efficacementLes extensions Firefox et Google Chrome pour naviguer efficacement
Les extensions Firefox et Google Chrome pour naviguer efficacementURFIST de Paris
 
Web Perf : par où commencer ? #SEOGoodVibes
Web Perf : par où commencer ? #SEOGoodVibesWeb Perf : par où commencer ? #SEOGoodVibes
Web Perf : par où commencer ? #SEOGoodVibesiProspect France
 
Webperf : par où commencer ? - SEOGoodVibes
Webperf : par où commencer ? - SEOGoodVibesWebperf : par où commencer ? - SEOGoodVibes
Webperf : par où commencer ? - SEOGoodVibesMadeline Pinthon
 
Outils Indispensables pour vs navigateurs web
Outils Indispensables pour vs navigateurs webOutils Indispensables pour vs navigateurs web
Outils Indispensables pour vs navigateurs webYannick Pavard
 
Visualisation des données et Open data (Introduction)
Visualisation des données et Open data (Introduction)Visualisation des données et Open data (Introduction)
Visualisation des données et Open data (Introduction)at Backbook
 
Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEODimitri Brunel
 
Communiqué de presse TYPO3 V4.4
Communiqué de presse TYPO3 V4.4Communiqué de presse TYPO3 V4.4
Communiqué de presse TYPO3 V4.4Christophe Delauve
 
Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...
Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...
Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...URFIST de Paris
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web componentsFrancois ANDRE
 
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...Jeff ANGAMA
 

Similaire à Initiation au Web scraping - AJPro (20)

Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Bootstrap 3
Bootstrap 3Bootstrap 3
Bootstrap 3
 
Guide de la recherche sur internet
Guide de la recherche sur internetGuide de la recherche sur internet
Guide de la recherche sur internet
 
SAPIENS2009 - Module 4B
SAPIENS2009 - Module 4BSAPIENS2009 - Module 4B
SAPIENS2009 - Module 4B
 
Introduction webextensions
Introduction webextensionsIntroduction webextensions
Introduction webextensions
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
25emes journées du_rndh_atelier_ff19-10-2012
25emes journées du_rndh_atelier_ff19-10-201225emes journées du_rndh_atelier_ff19-10-2012
25emes journées du_rndh_atelier_ff19-10-2012
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutant
 
Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...
Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...
Présentation introductive aux réseaux sociaux et à leur utilisation dans des ...
 
Les extensions Firefox et Google Chrome pour naviguer efficacement
Les extensions Firefox et Google Chrome pour naviguer efficacementLes extensions Firefox et Google Chrome pour naviguer efficacement
Les extensions Firefox et Google Chrome pour naviguer efficacement
 
Web Perf : par où commencer ? #SEOGoodVibes
Web Perf : par où commencer ? #SEOGoodVibesWeb Perf : par où commencer ? #SEOGoodVibes
Web Perf : par où commencer ? #SEOGoodVibes
 
Webperf : par où commencer ? - SEOGoodVibes
Webperf : par où commencer ? - SEOGoodVibesWebperf : par où commencer ? - SEOGoodVibes
Webperf : par où commencer ? - SEOGoodVibes
 
Outils Indispensables pour vs navigateurs web
Outils Indispensables pour vs navigateurs webOutils Indispensables pour vs navigateurs web
Outils Indispensables pour vs navigateurs web
 
Visualisation des données et Open data (Introduction)
Visualisation des données et Open data (Introduction)Visualisation des données et Open data (Introduction)
Visualisation des données et Open data (Introduction)
 
Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEO
 
Communiqué de presse TYPO3 V4.4
Communiqué de presse TYPO3 V4.4Communiqué de presse TYPO3 V4.4
Communiqué de presse TYPO3 V4.4
 
Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...
Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...
Atelier sur les logiciels et services Web gratuits pouvant être utiles en thè...
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web components
 
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
aOs Online - Etendez les possibilités de Microsoft 365 (anciennement Office 3...
 

Plus de Ettore Rizza

Formation AJPro fact-checking 2 octobre 2019 2/2
Formation AJPro fact-checking 2 octobre 2019 2/2Formation AJPro fact-checking 2 octobre 2019 2/2
Formation AJPro fact-checking 2 octobre 2019 2/2Ettore Rizza
 
Formation AJPro fact-checking 2 octobre 2019 1/2
Formation AJPro fact-checking 2 octobre 2019 1/2Formation AJPro fact-checking 2 octobre 2019 1/2
Formation AJPro fact-checking 2 octobre 2019 1/2Ettore Rizza
 
Initiation au data journalisme
Initiation au data journalismeInitiation au data journalisme
Initiation au data journalismeEttore Rizza
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProEttore Rizza
 
Outils data visualisation
Outils data visualisationOutils data visualisation
Outils data visualisationEttore Rizza
 
Vocabulaire politique du crisp
Vocabulaire politique du crispVocabulaire politique du crisp
Vocabulaire politique du crispEttore Rizza
 

Plus de Ettore Rizza (6)

Formation AJPro fact-checking 2 octobre 2019 2/2
Formation AJPro fact-checking 2 octobre 2019 2/2Formation AJPro fact-checking 2 octobre 2019 2/2
Formation AJPro fact-checking 2 octobre 2019 2/2
 
Formation AJPro fact-checking 2 octobre 2019 1/2
Formation AJPro fact-checking 2 octobre 2019 1/2Formation AJPro fact-checking 2 octobre 2019 1/2
Formation AJPro fact-checking 2 octobre 2019 1/2
 
Initiation au data journalisme
Initiation au data journalismeInitiation au data journalisme
Initiation au data journalisme
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJPro
 
Outils data visualisation
Outils data visualisationOutils data visualisation
Outils data visualisation
 
Vocabulaire politique du crisp
Vocabulaire politique du crispVocabulaire politique du crisp
Vocabulaire politique du crisp
 

Initiation au Web scraping - AJPro

  • 1. ETTORE RIZZA AJPro Summer School 2019 2019-08-26 1
  • 2. 2
  • 3. 3
  • 5. 5
  • 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
  • 9. http://data.blog.lemonde.fr/2016/04/ 08/panama-papers-un-defi- technique- pour-le-journalisme-de- donnees/ Comment les journalistes du Monde ont recherché des numéros d’entreprises français dans les Panama Papers 9
  • 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
  • 11. PARTIE 1 LE WEB SCRAPING 1 1
  • 12. 1 2
  • 13. 1 3
  • 14. 3 5
  • 15. En quoi est-ce inédit ? Lister toutes les nouveautés de cette nomination. 1 5
  • 17.
  • 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
  • 22. 22
  • 24. 24
  • 25. 25
  • 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…)
  • 35. 35 Infinite scrolling : https://scrollmagic.io/examples/advanced/infinite_scrolling.html (solution : https://forum.webscraper.io/t/infinite-scroll/1385 ) Element click : https://www.transfermarkt.com/ CAPTCHAs : http://testing-ground.scraping.pro/captcha Résultats limités : https://www.memoiredeshommes.sga.defense.gouv.fr/fr/arkotheque/client/mdh/recherche_transversal e/bases_nominatives.php AJAX (Asynchronous JavaScript and XML)
  • 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)
  • 40.  Documentation : https://www.webscraper.io/documentation  Tutos : https://www.webscraper.io/tutorials  Forum : https://forum.webscraper.io/latest 40
  • 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
  • 42. 42
  • 43. ANNEXES RAPPELS TECHNIQUES 4 3 Slides empruntés à Garrett Grolemund : https://github.com/rstudio/webinars
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 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
  • 62. ISBN,TITLE,AUTHORS,PUBDATE,PUBLISHER,PUBLOCATION 9783640246991,Les Misérables - Tome I - Fantine,Hugo Victor,19/01/2009,GRIN Publishing,London 6 2 9782807302150,Introduction aux humanités numériques : méthodes et pratiques,Seth Van Hooland,05/06/2016,de Boeck Supérieur,Bruxelles …
  • 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
  • 64. 4 9 { "9782075047449": { "publisher": { "publisher_name": "Gallimard", "publisher_location": "Paris" }, "title": "Notre-Dame de Paris", "authors": { "author": "Victor Hugo" }, "pubdate": "2015-05-21", "tags": { "tag": [ "Romans - Historique", "Classics", "Juvenile Fiction", "General" ] } } }
  • 65. <?xml version='1.0' encoding='utf-8’?> <ma_bibliotheque> <book> <publisher>de Boeck Supérieur</publisher> <isbn>9782807302150</isbn> <title>Introduction aux humanités numériques : méthodes et pratiques</title> <authors> <author>Seth Van Hooland</author> <author>Florence Gillet</author> <author>Simon Hengchen</author> <author>Max De Wilde</author> </authors> <pubdate>2016-06-05</pubdate> </book> </ma_bibliotheque> 6 5
  • 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
  • 69. 69 Application Programming Interface Comme un site web, mais en XML ou JSON plutôt qu’en HTML Permettent d’automatiser des tâches
  • 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
  • 74. 74  Google Maps (API) : https://maps.googleapis.com/maps/api/geocode/json?address= Avenue+Franklin+Roosevelt+50,+1000+Bruxelles &key=YOUR_API_KEY  Documentation : https://developers.google.com/maps/documentation/geocoding/intro#geocoding
  • 75. 75 Google Maps (version HTML) Google Maps (API)
  • 76. 76
  • 77. 1. Connectez-vous au compte que vous avez créé dans https://labs.cognitiveclass.ai/login?logout=true 2. Installez le plugin Chrome PickyJSon 77
  • 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
  • 81. 81  https://www.programmableweb.com/category/all/apis?page=1  https://github.com/toddmotto/public-apis Exemples:  Google Maps  Facebook  Twitter  Flickr  The Open Movie Database (OMDb)  … Pour dénicher des APIs :
  • 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