Hola Sergio:
Y si quieres ir preparando camino para dominar este mundillo de manera
más fácil, merece la pena (por experiencia) pasar de usar los paquetes
xml y/o xml2 a usar "rvest" [1], que permite usar expresiones de tipo
XPATH, como usas tu ahora, y las más fáciles de usar para identificar y
gestionar nodos de html, las de los selectores css, que con la ayuda del
"Selectorgadget" [2], la cosa se pone más fácil aún, y de paso, te
sirve
para empezar a sacarle partido al ecosistema de paquetes de R de Hadley
Wickham [3]. Yo al menos finalmente me he puesto y la cosa pinta bien
(este tipo es un crack [4]).
Saludos
Xavier
[1] https://github.com/hadley/rvest
[2]
https://cran.r-project.org/web/packages/rvest/vignettes/selectorgadget.html
[3] http://hadley.github.io/
[4]
http://datascience.la/a-conversation-with-hadley-wickham-the-user-2014-interview/
El 19/01/16 a les 09:48, Sergio Castro ha escrit:> 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.
>>>