【问题标题】:Rvest Web scraping after selecting multiple historical dates in R在 R 中选择多个历史日期后,Rvest Web 抓取
【发布时间】:2021-07-19 16:59:48
【问题描述】:

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

我一直在使用 R 包 Rvest

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

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

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

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

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

我不喜欢为此使用 Rselenium 包。

【问题讨论】:

    标签: r web-scraping rvest


    【解决方案1】:

    您可以在 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)
    

    【讨论】:

    • 谢谢。让我检查一下,然后回复你。
    • 谢谢,@QHarr。我能够得到数据。但是,在这里我只能获得“最后更新时间”的 df。我想要所有间隔时间的 df 列表。这可能吗?
    • 所有间隔是什么意思?你的意思是不同的日子?
    • 不,每天的时间不同。可能有 60×24 个可用的时间间隔(检查下拉菜单。有不同时间间隔的下拉菜单。我还上传了图像文件名“最后更新时间”(出现在我的主要问题中)。标题“最后update at" 有下拉时间间隔。我想下载所有 df。
    • 是的,它运行良好。结果符合我的要求。 > df_grp_id1 % as_tibble() > df_grp_id1 。获得完美的结果
    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多