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

在R中使用RSelenium抓取动态网页遇启动及版本兼容问题

解决R中动态网页抓取的问题(RSelenium故障及替代方案)

修复RSelenium的驱动兼容问题

RSelenium的核心故障多源于驱动版本不匹配或端口占用,使用wdman包可自动处理驱动匹配,无需手动下载:

Chrome驱动修复

install.packages("wdman")
library(wdman)
library(RSelenium)

# 自动下载匹配当前Chrome版本的驱动,并启动服务
chrome_service <- wdman::chrome()
remDr <- remoteDriver(browserName = "chrome", port = chrome_service$port)
remDr$open()

wdman会自动检测Chrome版本,下载对应ChromeDriver,彻底解决版本不兼容问题。

Firefox驱动修复

若Firefox端口连接失败,同样用wdman管理驱动,同时检查端口占用:

firefox_service <- wdman::firefox()
remDr <- remoteDriver(browserName = "firefox", port = firefox_service$port)
remDr$open()
  • 若仍报错,检查4545端口是否被占用:
    • Windows:运行netstat -ano | findstr :4545,找到PID后在任务管理器终止对应进程
    • Mac/Linux:运行lsof -i :4545,用kill <PID>终止进程

更高效的无浏览器替代方案

动态网页的数据通常通过API加载,直接抓取API比浏览器渲染更高效:

直接调用EURONEXT的公开API

install.packages(c("httr", "jsonlite"))
library(httr)
library(jsonlite)

# 构造API请求,可调整market、page、size参数筛选数据
api_url <- "https://live.euronext.com/en/json/equities_list"
request_params <- list(
  market = "all",
  page = 1,
  size = 100
)

# 获取并解析JSON数据
response <- GET(api_url, query = request_params)
raw_data <- fromJSON(content(response, "text"))
equities_data <- raw_data$equities

# 查看结果
head(equities_data)

用rvest+V8解析页面JS数据

若API难以定位,可提取页面中嵌入的JS数据(适用于React/Vue构建的网站):

install.packages(c("rvest", "V8"))
library(rvest)
library(V8)

# 获取页面HTML
target_url <- "https://live.euronext.com/en/products/equities/list"
page_html <- read_html(target_url)

# 提取嵌入的JS数据块
js_data <- html_element(page_html, "script#__NEXT_DATA__") %>% html_text()

# 用V8引擎解析JS数据
js_ctx <- v8()
js_ctx$eval(paste0("var pageData = ", js_data))
parsed_data <- js_ctx$get("pageData")

# 提取股票列表
equities_list <- parsed_data$props$pageProps$initialState$equitiesList$equities
head(equities_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:11:01