【发布时间】:2020-06-12 07:06:37
【问题描述】:
我是 R 新手,目前正在尝试从网络上抓取一些数据。问题是我希望每五分钟运行一次代码,并在每次运行后将数据存储在数据框中。所有抓取的数据都应该存储在同一个数据框中。
示例: 网站上有生产数据,我想把它们刮到R:
A1 A2
100 200
这些数据每 5 分钟更新一次。我想要的是每次更新(或代码运行)时,都会将新数据附加到同一个数据帧中。
Result I want:
A1 A2 Time
100 200 28/02/2020 15:45:45
A1 A2 Time
103 199 28/02/2020 15:50:45
A1 A2 Time
90 194 28/02/2020 15:55:45
……….
目前我只得到了每次运行代码时都会覆盖结果的代码。我现在的代码如下所示:
library(rvest)
library(xml2)
library(plyr)
url <- "myurl"
content <- read_html(url)
dfNEW = data.frame()
Result <- content %>%
html_node("#gauge") %>%
html_attrs() %>%
`[`(c("dataA1", "dataA2"))
df <- as.data.frame(t(Result))
rownames(df) <- c()
df$Time <- Sys.time()
total <- rbind.fill(dfNEW, df)
你知道如何让循环做我想做的事吗?
提前致谢!
【问题讨论】:
-
你可能想看看这个:stackoverflow.com/questions/1174799/…。在循环结束时,告诉等待 5 分钟。
-
谢谢!但我的问题更多是关于每次运行代码时如何将新数据附加到数据帧。
-
最后一行应该是每 5 分钟更新一次最终数据帧,而不是创建一个新数据帧。比如:
total <- rbind.fill(total, dfNEW)。totaldata.frame 需要先初始化,在循环过程之前。
标签: r loops web-scraping rvest