Extraction données web

2 359 vues

Publié le

Présentation par François Guillem pour le meetup Paris R Addicts du 9 Juillet 2013.
Comment extraire automatiquement des données d'une page web à l'aide de R ?

Publié dans : Formation
1 commentaire
1 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
2 359
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
44
Commentaires
1
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Extraction données web

  1. 1. Extraire des données d’une page web avec R François Guillem Fondateur et data scientist @
  2. 2. Le Web est la plus grande base de données du monde : — mille milliards de pages ! — plusieurs millions de teraoctets !
  3. 3. Ce que vous voyez :
  4. 4. Ce que voit votre ordinateur :
  5. 5. Comment récupérer les données dans tout ce bazar ?
  6. 6. Si les données sont dans un tableau • readHTMLtable du package XML library(XML) url <- "http://www.jeuxvideo.com/articles/listes/tests-wiiu-type-0-note-0-tri-0-0.htm" tables <- readHTMLTable(url) # la fonction renvoie une liste contenant tous les tableaux # de la page y compris des tableaux invisibles. # Il est bon de vérifier leur taille afin d'identifier # celui qui vous intéresse lapply(tables, dim) tables[[3]]
  7. 7. Et sinon ? • Utiliser le package CSS (dont je suis l’auteur !) install.packages("CSS") library(CSS) url <- "http://www.jeuxvideo.com/articles/listes/tests-wiiu-type-0-note-0-tri-0-0.htm" doc <- htmlParse(url) # Récupérer les url des tests urlGames <- cssApply(doc, "td > p > a", cssLink)
  8. 8. Explications • doc : document html créé avec « htmlParse » • path : où se trouvent les données à extraire dans le document ? (sélecteur CSS) • fun : fonction pour extraire les données : cssCharacter, cssNumeric, cssLink cssApply(doc, path, fun, ...)
  9. 9. Qu’est-ce qu’un document html ? <html> <head> <title>Titre de la page</title> </head> <body> <div> <h1>Section 1</h1> <p>texte</p> </div> <div> <h1>Section 2</h1> <p>texte</p> </div> </body> </html> html head body div div Titre de la pagetitle Section 1h1 textep Section 2h1 textep
  10. 10. Les attributs • Chaque élément a un nom qui indique sa fonction (html, head, body, div, etc.) • Les attributs contiennent des infos additionnelles : <div attr1="valeur1" attr2="valeur2">
  11. 11. Les principaux attributs • « id » : nom unique qui identifie l’élément • « class » : utile pour savoir ce que contient un élément <div id="leftColumn"> <div class="article"> <div id="header"> <span class="note bignum">
  12. 12. Les sélecteurs CSS • el : éléments de type « el » • el1 el2 : éléments « el2 » contenus dans des « el1 » • el1>el2 : éléments « el2 » directement contenus dans des « el1 »
  13. 13. Les sélecteurs CSS • el.class : éléments « el » de classe « class » • el.class1.class2 : éléments « el » de classes « class1 » et « class2 » • el#id : élément « el » ayant l’id « id »
  14. 14. Les sélecteurs CSS • * : n’importe quel élément • .class : n’importe quel élement de classe « class » • #id : n’importe quel élément ayant l’id « id »
  15. 15. Les sélecteurs CSS • *[attr] : éléments possédant l’attribut « attr » • *[attr='value'] : éléments dont l’attribut « attr » est égal à « value »
  16. 16. Exemples • "td > p > a" « a » directement contenus par des « p » qui sont directement contenus par des « td » • "#avis_auteur li.note > strong" « strong » directement contenus dans des « li » de classe « note » contenus dans l’élément ayant l’ID « avis_auteur »
  17. 17. Comment trouver le bon chemin ? • Dans Chrome, clic droit sur la donnée, puis « procéder à l’inspection de l’élément » • Un cadre s’ouvre et tout en bas du cadre se trouve le chemin complet vers l’élément qui contient la donnée • Essayer de ne garder que les éléments utiles de ce chemin
  18. 18. Et maintenant démonstration ! Comment récupérer les notes de tous les jeux de Wii U ?

×