Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Extraction données web

2,558 views

Published on

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 ?

Published in: Education
  • Be the first to like this

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 ?

×