我已经编写了这个函数,并在循环中运行它,以便对大约100万个URL进行网页抓取,但是一段时间后我的内存已满,R就会关闭。
library(tm.plugin.webmining)
getContents <- function(url) {
out <- tryCatch(
{extractContentDOM(url, asText = F,threshold=0.5)},
error=function(cond) {
message(paste("URL does not seem to exist:",
message("Here's the original error message:")
message(cond)
return(NA)},
warning=function(cond) {
message(paste("URL caused a warning:", url))
message("Here's the original warning message:")
message(cond)
return(NA)},
finally={
message(paste("Processed URL:", url))})
return(out)}
#save text
a=getContents(http://www.nytimes.com/)
如果我这样做,总是会遇到与内存管理相关的问题。基本上,我会循环遍历URL列表,提取文本并进行分析。
每次运行该函数时,使用的内存都会增加几MB。当您尝试使用释放内存到系统时,就会出现问题。
rm(list = ls())
gc()
任务管理器没有显示已经将内存归还给系统;过一段时间后系统会关闭,因为没有可用的内存。我也尝试重新启动R,但似乎没有办法在循环中重启R,以便循环继续进行。
我已经阅读了很多关于这个问题的文章,但是我还没有找到一个合适的答案。
谢谢!