Я хочу вычеркнуть все имена из этой страницы . В результате один столбик из трех столбцов. Мой код работает только в том случае, если все данные есть, поэтому моя ошибка:
Error: Tibble columns must have consistent lengths, only values of length one are recycled:
* Length 20: Columns `huisarts`, `url`
* Length 21: Column `praktijk`
Как мне разрешить выполнение моего кода, но заполнить его Na
в tibble
, если данных там нет.
Мой код робота-паузу, который позже использовался в функции скребка:
pauzing_robot <- function (periods = c(0, 1)) {
tictoc <- runif(1, periods[1], periods[2])
cat(paste0(Sys.time()),
"- Sleeping for ", round(tictoc, 2), "seconds\n")
Sys.sleep(tictoc)
}
Скребок:
library(tidyverse)
library(rvest)
scrape_page <- function(pagina_nummer) {
page <- read_html(paste0("https://www.zorgkaartnederland.nl/huisarts/pagina", pagina_nummer))
pauzing_robot(periods = c(0, 1.5))
tibble(
huisarts = page %>%
html_nodes(".media-heading.title.orange") %>%
html_text() %>%
str_trim(),
praktijk = page %>%
html_nodes(".location") %>%
html_text() %>%
str_trim(),
url = page %>%
html_nodes(".media-heading.title.orange") %>%
html_nodes("a") %>%
html_attr("href") %>%
str_trim() %>%
paste0("https://www.zorgkaartnederland.nl", .)
)
}
Общее количество страниц 445, но, например, только для очистки три:
huisartsen <- map_df(sample(1:3), scrape_page)
Страница 2, кажется, проблема с несовместимыми длинами, потому что этот код работает:
huisartsen <- map_df(3:4, scrape_page)
Если возможно с кодом tidyverse
. Заранее спасибо.