Install and load
install.packages("RSelenium")
library(RSelenium)
library(rvest)
library(dplyr)
Start a Selenium server and browser
rD <- rsDriver(browser = "chrome", port = 4567L, verbose = FALSE)
remDr <- rD$client
Go to FDIC exam schedule page
url <- "https://www.fdic.gov/resources/bankers/exam-schedule/index.html"
remDr$navigate(url)
Sys.sleep(3) # wait for JS to load
Empty list to hold all rows
all_data <- list()
repeat {
# Get current page source and parse with rvest
page_source <- remDr$getPageSource()[[1]]
page_html <- read_html(page_source)
# Grab the table
tbl <- page_html %>% html_element("table") %>% html_table(fill = TRUE)
all_data <- append(all_data, list(tbl))
# Try clicking "next" if available and not disabled
next_btn <- remDr$findElements(using = 'css selector', value = '.paginate_button.next')
if (length(next_btn) == 0) break # No next button
disabled <- next_btn[[1]]$getElementAttribute("class")[[1]] %>% grepl("disabled", .)
if (disabled) break # Button is disabled, end of pages
next_btn[[1]]$clickElement()
Sys.sleep(2)
}
Combine all into one data frame
df_all <- bind_rows(all_data)
Save to CSV
write.csv(df_all, "fdic_exam_schedule_q2_2025_all_pages.csv", row.names = FALSE)
Stop the browser
remDr$close()
rD$server$stop()