首页 > 解决方案 > 在 R 中选择多个历史日期后,Rvest Web 抓取

问题描述

我正在尝试从 HTML 网站https://wrldc.in/GeneratorScheduleChart.html#下载数据

我一直在使用 R 包 Rvest

我从链接request_POST看到了 StackOverflow 中的一些示例。

运行此代码时,我收到错误消息 Error: object 'request_POST' not found

我正在使用选择器小工具工具来获取 HTML 和 CSS 选择器。

在这里,我们在“上次更新时间”标题下有另一个下拉菜单最后更新于,其中包含数据列表 @ 1 分钟间隔。

我想要的是在选择日历日期日历日期/日期选择器或日期选择器后下载数据,然后获取所有“最后更新时间”列表的所有表格

我不喜欢为此使用 Rselenium 包。

标签: rweb-scrapingrvest

解决方案


您可以在 Javascript 中为源 html 中的 Ajax 调用指定正确的端点。如果您随后在网络选项卡中找到对该端点的调用,则可以使用 httr 重新创建请求。您只需要 Content-Type 标头,但我还要添加 User-Agent。在正文中,您传递数据。

library(httr)
library(jsonlite)

headers = c('User-Agent' = 'Mozilla/5.0', 'Content-Type' = 'application/json; charset=UTF-8')
data = '{date:"2021-7-19"}'

r <- httr::POST(url = 'https://wrldc.in/GeneratorSchedule_data.aspx/Get_GeneratorScheduleData_state_Wise',
                httr::add_headers(.headers=headers), body = data) %>% content()

df <- jsonlite::parse_json(r$d, simplifyVector = T)

推荐阅读