Я пытаюсь создать несколько страниц с rvest
и purrr::map
. Однако я не уверен, как использовать purrr::safely
для обработки неудачных ссылок. Возьмите следующий код:
library(rvest)
library(purrr)
urls <- list("https://en.wikipedia.org/wiki/FC_Barcelona",
"https://en.wikipedia.org/wiki/Rome",
"lkjsadajf")
h <- urls %>% map(~{
Sys.sleep(sample(seq(1, 3, by=0.001), 1))
read_html(.x)})
Я получаю следующую понятную ошибку:
Error: 'lkjsadajf' does not exist in current working directory ('/home/user').
Как мне использовать purrr::safely
или любую другую функцию обработки ошибок для создания списка с html всех urls
, которые работают, и с NA
с urls
, которые не работают?
EDIT
В качестве дополнения к вопросу выше: функция safely
создает вложенный список. Как обработать вывод safely
, чтобы он обрабатывался rvest::html_nodes
?
library(dplyr)
out <- h %>% map_df(~{
a <- html_nodes(., "#firstHeading") %>% html_text()
a <- if (length(a) == 0) NA else a
b <- html_nodes(., ".toctext") %>% html_text()
b <- if (length(b) == 0) NA else b
df <- tibble(a, b)
})
out