Web抓取表格:使用rvest和splash时出错

Web抓取表格:使用rvest和splash时出错,r,web-scraping,R,Web Scraping,我正试图从这个链接()中删除一个表。到目前为止,我已经尝试了两种方法: 使用rvest,但我在页面上找不到表的HTML节点 使用splash,假设页面是动态加载的 这两种方法似乎都不适合我。经过数小时的尝试和阅读帖子/博客等,我似乎无法找出我遗漏了什么。有人能告诉我正确的方向吗?或者至少告诉我我做错了什么?谢谢 使用rvest进行刮削: library(rvest) loadedTable <- read_html("https://www.sac-isc.gc.ca/eng/

我正试图从这个链接()中删除一个表。到目前为止,我已经尝试了两种方法:

  • 使用rvest,但我在页面上找不到表的HTML节点
  • 使用splash,假设页面是动态加载的
  • 这两种方法似乎都不适合我。经过数小时的尝试和阅读帖子/博客等,我似乎无法找出我遗漏了什么。有人能告诉我正确的方向吗?或者至少告诉我我做错了什么?谢谢

    使用rvest进行刮削:

    library(rvest)
    
    loadedTable <- read_html("https://www.sac-isc.gc.ca/eng/1620925418298/1620925434679") %>%
    
    html_nodes("table") %>%
    
    html_table() %>%
    
    as.tbl()
    
    使用飞溅器进行刮除:

    library(splashr)
    library(reticulate)
    
    install_splash()
    
    splash("localhost") %>% splash_active()
    
    sp <- start_splash()
    
    pg <- render_html(url = 'https://www.sac-isc.gc.ca/eng/1620925418298/1620925434679')
    
    stop_splash(sp)
    
    loadedTable1 <- pg %>% 
      html_node('table') %>% 
      html_table()
    
    loadedTable1
    

    它是从另一个URI动态提取的。要编写一个流程来提取您在页面上看到的内容,或者您实际想要看到的内容,还需要做一些工作,因为有很多信息返回,包括所有的
    更多详细信息

    最后的unix时间戳主要是为了防止缓存结果被提供。您可以生成它,并将其sprint到url的其余部分

    library(jsonlite)
    
    data <- jsonlite::read_json('https://www.sac-isc.gc.ca/DAM/DAM-ISC-SAC/DAM-WTR/STAGING/texte-text/lTDWA_map_data_1572010201618_eng.txt?date=1622135739812')
    

    检查data$data(例如索引1)下的列表,并为所需的输出格式编写解析函数。在这里查看结果树:谢谢Qharr!由于这会生成一个列表列表,我只想从中为每个ID提取LTDWACurrent和LTDWALifted(以非空为准)片段。是否有一个库可以帮助截断并帮助我实现这一点?1/2 Hiya!因此,它并不总是非此即彼。是表中的所有数据。如果你看一下以0为基础的列表中的11号,ID 13,Mississaugas,你会看到有4个电流和1个提升。您还可以通过执行
    data$data[[12]]$LTDWACurrent
    data$data[[12]]]$LTDWALifted
    或展开网站上的表格以显示更多结果来查看这一点。请您对照我上面提供的链接查看扩展表,然后告诉我这些结果应如何显示(完整)。2/2在该示例中,水系统名称似乎是一个重要的区别。
    Did not find required python module 'docker'
    Error in curl::curl_fetch_memory(url, handle = handle) : 
      Failed to connect to localhost port 8050: Connection refused
    Error in stop_splash(sp) : object 'sp' not found
    Error in html_element(...) : object 'pg' not found
    Error: object 'loadedTable1' not found
    
    library(jsonlite)
    
    data <- jsonlite::read_json('https://www.sac-isc.gc.ca/DAM/DAM-ISC-SAC/DAM-WTR/STAGING/texte-text/lTDWA_map_data_1572010201618_eng.txt?date=1622135739812')
    
    print(data$data[82])