You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:06:21