如何将网页抓取的数字放入自动刷新后会添加到数据框中的数据框中

时间:2019-12-12 02:44:44

标签: html r dataframe web-scraping

我想创建一个数据框架,该框架在每次运行脚本时都会更新。我希望一列具有编号,另一列具有记录的日期。这是我到目前为止所拥有的。

# Packages
library(miniUI)
library(shiny)
library(shinyFiles)
library(taskscheduleR)
library(rvest)
library(dplyr)
library(magrittr)

# Read in data
team_trees <- read_html("https://teamtrees.org/")

# Number of Trees
count <- team_trees %>% 
  html_nodes("#totalTrees") %>%
  html_attr("data-count")

total_trees <- count %>%
  as.numeric()
# Columns for data frame
day <- Sys.Date()

data <- data.frame(total_trees, day)
data

如何在每次运行脚本而不是替换数据框时更新此数据框?

2 个答案:

答案 0 :(得分:0)

每次将数据写入磁盘是否对您有用?

library(readr)

old_data <- read_csv("file/path/data.csv")

new_data <- old_data %>% 
  rbind(data.frame(total_trees, day))

write_csv(new_data, "file/path/data.csv")

答案 1 :(得分:0)

我的第一个想法是EugeneChong提出的建议,保存到磁盘。但是,如果您不想要这种持久性,则:

# ...
if (!exists("data")) data <- NULL
data <- rbind(data, data.frame(total_trees, day))

这不是处理问题的最干净的方法(rbind数据处理中的任何故障都可能使所有data处于不良状态),但是由于您不是保存到文件,我假设持久性的需求是不同的。

最终,一种更具弹性的方法将使用文件(csv,json,feather)或网络存储(SQL,redis)。