使用 rvest 进行网页抓取时出现 R 内存问题

R memory issues while webscraping with rvest

我正在使用 rvest 在 R 中进行网络抓取,但我 运行 遇到了内存问题。我有一个名为 urls 的 28,625 x 2 字符串数据框,其中包含我正在抓取的页面的 link。帧的一行包含两个相关的 link。我想生成一个 28,625 x 4 的数据框 Final,其中包含从 link 中抓取的信息。一条信息来自连续第二个link,另外三个来自第一个link。这三条信息的 xpath 存储为向量 xpaths 中的字符串。我正在使用以下代码执行此操作:

data <- rep("", 4 * 28625)

k <- 1

for (i in 1:28625) {

  name <- html(urls[i, 2]) %>%
    html_node(xpath = '//*[@id="seriesDiv"]/table') %>%
    html_table(fill = T)

  data[k] <- name[4, 3]

  data[k + 1:3] <- html(urls[i, 1]) %>% 
    html_nodes(xpath = xpaths) %>%
    html_text()

  k <- k + 4

}

dim(data) <- c(4, 28625)
Final <- as.data.frame(t(data))

它运行良好,但是当我打开任务管理器时,我看到我的内存使用量一直在单调增加,并且在大约 340 次迭代后目前为 97%。我只想启动程序并在一两天内返回,但我的所有 RAM 都将在工作完成之前耗尽。我对 R 如何分配内存做了一些研究,并且我尽力预分配内存并就地修改,以防止代码进行不必要的复制等。

为什么这么占用内存?有什么办法可以解决吗?

Rvest 已更新以解决此问题。看这里:

http://www.r-bloggers.com/rvest-0-3-0/