我知道有很多资源/问题可以解决这个问题,但是我已经尝试了好几天,而且似乎无法弄清楚。我以前曾在网上抓过网站,但这是我的问题。
网站: njaqinow.net
我要抓取的内容:我想抓取“当前状态”->“污染物”标签下的表格。我希望每次更新表时都将其清除,以便可以在正在创建的闪亮应用程序中使用此信息。
我尝试过的方法:我尝试了许多不同的方法,但为简单起见,我将展示我最近的方法:
library("rvest")
url<-"http://www.njaqinow.net"
webpage <- read_html(url)
test<-webpage%>%
html_node("table")%>%
html_table()
我的猜测是,这比我最初认为的要复杂得多,因为在我看来,桌子在框架内。我不是javascript / HTML专业人士,所以我不确定。任何帮助/指导将不胜感激!
答案 0 :(得分:2)
我可以为RSelenium提供解决方案。我将向您展示如何导航到该表,并 得到它的内容。为了格式化表格内容,我提供了另一个问题的链接,但不会 在此答案的范围内。
我认为您面临两个挑战。切换到框架并在框架之间切换。
切换到框架是通过remDr$switchToFrame()
完成的。
这里讨论帧之间的切换:https://github.com/ropensci/RSelenium/issues/155。 就您而言:
remDr$switchToFrame("contents")
...
remDr$switchToFrame(NA)
remDr$switchToFrame("contentsi")
完整代码如下:
remDr$navigate("http://www.njaqinow.net")
frame1 <- remDr$findElement("xpath", "//frame[@id = 'contents']")
remDr$switchToFrame(frame1)
remDr$findElement("xpath", "//*[text() = 'Current Status']")$clickElement()
remDr$findElement("xpath", "//*[text() = 'POLLUTANTS']")$clickElement()
remDr$switchToFrame(NA)
remDr$switchToFrame("contentsi")
table <- remDr$findElement("xpath", "//table[@id = 'C1WebGrid1']")
table$getElementText()
要格式化表格,您可以在这里查看: scraping table with R using RSelenium