Вариант Rvest select, думаю, проще всего объяснить на воспроизводимом примере
Веб-сайт: http://www.verema.com/vinos/portada Я хочу получить типы вин (Tipos de vinos), в html коде:
<select class="campo select" id="producto_tipo_producto_id" name="producto[tipo_producto_id]">
<option value="">Todos</option>
<option value="211">Tinto</option>
<option value="213">Blanco</option>
<option value="215">Rosado</option>
<option value="216">Espumoso</option>
<option value="217">Dulces y Generosos</option></select>
XPath : //*[@id="producto_tipo_producto_id"] or
CSS : #producto_tipo_producto_id or
Class: campo select
Я хочу data.frame как
211 Тинто
213 Бланко
215 Росадо
216 Эспумосо
217 Дульсес-и-Генеросос
Мой код (R):
library(rvest)
Pagina.R <- html(x = "http://www.verema.com/vinos/portada")
text <- Pagina.R %>%
html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
html_text()
text
values <- Pagina.R %>%
html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
html_attr("option value") #problem????
values
Res <- data.frame(text = text, values = values, stringsAsFactors = FALSE)
Res # problem
Предложения?
Спасибо.
Обновлять
Пересмотренный, работающий код:
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