Buenas tardes, Quiero extraer datos de una web en la que ser relaciona la semana con la puntuación obtenida por un jugador. Ahora mismo llego a obtener elnodo en el que se relacionan la semana con la puntuación obtenida, pero no soy capaz de extraer esa informacion en una tabla de dos columna (semana, puntuacion) teniendo en cuenta que puede que haya semanas que no haya puntuado (en el ejemplo, la segunda semana). De momento lo estoy obteniendo de la siguiente forma: url_jugador<-"http://localhost:8080/jugadores/Luis" txt_jugador <- getURL(url_jugador) doc<-htmlTreeParse(txt_jugador, useInternalNodes = TRUE) puntos_nodo<- xpathApply(doc, "//table[@class='points']/tr") puntos_nodo [[1]] <tr> <td class="semana">1</td> <td class="neg"/> <td> <div class="bar">6</div> </td> </tr> [[2]] <tr> <td class="semana">2</td> <td class="neg"/> <td/> </tr> [[3]] <tr> <td class="semana">3</td> <td class="neg"/> <td> <div class="bar">9</div> </td> </tr> attr(,"class") [1] "XMLNodeSet" ¿Veis alguna forma de sacar la información que necesito? Muchas gracias. Un saludo.
Estimado Sergio Castro Su punto se encuentra muy próximo, table[@class='points']/tr, usted obtiene los tr de la tabla, pero en realidad no desea estos, sino algo como /tr/td, o class ?semana? ? Tendría que poder recorrer el DOM para estar seguro pero con unos pequeños cambios estaría la solución. Javier Rubén Marcuzzi De: Sergio Castro Enviado: lunes, 18 de enero de 2016 13:29 Para: r-help-es Asunto: [R-es] Extraccion de datos de una Web Buenas tardes, Quiero extraer datos de una web en la que ser relaciona la semana con la puntuación obtenida por un jugador. Ahora mismo llego a obtener elnodo en el que se relacionan la semana con la puntuación obtenida, pero no soy capaz de extraer esa informacion en una tabla de dos columna (semana, puntuacion) teniendo en cuenta que puede que haya semanas que no haya puntuado (en el ejemplo, la segunda semana). De momento lo estoy obteniendo de la siguiente forma: url_jugador<-"http://localhost:8080/jugadores/Luis" txt_jugador <- getURL(url_jugador) doc<-htmlTreeParse(txt_jugador, useInternalNodes = TRUE) puntos_nodo<- xpathApply(doc, "//") puntos_nodo [[1]] <tr> <td class="semana">1</td> <td class="neg"/> <td> <div class="bar">6</div> </td> </tr> [[2]] <tr> <td class="semana">2</td> <td class="neg"/> <td/> </tr> [[3]] <tr> <td class="semana">3</td> <td class="neg"/> <td> <div class="bar">9</div> </td> </tr> attr(,"class") [1] "XMLNodeSet" ¿Veis alguna forma de sacar la información que necesito? Muchas gracias. Un saludo. _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Hola, Pero, si ya casi lo tienes... te quedan un par de pasos y ya está... - Simplemente tienes que transformar "puntos_nodo" a bien un data.frame aunque quedará lleno de cosas que no te hacen falta o directamente guardar "puntos_nodo" a un vector de strings. - Y luego sobre lo anterior, puedes hacer un barrido buscando "semana" y "bar". En el caso de que tras una semana no se encuentre un "bar" pones una condición lógica para que en ese caso "bar" sea cero o NA, según prefieras. Saludos, Carlos Ortega www.qualityexcellence.es El 18 de enero de 2016, 17:29, Sergio Castro < castro.rodriguez.sergio en gmail.com> escribió:> Buenas tardes, > > Quiero extraer datos de una web en la que ser relaciona la semana con > la puntuación obtenida por un jugador. Ahora mismo llego a obtener > elnodo en el que se relacionan la semana con la puntuación obtenida, > pero no soy capaz de extraer esa informacion en una tabla de dos > columna (semana, puntuacion) teniendo en cuenta que puede que haya > semanas que no haya puntuado (en el ejemplo, la segunda semana). De > momento lo estoy obteniendo de la siguiente forma: > > url_jugador<-"http://localhost:8080/jugadores/Luis" > txt_jugador <- getURL(url_jugador) > doc<-htmlTreeParse(txt_jugador, useInternalNodes = TRUE) > puntos_nodo<- xpathApply(doc, "//table[@class='points']/tr") > puntos_nodo > [[1]] > <tr> > <td class="semana">1</td> > <td class="neg"/> > <td> > <div class="bar">6</div> > </td> > > </tr> > [[2]] > <tr> > <td class="semana">2</td> > <td class="neg"/> > <td/> > </tr> > [[3]] > <tr> > <td class="semana">3</td> > <td class="neg"/> > <td> > <div class="bar">9</div> > </td> > </tr> > attr(,"class") > [1] "XMLNodeSet" > > ¿Veis alguna forma de sacar la información que necesito? > > Muchas gracias. > Un saludo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Muchas gracias a ambos!!!! Las dos soluciones me han funcionado. Un saludo. El día 18 de enero de 2016, 18:35, Carlos Ortega <cof en qualityexcellence.es> escribió:> Hola, > > Pero, si ya casi lo tienes... te quedan un par de pasos y ya está... > > Simplemente tienes que transformar "puntos_nodo" a bien un data.frame aunque > quedará lleno de cosas que no te hacen falta o directamente guardar > "puntos_nodo" a un vector de strings. > Y luego sobre lo anterior, puedes hacer un barrido buscando "semana" y > "bar". En el caso de que tras una semana no se encuentre un "bar" pones una > condición lógica para que en ese caso "bar" sea cero o NA, según prefieras. > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 18 de enero de 2016, 17:29, Sergio Castro > <castro.rodriguez.sergio en gmail.com> escribió: >> >> Buenas tardes, >> >> Quiero extraer datos de una web en la que ser relaciona la semana con >> la puntuación obtenida por un jugador. Ahora mismo llego a obtener >> elnodo en el que se relacionan la semana con la puntuación obtenida, >> pero no soy capaz de extraer esa informacion en una tabla de dos >> columna (semana, puntuacion) teniendo en cuenta que puede que haya >> semanas que no haya puntuado (en el ejemplo, la segunda semana). De >> momento lo estoy obteniendo de la siguiente forma: >> >> url_jugador<-"http://localhost:8080/jugadores/Luis" >> txt_jugador <- getURL(url_jugador) >> doc<-htmlTreeParse(txt_jugador, useInternalNodes = TRUE) >> puntos_nodo<- xpathApply(doc, "//table[@class='points']/tr") >> puntos_nodo >> [[1]] >> <tr> >> <td class="semana">1</td> >> <td class="neg"/> >> <td> >> <div class="bar">6</div> >> </td> >> >> </tr> >> [[2]] >> <tr> >> <td class="semana">2</td> >> <td class="neg"/> >> <td/> >> </tr> >> [[3]] >> <tr> >> <td class="semana">3</td> >> <td class="neg"/> >> <td> >> <div class="bar">9</div> >> </td> >> </tr> >> attr(,"class") >> [1] "XMLNodeSet" >> >> ¿Veis alguna forma de sacar la información que necesito? >> >> Muchas gracias. >> Un saludo. >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es