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

R语言用rvest无法抓取动态多标签站表格 求目标标签页数据提取方案

问题原因

你用rvest直接抓取失败的核心原因是该页面为客户端渲染的动态页面,目标Characteristics板块的内容不会随初始HTML返回,是由JS异步加载、且需要点击对应标签才会渲染到DOM中,静态爬取工具无法直接获取。

可行解决方案(基于RSelenium)

完整实现代码

# 加载依赖
library(rvest)
library(RSelenium)
library(tidyverse)

# 1. 启动Selenium驱动器,此处以Chrome为例,使用火狐可将browser参数改为firefox
driver <- rsDriver(browser = "chrome", chromever = "latest", port = 4567L)
remDr <- driver$client

# 2. 导航到目标页面
URL <- "https://plants.sc.egov.usda.gov/home/plantProfile?symbol=ACPL"
remDr$navigate(URL)

# 3. 等待页面加载完成后,定位并点击Characteristics标签
# 可根据自身网络情况调整等待时长,也可替换为显式等待逻辑适配不同环境
Sys.sleep(3)
char_tab <- remDr$findElement(using = "css selector", value = 'a[aria-controls="Characteristics"]')
char_tab$clickElement()

# 4. 等待Characteristics板块内容加载完成
Sys.sleep(2)

# 5. 提取页面源码,用rvest解析得到目标数据框
page_source <- remDr$getPageSource()[[1]]
char_df <- read_html(page_source) %>%
  html_element(css = "#Characteristics table") %>%
  html_table()

# 6. 关闭驱动器释放资源
remDr$close()
driver$server$stop()

# 输出结果查看
print(char_df)

注意事项

  • 若启动驱动器时报版本不匹配错误,将chromever参数改为本地Chrome浏览器对应的版本号即可,火狐环境同理调整对应参数
  • 爬取过程请遵守站点robots协议,控制请求频率,避免给服务器造成额外压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:15:08