Учитывая, что это всего 17 страниц, я бы вручную нажимал на страницы и сохранял исходный код HTML.Это займет не более 3-5 минут.
Однако, если вы хотите сделать это программно, мы можем начать с написания функции, которая берет номер страницы, находит ссылку для этой страницы, нажимает на ссылку и возвращает источник HTML для этой страницы:
get_html <- function(i) {
webElem <- remDr$findElement(using = "link text", as.character(i))
webElem$clickElement()
Sys.sleep(s)
remDr$getPageSource()[[1]]
}
Инициализируйте некоторые значения:
s <- 2 # seconds to wait between each page
total_pages <- 17
html_pages <- vector("list", total_pages)
Запустите браузер, перейдите на страницу 1 и сохраните источник:
library(RSelenium)
rD <- rsDriver()
remDr <- rD[["client"]]
base_url <- "http://dgsp.cns.gob.mx/Transparencia/wConsultasGeneral.aspx"
remDr$navigate(base_url)
src <- remDr$getPageSource()[[1]]
html_pages[1] <- src
Для страниц со 2 по 17мы используем цикл for и вызываем функцию, которую мы написали выше, заботясь об учете специально для страницы 11:
for (i in 2:total_pages) {
if (i == 11) {
webElem <- remDr$findElement(using = "link text", "...")
webElem$clickElement()
Sys.sleep(s)
html_pages[i] <- remDr$getPageSource()[[1]]
} else {
html_pages[i] <- get_html(i)
}
}
remDr$close()
В результате получается html_pages
, список длиной 17, с каждым элементомHTML источник для каждой страницы.Как разобрать данные из HTML в какую-то другую форму (например, в фрейм данных), вероятно, отдельный вопрос.