Data Science,
Séance 4 : Données sur le web + scrapping et API

Etienne Côme

21 novembre 2019

Où trouver des données sur le web

Où trouver des données sur le web

Jeux de données, déjà mis en forme

Où trouver des données sur le web

Jeux de données à mettre en forme

Scrapping

API

Scrapping

Extraire des informations spécifiques

d’une ou plusieurs pages web

en vu de constituer un jeu de données

Scrapping, le html

<!DOCTYPE html>
<head><meta charset="utf-8"></head>
<body>
<section style="padding-top:6em;text-align:center">
<h1 class="purple"> Scrapping </h1>
<h4 class="purple">Extraire des informations spécifiques</h4>
<h4 class="purple">d'une ou plusieurs pages web</h4>
<h4 class="purple">en vu de constituer un jeu de données</h4>
</section>
</body>
</html>

Scrapping, les package RCurl et XML

RCurl (Client URL Request Library)

le web en ligne de commande : get, post, https, ftp, …
library(RCurl)
# récupérer la page  
res  = getURL("http://www...")

XML

htmlTreeParse, getNodeSet :
# parse du html
resp  = htmlTreeParse(res,useInternal=T)
# fonction de haut niveau pour récupérer les tableaux 
rest  = readHTMLTable(resp)
# récupérer un noeud désiré (xpath)
node  = getNodeSet(resp, '//nav/ul/')

Scrapping, les package RCurl et XML

Xpath, extraire des informations d’un arbre DOM

Syntaxe pour se promener dans l’abre dom et en extraire des partie (noeuds, attributs, …), plus détails sur w3schools.

Expression Description
nodename Selects all nodes with the name “nodename
/ Selects from the root node
// Selects nodes in the document from the current node that match the selection
. Selects the current node
.. Selects the parent of the current node
@ Selects attributes

Scrapping, les package RCurl et XML

Xpath, extraire des informations d’un arbre DOM

Syntaxe pour se promener dans l’abre dom et en extraire des partie (noeuds, attributs, …), plus détails sur w3schools.

Expression Description
/bookstore/book[1] Selects the first book element that is the child of the bookstore element.
//title[@lang] Selects all the title elements that have an attribute named
//title[@lang='en'] Selects all the title elements that have an attribute named lang with a value of ‘en’
/bookstore/book[price>35.00] Selects all the book elements of the bookstore element that have a price > 35.00

Library

## Loading required package: bitops
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Scrapper stackoverflow.com

Ecrire un script R permettant de scrapper le nombre de question publier sur les sites ayant les tags : ‘python’,‘julia-lang’,‘r’,‘sas’,‘matlab’,‘ggplot2’ et ‘d3.js’. Réaliser un graphique à partir de ces données.

Scrapper stackOverFlow

Scrapper leboncoin.fr

Ecrire un script R permettant de scrapper le nombre d’annonce de particulier du site dans la catégorie “Jardinage” en région centre.

Scrapper les résultats de ligue 1

Récupérer les dix dernières années de résultats du championnat de france

Scrapper les résultats de ligue 1

Scrapper les résultats de ligue 1

Scrapper les résultats de ligue 1

Scrapper les résultats de ligue 1

Scrapper les résultats de ligue 1

API
Application Programming Interface

Vélib’ et altitude des stations

Utiliser les fichiers http://vlsstats.ifsttar.fr/data/input_Lyon.json et http://vlsstats.ifsttar.fr/data/spatiotemporalstats_Paris.json ainsi que l’api elevation-api.io pour calculer un indicateur de charge moyenne des stations Vélib’ et mettre celui-ci en relation avec l’altitude des stations.

Vélib’ et altitude des stations

Localisation des stations

Vélib’ et altitude des stations

API elevation

Vélib’ et altitude des stations

FALSE Joining, by = "id"

Vélib’ et altitude des stations

API suite

Ecrire une fonction permettant de récupérer le nombre de fan d’un artiste en utilisant l’api deezer.

vous vous servirez de la fonction search et de la fonction artist de cette API.