【发布时间】:2019-10-09 05:35:07
【问题描述】:
我的问题类似于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
【问题讨论】:
-
似乎在 read_html() 在保存的环境中工作时发生。我通过阅读新鲜的数据来解决。 community.rstudio.com/t/…
-
@NBK 我遇到了同样的问题并找到了一些(不完美,但有效)的解决方案。 stackoverflow.com/questions/61031325/…
标签: r error-handling rvest purrr xml2