Bonjour,
Je reviens encore vers vous pour un problème de traitement de données que j'ai extraites du web.
J'ai extrait le contenu de petites annonces dont une partie se présentait sous forme de table. Voici les codes de mon extraction, mais ce ne sont pas eux qui posent problème :
Mon extraction m'a donné l'objet "v" qui est un ensemble de listes qui se présentent sous cette forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 doc<-htmlParse("http://www.leboncoin.fr/_loisirs_/offres/ile_de_france/?f=a&th=1") lien<-xpathSApply (doc, "//div[contains(@class,'list-lbc')]/a", xmlGetAttr,name = "href") v<-NA for (i in 1:length(lien)) { v[i]<- readHTMLTable(lien[i], head=2) }
En réalité, je souhaiterais transformer ces résultats brut pour obtenir un seul data.frame qui se présenterait comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [[1]] V1 V2 1 Prix: 10 2 Ville : Saint-Maurice 3 Code postal : 94410 [[2]] V1 V2 1 Prix: 12 2 Ville : Thomery 3 Code postal : 77810
J'ai réussi à arriver à cette transformation pour une table en écrivant les codes suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Prix Ville Code 1 10 Saint Maurice 94410 2 12 Thomery 77810
Mais mon problème est toujours le même, je n'arrive pas à réaliser cette opération sur l'ensemble de mes listes en une seule fois...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 u<-htmlParse("http://www.leboncoin.fr/livres/394455341.htm?ca=12_s") b<- readHTMLTable(u, head = 2) vt<-as.data.frame(b) vtbis<-as.data.frame(vt[c(2)]) prix<-vtbis[1,] ville<-vtbis[2,] code<-vtbis[3,] Table<-data.frame(prix,ville,code)
J'ai essayé des boucles FOR, des fonctions sapply, mais ça n'a pas fonctionné..
Je ne sais pas si c'est parce que je ne sais pas les écrire car je suis débutante en R, ou bien si je dois essayer d'autres pistes. Est-il possible de sélectionner sur toutes mes listes la seconde colonne et de la transformer en un seul data.frame ?
Je vous remercie d'avance si vous avez des idées sur ce problème.
Partager