使用 rvest 或 RSelenium 在框架内创建 table 的自动网络抓取
Using rvest or RSelenium to create automated webscrape of table inside frame
我知道有很多 resources/questions 与这个主题有关,但我已经尝试了好几天,但似乎无法弄清楚。我以前有过网页抓取网站,但这个给我带来了问题。
网址: njaqinow.net
我要抓取的内容:我想抓取"Current Status"->"Pollutants"标签下的table。我希望每次 table 更新时都将其删除,这样我就可以在我正在创建的闪亮应用程序中使用这些信息。
我尝试过的方法:我尝试过许多不同的方法,但为了简单起见,我将展示我最近的方法:
library("rvest")
url<-"http://www.njaqinow.net"
webpage <- read_html(url)
test<-webpage%>%
html_node("table")%>%
html_table()
我猜这比我原先想的要复杂得多,因为在我看来 table 在一个框架内。我不是 javascript/HTML 专业人士,所以我不完全确定。任何 help/guidance 将不胜感激!
我可以用 RSelenium 贡献一个解决方案。我会告诉你如何导航到 table 和
得到它的内容。为了格式化 table 内容,我为另一个问题提供了 link,但不会
在这个答案的范围内。
我认为你有两个挑战。切换到一个帧和在帧之间切换。
切换到帧由 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()
要格式化 table 你可以看这里:
scraping table with R using RSelenium
我知道有很多 resources/questions 与这个主题有关,但我已经尝试了好几天,但似乎无法弄清楚。我以前有过网页抓取网站,但这个给我带来了问题。
网址: njaqinow.net
我要抓取的内容:我想抓取"Current Status"->"Pollutants"标签下的table。我希望每次 table 更新时都将其删除,这样我就可以在我正在创建的闪亮应用程序中使用这些信息。
我尝试过的方法:我尝试过许多不同的方法,但为了简单起见,我将展示我最近的方法:
library("rvest")
url<-"http://www.njaqinow.net"
webpage <- read_html(url)
test<-webpage%>%
html_node("table")%>%
html_table()
我猜这比我原先想的要复杂得多,因为在我看来 table 在一个框架内。我不是 javascript/HTML 专业人士,所以我不完全确定。任何 help/guidance 将不胜感激!
我可以用 RSelenium 贡献一个解决方案。我会告诉你如何导航到 table 和 得到它的内容。为了格式化 table 内容,我为另一个问题提供了 link,但不会 在这个答案的范围内。
我认为你有两个挑战。切换到一个帧和在帧之间切换。
切换到帧由 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()
要格式化 table 你可以看这里: scraping table with R using RSelenium