Skip to content

[R-es] Instrucciones uso rvest

4 messages · Javier Marcuzzi, Francisco Rodríguez, Francisco Viciana

#
Hola buenos días:
Os remito una duda (en un documento word para su mejor expresión) sobre el uso de la libreria rvest. Mi problema es que como no soy informatico me pierdo un poco, he visto los ejemplos que hay colgados y los he seguido, pero el tema es que quiero acceder a los datos del INE, que en ocasiones estan un poco escondidos con menu de selecciones y no se como hacerlo con rvest para llegar hasta la solucion final.
Lo anterior si lo he hecho (y lo sigo haciendo) con Rselenium gracias a que use un ejemplo de Gregorio Serrano, pero quiero pasar esos primeros codigos a rvest y por eso es por lo que solicito vuestra ayuda
Remito fichero adjunto para aclarar un ejemplo de los que uso
Un saludo y muchas gracias 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20151223/e40ed9e3/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Duda_Uso_rvest.docx
Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Size: 39475 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20151223/e40ed9e3/attachment-0001.bin>
#
Estimado Francisco Rodríguez

Creo que del ejemplo de Gregorio Serrano tomé algo, no recuerdo todo y no alcanzo a buscarlo y leerlo, sin embargo le envío dos partes que puede copiar y pegar, posiblemente de estos pueda tomar algo, no respondo su pregunta pero espero que sirva para que usted pruebe con las modificaciones necesarias y llegar a su objetivo.


library(rvest)
url <- "https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm"

s <- html_session(url)
f0 <- html_form(s)
f1 <- set_values(f0[[2]], priceDate.year=2014, priceDate.month=12, priceDate.day=15)
test <- submit_form(s, f1)
b <- test

reviews <- b %>% html_nodes(".data1") %>% html_text()
reviews

reviews <- b %>% html_nodes(".data1") %>% html_table()
reviews

library(rvest)

Pagina.R <- html(x = "http://www.verema.com/vinos/portada")

text <- Pagina.R %>% 
#  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]/option')%>%
  html_text() 
text

values <- Pagina.R %>% 
#  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]/option')%>%
   # html_attr("option value") 
  html_attr("value") 
values

Res <- data.frame(text = text, values = values, stringsAsFactors = FALSE)
Res

Si hay un combobox, lista desplegable, etc., me encontré con problemas que no supe resolver, en algunos casos traía el resultado, en otros el php, o el php no se ejecutaba en el servidor para realizar la consulta, algo fallaba, por como venían los resultados supongo que estaba escrito con Dreamweaver (algo medio obsoleto pero tiene la información). Le envié un correo sobre eso al autor de rvest, me respondió pero no me dijo nada sobre el problema, si pudo solucionarlo, si escribí mal mi código, desconozco, en unos días tendré que ejecutar nuevamente esos archivos y resolver ese problema.

Javier Marcuzzi

De: Francisco Rodríguez
Enviado: miércoles, 23 de diciembre de 2015 8:33
Para: r-help-es en r-project.org
Asunto: [R-es] Instrucciones uso rvest

Hola buenos días:

Os remito una duda (en un documento word para su mejor expresión) sobre el uso de la libreria rvest. 
Mi problema es que como no soy informatico me pierdo un poco, he visto los ejemplos que hay colgados y los he seguido, pero el tema es que quiero acceder a los datos del INE, que en ocasiones estan un poco escondidos con menu de selecciones y no se como hacerlo con rvest para llegar hasta la solucion final.

Lo anterior si lo he hecho (y lo sigo haciendo) con Rselenium gracias a que use un ejemplo de Gregorio Serrano, pero quiero pasar esos primeros codigos a rvest y por eso es por lo que solicito vuestra ayuda

Remito fichero adjunto para aclarar un ejemplo de los que uso

Un saludo y muchas gracias
#
Hola Javier muchas gracias, he probado con la primera de las opciones que parece más sencilla:
En principio su código funciona y entiendo lo que hace, el problema es cuando trato de adaptarlo a lo que quiero, yo hago lo siguiente:
library(rvest)
url <- "http://www.ine.es/jaxiT3/Tabla.htm?t=10280&L=0"
s <- html_session(url)f0 <- html_form(s)f1 <- set_values(f0[[2]], busc_70710 = '442439', busc_70711 = '442458',                 busc_70712 = '442460', busc_periodo = '10~2015')
test <- submit_form(s, f1, submit = 'ct')

Pero creo que hay algo que estoy haciendo mal, porque para el caso del INE no me sale, cuando llego a la opción del submit_form 
Creo que está en la forma de asignar los valores anteriores. Voy a probar con varias opciones a ver si en estos días lo consigo, pero con tus indicaciones, al menos me has sacado un poco de la duda aunque aún sigo en ella parcialmente. Si se te ocurre (o se os ocurre) algo más os lo agradezco.
Por mi parte cuando lo consiga (si lo logro) comparto el código
Un saludo y gracias
To: fjroar en hotmail.com; r-help-es en r-project.org
From: javier.ruben.marcuzzi en gmail.com
Subject: RE: [R-es] Instrucciones uso rvest
Date: Wed, 23 Dec 2015 10:27:01 -0300

Estimado Francisco Rodríguez Creo que del ejemplo de Gregorio Serrano tomé algo, no recuerdo todo y no alcanzo a buscarlo y leerlo, sin embargo le envío dos partes que puede copiar y pegar, posiblemente de estos pueda tomar algo, no respondo su pregunta pero espero que sirva para que usted pruebe con las modificaciones necesarias y llegar a su objetivo.  library(rvest)url <- "https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm" s <- html_session(url)f0 <- html_form(s)f1 <- set_values(f0[[2]], priceDate.year=2014, priceDate.month=12, priceDate.day=15)test <- submit_form(s, f1)b <- test reviews <- b %>% html_nodes(".data1") %>% html_text()reviews reviews <- b %>% html_nodes(".data1") %>% html_table()reviews library(rvest) Pagina.R <- html(x = "http://www.verema.com/vinos/portada") text <- Pagina.R %>% #  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]/option')%>%  html_text() text values <- Pagina.R %>% #  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]/option')%>%   # html_attr("option value")   html_attr("value") values Res <- data.frame(text = text, values = values, stringsAsFactors = FALSE)Res Si hay un combobox, lista desplegable, etc., me encontré con problemas que no supe resolver, en algunos casos traía el resultado, en otros el php, o el php no se ejecutaba en el servidor para realizar la consulta, algo fallaba, por como venían los resultados supongo que estaba escrito con Dreamweaver (algo medio obsoleto pero tiene la información). Le envié un correo sobre eso al autor de rvest, me respondió pero no me dijo nada sobre el problema, si pudo solucionarlo, si escribí mal mi código, desconozco, en unos días tendré que ejecutar nuevamente esos archivos y resolver ese problema. Javier Marcuzzi
De: Francisco Rodríguez
Enviado: miércoles, 23 de diciembre de 2015 8:33
Para: r-help-es en r-project.org
Asunto: [R-es] Instrucciones uso rvest Hola buenos días: Os remito una duda (en un documento word para su mejor expresión) sobre el uso de la libreria rvest. Mi problema es que como no soy informatico me pierdo un poco, he visto los ejemplos que hay colgados y los he seguido, pero el tema es que quiero acceder a los datos del INE, que en ocasiones estan un poco escondidos con menu de selecciones y no se como hacerlo con rvest para llegar hasta la solucion final. Lo anterior si lo he hecho (y lo sigo haciendo) con Rselenium gracias a que use un ejemplo de Gregorio Serrano, pero quiero pasar esos primeros codigos a rvest y por eso es por lo que solicito vuestra ayuda Remito fichero adjunto para aclarar un ejemplo de los que uso Un saludo y muchas gracias
4 days later
#
Creo que es mucho mas sencillo que te descargues el fichero completo con 
toda la serie y luego selecciones los datos que te interesa en R. Por 
ejemplo puedes descargar toda la serie en formato pc-Axis e importarlo 
con el paquete "pxR". Adjunto ejemplo:

download.file('http://www.ine.es/jaxiT3/files/t/es/px/10280.px',
               destfile = '10280.px')
datos <- read.px('10280.px',encoding='latin1') # bug sin "encoding"
df <- as.data.frame(datos)
names(df)
my.df <- subset(df, Comunidades..Provincias.y.Ciudades.Autónomas 
=='Andalucía' &
                     Número.importe == 'Número' &
                     Entidad.que.concede.el.préstamo == 'Todas las 
entidades' &
                     Periodo %in% c("2015M10","2015M09")
                   )
my.df
On 23/12/15 12:33, Francisco Rodríguez wrote: