Использование rvest или RSelenium для создания автоматизированного полотна таблицы внутри фрейма - PullRequest
1 голос
/ 02 апреля 2019

Я знаю, что есть много ресурсов / вопросов, которые касаются этой темы, но я пытался в течение нескольких дней и не могу понять это. Раньше у меня были веб-сайты, но этот вызывает у меня проблемы.

Сайт: njaqinow.net

Что я хочу очистить: Я хотел бы очистить таблицу под вкладкой «Текущее состояние» -> «Загрязнители». Я хотел бы, чтобы это происходило каждый раз при обновлении таблицы, чтобы я мог использовать эту информацию в блестящем приложении, которое я создаю.

enter image description here

Что я пробовал: Я пробовал множество разных подходов, но для простоты я покажу свой самый последний подход:

    library("rvest")
url<-"http://www.njaqinow.net"
webpage <- read_html(url)

test<-webpage%>%
  html_node("table")%>%
  html_table()

Я предполагаю, что это намного сложнее, чем я думал, потому что мне кажется, что стол находится внутри фрейма. Я не Javascript / HTML Pro, поэтому я не совсем уверен. Любая помощь / руководство будет принята с благодарностью!

1 Ответ

2 голосов
/ 05 апреля 2019

Я могу предложить решение с 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()

Для форматирования таблицы вы можете посмотреть здесь: скребковый стол с R с использованием RSelenium

...