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/
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])