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

使用rvest读取藤本植物动态表格失败,求R语言解决方法

解决R语言抓取动态加载藤本植物表格的问题

问题原因

目标页面的表格内容是JavaScript动态渲染的,rvest::read_html()只能获取服务器返回的初始静态HTML,无法捕获JavaScript执行后生成的动态内容,因此只能拿到空的表格结构。

解决方案:使用RSelenium模拟浏览器抓取

RSelenium可以模拟真实浏览器的行为,等待页面加载完成后再获取完整HTML内容,从而正确提取表格数据。

步骤1:安装依赖包

install.packages(c("RSelenium", "rvest", "dplyr", "wdman"))

步骤2:编写抓取代码

library(RSelenium)
library(rvest)
library(dplyr)
library(wdman)

# 自动匹配并启动Chrome驱动(避免版本兼容问题)
chrome_version <- chromever()
driver <- rsDriver(browser = "chrome", chromever = chrome_version$version)
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://www.forestryimages.org/browse/catsubject.cfm?cat=51")

# 等待页面完全加载(根据网络情况调整时间,5秒基本足够)
Sys.sleep(5)

# 获取加载完成后的页面HTML
page_html <- read_html(remDr$getPageSource()[[1]])

# 提取表格数据
vine_table <- page_html %>% html_table() %>% .[[1]]

# 仅保留Common Name列
common_names_df <- vine_table %>% select(`Common Name`)

# 查看结果
head(common_names_df)

# 关闭浏览器和驱动,释放资源
remDr$close()
driver$server$stop()

关键说明

  • rsDriver启动Chrome浏览器实例,完全模拟用户浏览行为,确保动态内容加载完成。
  • Sys.sleep(5)用于等待JavaScript执行完毕,若网络较慢可适当延长时间。
  • 执行完成后必须关闭驱动,避免占用系统资源。

替代方案:分析页面数据接口(进阶)

若不想使用浏览器模拟,可打开浏览器开发者工具(F12),查看Network标签下的XHR请求,找到页面加载表格数据的后台接口,直接用httr请求接口获取JSON/XML数据。这种方式更高效,但需要具备基础的网页分析能力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:45:33