read_html函数生成一个xml_document,我想保存,稍后加载它来解析它.
问题是加载xml_document后,其中没有html.
- library(rvest)
- library(magrittr)
- doc <- read_html("http://www.example.com/")
- doc %>% html_node("h1") %>% html_text
我得到:[1]“示例域”
但是,当我首先保存xml_document doc对象并再次加载它时,似乎所有内容都已清除.
- save(doc,file=paste0(getwd(),"/example.RData"))
- rm(doc)
- load(file=paste0(getwd(),"/example.RData"))
- doc %>% html_node("h1") %>% html_text
我明白了:错误:没有匹配
或者当我运行doc时,我得到:{xml_document}一个空的xml_document.
还有一种情况是,当我运行文档时,在加载它之后,我收到一条消息,表明RStudio已停止工作.
我在两台不同的Windows机器上试过它,遇到了同样的问题.
- sessionInfo()
- R version 3.3.0 (2016-05-03)
- Platform: x86_64-w64-mingw32/x64 (64-bit)
- Running under: Windows 7 x64 (build 7601) Service Pack 1
- locale:
- [1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
- [3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
- [5] LC_TIME=English_United Kingdom.1252
- attached base packages:
- [1] stats graphics grDevices utils datasets methods base
- other attached packages:
- [1] magrittr_1.5 rvest_0.3.1.9000 xml2_0.1.2
- loaded via a namespace (and not attached):
- [1] httr_1.1.0 R6_2.1.2 tools_3.3.0 Rcpp_0.12.5
我找到了一个解决方法,效率不高但是它完成了工作.
逻辑是将xml_document保存为字符串,并使用read_html再次读取它.
- library(rvest)
- library(magrittr)
- doc <- read_html("http://www.example.com/")
- # convert it to character
- doc %<>% as("character")
- save(doc,"/example.RData"))
- doc %>% read_html %>% html_node("h1") %>% html_text