Мой вопрос похож на этот , но последний не получил ответа, с которым я могу работать. Я соскребаю тысячи URL с xml2::read_html
. Это отлично работает. Но когда я пытаюсь разобрать полученные HTML-документы, используя purrr::map_df
и html_nodes
, я получаю следующую ошибку:
Error in doc_namespaces(doc) : external pointer is not valid
По какой-то причине я не могу воспроизвести ошибку, используя примеры. Пример ниже не очень хорош, потому что он работает совершенно нормально. Но если бы кто-то мог объяснить мне концептуально, что означает ошибка и как ее решить, это было бы замечательно (вот github thread по аналогичной проблеме, но я не следую всем техническим деталям).
library(rvest)
library(purrr)
urls_test <- list("https://en.wikipedia.org/wiki/FC_Barcelona",
"https://en.wikipedia.org/wiki/Rome")
h <- urls_test %>% map(~{
Sys.sleep(sample(seq(1, 3, by=0.001), 1))
read_html(.x)})
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)
})
Информация о сеансе:
> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Devuan GNU/Linux ascii