从 XML 包中保存 htmlParse 对象

Posted

技术标签:

【中文标题】从 XML 包中保存 htmlParse 对象【英文标题】:Save htmlParse object from XML package 【发布时间】:2012-09-11 08:19:46 【问题描述】:

我想保存作为 htmlParse 命令结果的对象。这是一些代码来说明我的问题。简单地说,我希望能够将解析 HTML 页面保存到一个对象并将其加载到未来的会话中。

library(XML)
PATH = "/colleges/Bentley-University"
URL <- paste("http://www.cappex.com", PATH, sep="")
doc <- htmlParse(URL)
mylist <- list(doc)
mylist[[1]]
save(mylist, file="mylist.Rdata")
rm(list=ls())
load("mylist.Rdata")

但是,当我尝试回忆列表的内容时,出现以下错误:

> mylist[[1]]
Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
  cannot open file '/var/folders/hv/wtvckymn0230hpsdwylmtf0r0000gn/T//Rtmp8Mrpev/fileed256550e50': No such file or directory

【问题讨论】:

警告可能复制此内容的人。 Btibert3 还没有构建一个最小的例子。 mylist[[1]] 的输出有很多页。如果这是他想要的,他应该保存 mylist[[1]] 因为:在 mylist 上执行 str 会得到:List of 1 $ :Classes 'HTMLInternalDocument', 'XMLInternalDocument' &lt;externalptr&gt; 【参考方案1】:

doc 无法保存,因为它是指向“C 级节点”的指针。把它放在一个列表中并不能改变这个事实。您可以先将 XML 树的表示形式写入字符串,然后再保存。之后就可以恢复文字了。

library(XML)
PATH = "/colleges/Bentley-University"
URL <- paste("http://www.cappex.com", PATH, sep="")
doc <- htmlParse(URL)
saveXML(doc, file="ex.txt")
rm(list=ls())

# recover
doc<-htmlParse('ex.txt')

【讨论】:

但是如何保存一个列表而不是一个 HTML 解析文件?

以上是关于从 XML 包中保存 htmlParse 对象的主要内容,如果未能解决你的问题,请参考以下文章

从 xml 加载对象,在动态 UI 中编辑值并保存回 xml

R爬取网页信息

使用 .onLoad() 将对象加载到 R 包中的全局环境中

传统Spring项目的创建和使用xml文件来保存对象和取对象

csharp Html Agility Pack #CSharp #HtmlParsing

从 json 动态创建的 Javascript 表单输入,需要将对象映射到另一个对象的正确字段并保存