RSelenium代码修改:实现下拉菜单value从11递增至20的遍历
解决方案:循环遍历value值11到20
要让代码自动处理@value从"11"到"20"的所有选项,只需要添加一个循环逻辑即可。修改后的完整代码如下:
library(writexl) # 转换表格为可用的Excel文件 library(rvest) # 网页表格抓取 library(dplyr) # 数据处理 library(tidyverse) library(RSelenium) library(netstat) library(data.table) library(glue) # 用于动态拼接字符串(若未安装先运行install.packages("glue")) rs_driver_object <- rsDriver(browser = "chrome", chromever = "103.0.5060.134", verbose = F, port = free_port()) remDr <- rs_driver_object$client remDr$navigate("https://apps.oirp.ncsu.edu/pgem/index.cfm?action=main.summary") # 点击学院下拉按钮 college_button <- remDr$findElement(using = 'xpath', '//select[@name="collegeID"]') college_button$clickElement() # 用于存储各学院数据的列表(可选,按需保留) all_college_data <- list() # 循环遍历value从11到20 for (value in 11:20) { # 动态生成XPath,替换当前循环的value值 next_college <- remDr$findElement(using = 'xpath', glue('//select[@name="collegeID"]/option[@value = "{value}"]')) remDr$mouseMoveToLocation(webElement = next_college) next_college$clickElement() # 点击更新按钮 update_button <- remDr$findElement(using = 'xpath', '//input[@id="btnFilter2"]') update_button$clickElement() # 等待页面加载完成(避免抓取未加载的数据) Sys.sleep(2) # 抓取当前学院的表格数据并存入列表(可选,按需保留) page_source <- remDr$getPageSource()[[1]] ncsu_table <- read_html(page_source) %>% html_element('#summaryTable') %>% html_table() all_college_data[[as.character(value)]] <- ncsu_table } # 关闭浏览器和驱动,释放资源 remDr$close() rs_driver_object$server$stop() # 将所有学院数据导出到Excel(可选,按需保留) write_xlsx(all_college_data, "ncsu_college_summary.xlsx")
关键修改说明
- 新增
for (value in 11:20)循环,自动遍历11到20的每个数值 - 用
glue()动态拼接XPath字符串,每次循环都会定位到对应value的选项 - 补充了页面等待、数据抓取和导出的逻辑(不需要的话可以直接删除相关代码)
- 添加了关闭浏览器和驱动的代码,避免资源占用
内容的提问来源于stack exchange,提问作者Alan Chan
相关产品推荐
相关产品推荐

