【发布时间】:2014-06-30 19:31:01
【问题描述】:
我正在尝试运行一些简单的程序来从 html 代码中提取表格。但是,XML 包中的 readHTMLTable 似乎存在一些内存问题。有什么办法可以让我轻松解决这个问题。就像以某种方式为此命令指定一些特殊内存,然后手动释放它。
我试图把它放在一个函数中,并尝试使用 gc() 和不同版本的 R 和这个包,但似乎没有任何效果。我开始绝望了。
示例代码。如何在不爆炸内存大小的情况下运行它?
library(XML)
a = readLines("http://en.wikipedia.org/wiki/2014_FIFA_World_Cup")
while(TRUE) {
b = readHTMLTable(a)
#do something with b
}
编辑: 这样的事情仍然占据了我所有的记忆:
library(XML)
a = readLines("http://en.wikipedia.org/wiki/2014_FIFA_World_Cup")
f <- function(x) {
b = readHTMLTable(x)
rm(x)
gc()
return(b)
}
for(i in 1:100) {
d = f(a)
rm(d)
gc()
}
rm(list=ls())
gc()
我使用的是 win 7 并尝试了 32 位和 64 位。
【问题讨论】:
-
我在 Windows 上使用
XML包时遇到了严重的内存问题。我的解决方案是定期重启 R(将数据保存到 CSV)。我给包作者发了电子邮件。我们交换了一些电子邮件,但他基本上说他不能/不会调试 Windows。 -
好的。重新启动 R 工作,但每 5 分钟做一次手动工作并不是很好。我想唯一的方法是切换到 linux。 XML 是一个非常酷的包,但遗憾的是这些内存问题被破坏了。
标签: xml r memory-leaks web-scraping