我在用rvest
在 R 中进行网页抓取,我遇到了内存问题。我有一个 28,625 x 2 的字符串数据框,称为urls
其中包含我正在抓取的页面的链接。框架的一行包含两个相关链接。我想生成一个 28,625 x 4 数据框Final
以及从链接中抓取的信息。一条信息来自连续的第二个链接,另外三条信息来自第一个链接。这三条信息的 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/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)