如何在R中自动获取PSE网站近7天的风电发电数据?
解决自动获取PSE网站近7天风发电数据的方案
原代码仅能抓取页面显示的当日数据,而网站的历史数据需通过「Eksport za okres」功能提交日期范围导出。以下是用R基础工具+dplyr实现的自动获取方案:
核心思路
- 模拟网站导出功能的POST请求,提交近7天的日期参数
- 解析返回的结构化数据(CSV格式)
- 用dplyr完成数据清洗与过滤
完整代码
# 加载所需包 library(httr) library(dplyr) # 定义近7天的日期范围(含当日) date_start <- Sys.Date() - 6 # 起始为7天前的日期,确保覆盖7天周期 date_end <- Sys.Date() # 转换为网站要求的日期格式(YYYY-MM-DD) date_start_str <- format(date_start, "%Y-%m-%d") date_end_str <- format(date_end, "%Y-%m-%d") # 发送POST请求获取导出数据 response <- POST( url = "https://www.pse.pl/dane-systemowe/funkcjonowanie-kse/raporty-dobowe-z-pracy-kse/generacja-zrodel-wiatrowych/export", body = list( date_from = date_start_str, date_to = date_end_str, format = "csv" ), encode = "form" ) # 检查请求是否成功 if (http_status(response)$category != "Success") { stop("请求失败,状态码:", status_code(response)) } # 解析CSV数据 wind_data <- content(response, type = "text/csv", encoding = "UTF-8", show_col_types = FALSE) # 数据清洗与过滤(根据实际CSV结构调整列名) wind_data <- wind_data %>% mutate(Date = as.Date(Date)) %>% filter(Date >= date_start & Date <= date_end) # 查看结果 head(wind_data)
关键说明
- 用
httr::POST模拟手动提交日期范围的操作,无需依赖浏览器自动化工具 - 日期范围计算:
Sys.Date() - 6确保包含当日在内共7天数据 - 若网站导出接口的参数或格式发生变化,需通过浏览器开发者工具重新抓包确认接口地址与参数名
内容的提问来源于stack exchange,提问作者Ola
相关产品推荐
相关产品推荐

