我的问题类似于this one,但是后者没有得到我可以使用的答案。我使用xml2::read_html
抓取了数千个网址。这很好。但是,当我尝试使用purrr::map_df
和html_nodes
解析生成的html文档时,出现以下错误:
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