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

如何通过option值“all”使用R完成指定网页的表格数据抓取

R实现选All后抓取表格的两种可行思路

你可以根据自己的熟练度选择对应的方案,两种都可以稳定拿到全量数据:

方案1:直接构造请求(无需启动浏览器,运行效率更高)

这个方案不需要模拟浏览器操作,只要抓到选择all时页面发送的请求参数即可:

  • 打开目标页面后按F12调出开发者工具,切换到「网络」标签,筛选Fetch/XHR类型的请求
  • 手动在页面下拉框选all选项,观察新触发的请求参数,一般会有类似pageSize/rows/perPage这类控制展示条数的字段,对应的值就是all或者全站总数据条数
  • 用R的httr包构造带对应参数的请求,拿到返回内容后用rvest解析表格即可
    示例代码框架:
library(httr)
library(rvest)

# 构造请求,query部分替换为你抓包拿到的实际参数
resp <- GET(
  "https://tools.canlearn.ca/cslgs-scpse/cln-cln/reea-mdl/reea-mdl-1-eng.do?nom-name=AB",
  query = list(
    # 示例:pageSize = "all",实际参数以你抓包结果为准
  )
)

# 解析表格
table_data <- resp %>% 
  read_html() %>% 
  html_element(css = "table") %>% # 替换为页面表格对应的实际CSS选择器
  html_table()

如果抓包发现是POST请求,把GET换成POST,参数放到body字段里即可。

方案2:RSelenium模拟操作(适合抓包不熟练的新手)

这个方案完全模拟人的操作逻辑,不需要研究请求参数:

  • 提前安装RSelenium包,以及和你本地浏览器版本匹配的驱动(Chrome用chromedriver,Edge用edgedriver)
  • 启动驱动后打开目标页面,定位到下拉框元素,选中all选项
  • 等待页面加载完成后提取页面源码,再用rvest解析表格即可
    示例代码框架:
library(RSelenium)
library(rvest)

# 启动Chrome驱动,chromever替换为你本地Chrome的实际版本号
driver <- rsDriver(browser = "chrome", chromever = "xxx.xxx.xx.x")
remDr <- driver$client

# 打开目标页面
remDr$navigate("https://tools.canlearn.ca/cslgs-scpse/cln-cln/reea-mdl/reea-mdl-1-eng.do?nom-name=AB")

# 定位下拉框并选择all选项,css选择器替换为下拉框的实际值
dropdown <- remDr$findElement(using = "css", value = "select")
dropdown$findElement(using = "xpath", value = "//option[@value='all']")$clickElement()

# 等待页面加载完成
Sys.sleep(3)

# 提取表格数据
page_source <- remDr$getPageSource()[[1]]
table_data <- read_html(page_source) %>% 
  html_element(css = "table") %>% 
  html_table()

# 用完关闭驱动释放资源
remDr$close()
driver$server$stop()

内容的提问来源于stack exchange,提问作者Dax

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 03:27:05