[R-es] rvest

javier.ruben.marcuzzi en gmail.com javier.ruben.marcuzzi en gmail.com
Sab Dic 10 00:03:02 CET 2016


Estimado Carlos Ortega

Tal como me lo sugiere mire el xpath, y encontré dos problemas, el primero es el más complicado, y es referido al uso de JavaScript, posiblemente habría que plantear utilizar node.js para no tener problemas, pero no lo experimente. 

El segundo problema lo expongo con un ejemplo, es muy simple de leer, si cualquiera copia y pega debería acceder a un listado de países, tal como está el sitio de Wikipedia. Pero si uno quiere extraer las imágenes tiene problemas (a eso no lo envío en el código), lo importante es que pude reproducir el error informado como R como carácter(0), en realidad no vendría por el lado de R, aunque parezca extraño, el selector para Argentina es #mw-content-text > table > tbody > tr:nth-child(12) > td:nth-child(1) > span > img, para Acrotiri y Dhekelia es #mw-content-text > table > tbody > tr:nth-child(2) > td:nth-child(1) > a > img, resumiendo algunos terminan con >span>img y otros con >a>img, son pocos los que tienen esas diferencias, pero son los que causan el error.

Ahora, escribir en R para cada error para obtener las banderas para el país correspondiente, …, que trabajo, no lo se.

El código con la parte que funciona, sin solicitar las banderas de los países es el siguiente:

library(rvest)

listado_de_paises = read_html("https://es.wikipedia.org/wiki/Anexo:Pa%C3%ADses")

#get the table
paises_table = listado_de_paises %>%
  html_node(".wikitable") %>%
  html_table()
paises_table

nombre <- listado_de_paises %>%
  html_node(".wikitable") %>%
  html_nodes("td:nth-child(3)")
nombre


pais_nombre <- listado_de_paises %>%
  html_node(".wikitable") %>%
  html_nodes("td:nth-child(2) > i > a") %>%
  html_attr("title")
pais_nombre

pais_link <- listado_de_paises %>%
  html_node(".wikitable") %>%
  html_nodes("td:nth-child(2) > i > a") %>%
  html_attr("href")
pais_link

pais_continente <- listado_de_paises %>%
  html_node(".wikitable") %>% 
  html_nodes("td:nth-child(4) > a") %>%
  html_attr("title")
pais_continente

Javier Rubén Marcuzzi

De: Carlos Ortega
Enviado: miércoles, 7 de diciembre de 2016 13:45
Para: Marcuzzi, Javier Rubén
CC: r-help-es
Asunto: Re: [R-es] rvest

Sí, la sugerencia es que mires el "xpath" que es la única dependencia que tiene tu código.
Algo habrá cambiado en la página que está haciendo que ahora no te funcione.

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 7 de diciembre de 2016, 0:39, <javier.ruben.marcuzzi en gmail.com> escribió:
Estimados

Hace un tiempo que no uso rvest, corrí un código viejo, anda sin problemas, escribo el nuevo y hay algo que me olvide.

Básicamente desde el navegador de internet selecciono el xpath, copio y pego este en R, pero me sale el siguiente error.
> text <- Pagina.R %>%
+           html_nodes(xpath='//*[@id="content"]/p')%>%
+           html_text()
>         text
character(0)

Miré mi código viejo junto con el sitio que funciona, pero le hice una modificación para que ande (algo en el xpath) pero hoy no recuerdo la parte técnica.

Básicamente hay una lista y recorro los elementos de esta (como si fuese una tabla, pero no lo es), tomando la palabra y la dirección del enlace, nada complicado.

No me doy cuenta el charácter(0)

El ejemplo de las películas con selector css me anda, pero al pasarlo a xpath también tengo errores.

Alguna sugerencia.

Javier Rubén Marcuzzi


        [[alternative HTML version deleted]]

_______________________________________________
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]]



Más información sobre la lista de distribución R-help-es