2

我试图缓存read_html/xml2以避免在开发过程中淹没服务器

library(digest)
library(xml2)
url = "https://en.wikipedia.org"
cache = digest(url)
if (file.exists(cache)) {
  cat("Reading from cache\n")
  html = readRDS(cache)
} else {
  #Sys.sleep(3)
  cat("Reading from web\n")
  html = xml2::read_html(url) 
  saveRDS(html, file = cache)
}
html

这失败了,因为只有外部指针存储在文件中,重新运行时不再有效。当我使用memoiseon时也会出现同样的问题read_html

4

1 回答 1

2

您始终可以使用as_listandas_xml_document来回转换。

library(digest)
library(xml2)
url = "https://en.wikipedia.org"
cache = digest(url)
if (file.exists(cache)) {
  cat("Reading from cache\n")
  html = as_xml_document(readRDS(cache))
} else {
  cat("Reading from web\n")
  html = read_html(url) 
  saveRDS(as_list(html), file = cache)
}
html

或者,查看read_xmlwrite_xml

于 2018-08-21T14:11:44.463 回答