Сбор данных через выпадающий список в R
Я пытаюсь собрать данные с этого сайта
http://www.lkcr.cz/seznam-lekaru-426.html(на чешском языке)
Мне нужно пройти через все возможные комбинации "Окрес"(регион) и "Обор"(специализация)
Я пробовал rvest, но, похоже, не обнаружил ни одного выпадающего списка, html_form возвращает список длины 0.
поэтому, поскольку я все еще новичок в R, как я могу "попросить" веб-страницу показать мне новую комбинацию страниц?
благодарю вас
JH
1 ответ
Я бы использовал следующее:
library(rvest)
library(dplyr)
library(tidyr)
pg <- read_html("http://www.lkcr.cz/seznam-lekaru-426.html")
obor <- html_nodes(pg, "select[name='filterObor'] > option")
obor_df <- data_frame(
value=xml_attr(obor, "value"),
option=xml_text(obor)
)
glimpse(obor_df)
## Observations: 115
## Variables: 2
## $ value <chr> "", "16", "107", "17", "1", "19", "20", "21", "22", "29...
## $ option <chr> "", "alergologie a klinická imunologie", "algeziologie"...
okres <- html_nodes(pg, "select[name='filterOkresId'] > option")
okres_df <- data_frame(
value=xml_attr(okres, "value"),
option=xml_text(okres)
)
glimpse(okres_df)
## Observations: 78
## Variables: 2
## $ value <chr> "", "3201", "3202", "3701", "3702", "3703", "3801", "37...
## $ option <chr> "", "Benešov", "Beroun", "Blansko", "Brno-město", "Brno...
в случае, если порядок полей когда-либо меняется (плюс хорошо познакомиться с таргетингом на узлы с помощью селекторов CSS и XPath).
Вам все еще нужно перебирать каждую пару (вы можете сделать это с помощью вложенных purrr::map
звонки; Лично я не буду использовать expand.grid
или же tidyr::complete
за это).
НО…
У вас будут проблемы при отправке формы с rvest
так как сайт использует javacript для некоторой обработки данных перед отправкой.
Вы должны использовать Chrome и открыть Инструменты разработчика, чтобы увидеть, что на самом деле передается по полю, и, возможно, переключиться на использование httr::POST
, Если у вас есть проблемы с этим, вы должны открыть новый вопрос о SO.