Estimados colegas, Soy nuevo en uso de R. Requiero por ello amablemente de su ayuda. Estoy realizando una captación de datos de una página web html de comentarios turísticos relativos a 10 hoteles. El código que parcialmente empleo es el siguiente: (...) for (i in seq_len(10)){ txt <- getURL(url=baseURL[i], followlocation = TRUE, encoding="UTF-8") # parse html text <- htmlParse(txt, asText=TRUE) t1 <- xpathApply(text, "//span[@class='hotel_name']") t2 <- xpathApply(text, "//ul[@class='guest_list']") t3 <- xpathApply(text, "//DIV[@CLASS='REVIEW']") o1 <- sapply(t1, function(x)unname(xmlSApply(x, xmlValue))) o2 <- sapply(t2, function(x)unname(xmlSApply(x, xmlValue))) o3 <- sapply(t3, function(x)unname(xmlSApply(x, xmlValue))) ot.t <- cbind(o1,o2,o3) (...) } El problema surge porque dentro de la etiqueta //DIV[@CLASS='REVIEW'] existen dos subapartados: -comentarios positivos (<p class="POS">). -comentarios negativos (<p class="NEG">). código fuente aclaratorio: <div class="REVIEW"> <p class="POS">La amabilidad</p><p class="NEG">La bañera</p> </div> Le señalo además que cuando no hay comentarios positivos o negativos el código fuente html no muestra <p class="pos"> o <p class="neg">. Ahí está la clave del problema. El huésped no siempre deja mensajes positivos o negativos, de tal modo que cuando ejecuto la programación que barre el código html, me desordena los comentarios realizados entre huéspedes. Es decir, si el huésped 2 no realiza comentarios negativos y el huésped 3 sí, los comentarios negativos del huésped 3 los asigna al huésped 2. En suma, necesitaría que me orientase para que en caso de ausencia de comentarios positivos o negativos asignara un valor (NA) al huésped 2 en cada tipo de comentario (positivo o negativo) ausente. Espero su amable respuesta, Manuel -- _______________________________________________________ Manuel J. Sánchez Franco Departamento de Administración de Empresas y Marketing Facultad de Ciencias Económicas y Empresariales Universidad de Sevilla Avda. Ramón y Cajal, 1. 41018-SEVILLA (ESPAÑA) Tf.- 95 455 75 42. Fax.- 95 455 69 89 [[alternative HTML version deleted]]
Estimado Manuel J. Sánchez Franco No hace mucho estoy realizando algunas cosas muy semejantes a las que usted describe. Básicamente use tres librerías, diría que cada una tiene un punto fuerte sobre las otras. Pero hay dos puntos que están casi sobre R, el primero es si usted automatiza a partir de un formulario html, lo que no es lo mismo que automatizar wikipedia, y lo segundo es imposible separar el códifo r, de la conección a internet, y del acceso al html, tengo ejemplos que en un lado funcionan y en otro no, cosas que aún no comprendo. De pronto, su código R es bueno pero al procesar html, aparecen los errores, no por R o por el html, por la combinación de ambos (RxHtml). Usted tiene dos clases, review y pos o neg, las cuáles podrían ser interpretadas como css, si se está una no está la otra, por lo que posiblemente un if solucione el problema. Pero ¿es posible un if dentro de su código o habría que trabajar algo más? Javier Marcuzzi El 12 de marzo de 2015, 11:40, Manuel J. Sánchez Franco <majesus en us.es> escribió:> > > Estimados colegas, > > Soy nuevo en uso de R. Requiero por ello amablemente de su ayuda. Estoy > realizando una captación de datos de una página web html de comentarios > turísticos relativos a 10 hoteles. El código que parcialmente empleo es > el siguiente: > > (...) > > for (i in seq_len(10)){ > > txt <- getURL(url=baseURL[i], followlocation = TRUE, encoding="UTF-8") > # parse html > text <- htmlParse(txt, asText=TRUE) > > t1 <- xpathApply(text, "//span[@class='hotel_name']") > t2 <- xpathApply(text, "//ul[@class='guest_list']") > t3 <- xpathApply(text, "//DIV[@CLASS='REVIEW']") > > o1 <- sapply(t1, function(x)unname(xmlSApply(x, xmlValue))) > o2 <- sapply(t2, function(x)unname(xmlSApply(x, xmlValue))) > o3 <- sapply(t3, function(x)unname(xmlSApply(x, xmlValue))) > > ot.t <- cbind(o1,o2,o3) > > (...) > > } > > El problema surge porque dentro de la etiqueta //DIV[@CLASS='REVIEW'] > existen dos subapartados: > > -comentarios positivos (<p class="POS">). > > -comentarios negativos (<p class="NEG">). > > código fuente aclaratorio: > > <div class="REVIEW"> > <p class="POS">La amabilidad</p><p class="NEG">La bañera</p> > </div> > > Le señalo además que cuando no hay comentarios positivos o negativos el > código fuente html no muestra <p class="pos"> o <p class="neg">. Ahí > está la clave del problema. El huésped no siempre deja mensajes > positivos o negativos, de tal modo que cuando ejecuto la programación > que barre el código html, me desordena los comentarios realizados entre > huéspedes. Es decir, si el huésped 2 no realiza comentarios negativos y > el huésped 3 sí, los comentarios negativos del huésped 3 los asigna al > huésped 2. > > En suma, necesitaría que me orientase para que en caso de ausencia de > comentarios positivos o negativos asignara un valor (NA) al huésped 2 en > cada tipo de comentario (positivo o negativo) ausente. > > Espero su amable respuesta, > > Manuel > > -- > _______________________________________________________ > > Manuel J. Sánchez Franco > Departamento de Administración de Empresas y Marketing > Facultad de Ciencias Económicas y Empresariales > Universidad de Sevilla > Avda. Ramón y Cajal, 1. 41018-SEVILLA (ESPAÑA) > Tf.- 95 455 75 42. Fax.- 95 455 69 89 > > [[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 >[[alternative HTML version deleted]]
Estimado Manuel Sánchez Franco Cometió un pequeño error, me respondió solo a mí y no a la lista, ¿podría enviar a todos? Hay una librería nueva rvest, está genial pero no le comprendí algunas partes del formulario. ¿Si intenta con esta? Otra Rselenium. ¿Que usa usted? Javier Marcuzzi El 12 de marzo de 2015, 11:40, Manuel J. Sánchez Franco <majesus en us.es> escribió:> > > Estimados colegas, > > Soy nuevo en uso de R. Requiero por ello amablemente de su ayuda. Estoy > realizando una captación de datos de una página web html de comentarios > turísticos relativos a 10 hoteles. El código que parcialmente empleo es > el siguiente: > > (...) > > for (i in seq_len(10)){ > > txt <- getURL(url=baseURL[i], followlocation = TRUE, encoding="UTF-8") > # parse html > text <- htmlParse(txt, asText=TRUE) > > t1 <- xpathApply(text, "//span[@class='hotel_name']") > t2 <- xpathApply(text, "//ul[@class='guest_list']") > t3 <- xpathApply(text, "//DIV[@CLASS='REVIEW']") > > o1 <- sapply(t1, function(x)unname(xmlSApply(x, xmlValue))) > o2 <- sapply(t2, function(x)unname(xmlSApply(x, xmlValue))) > o3 <- sapply(t3, function(x)unname(xmlSApply(x, xmlValue))) > > ot.t <- cbind(o1,o2,o3) > > (...) > > } > > El problema surge porque dentro de la etiqueta //DIV[@CLASS='REVIEW'] > existen dos subapartados: > > -comentarios positivos (<p class="POS">). > > -comentarios negativos (<p class="NEG">). > > código fuente aclaratorio: > > <div class="REVIEW"> > <p class="POS">La amabilidad</p><p class="NEG">La bañera</p> > </div> > > Le señalo además que cuando no hay comentarios positivos o negativos el > código fuente html no muestra <p class="pos"> o <p class="neg">. Ahí > está la clave del problema. El huésped no siempre deja mensajes > positivos o negativos, de tal modo que cuando ejecuto la programación > que barre el código html, me desordena los comentarios realizados entre > huéspedes. Es decir, si el huésped 2 no realiza comentarios negativos y > el huésped 3 sí, los comentarios negativos del huésped 3 los asigna al > huésped 2. > > En suma, necesitaría que me orientase para que en caso de ausencia de > comentarios positivos o negativos asignara un valor (NA) al huésped 2 en > cada tipo de comentario (positivo o negativo) ausente. > > Espero su amable respuesta, > > Manuel > > -- > _______________________________________________________ > > Manuel J. Sánchez Franco > Departamento de Administración de Empresas y Marketing > Facultad de Ciencias Económicas y Empresariales > Universidad de Sevilla > Avda. Ramón y Cajal, 1. 41018-SEVILLA (ESPAÑA) > Tf.- 95 455 75 42. Fax.- 95 455 69 89 > > [[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 >[[alternative HTML version deleted]]