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

R语言爬取fxblue站点失败:rvest、RSelenium均返回空值,求正确方案

失败原因说明
  • 首次使用rvest爬取失败:目标站点的情绪数值为前端动态渲染数据,初始静态HTML中不存在.SentimentValueCaptionLong对应节点,该节点是页面加载完成后由JavaScript请求后端接口数据后生成的。rvest仅能读取初始静态HTML内容,无法执行JavaScript渲染逻辑,因此无法定位到目标节点。
  • 第二次使用RSelenium爬取失败:执行页面跳转后未设置等待时间,直接拉取页面源码时,JavaScript尚未完成数据请求和节点渲染操作,拉取到的源码中仍未生成目标节点,因此返回空结果。
修正后的RSelenium实现代码
library(RSelenium)
# 注意:chromever参数需与本地安装的Chrome浏览器版本保持一致,否则会启动失败
rD <- rsDriver(browser="chrome", port=9999L, verbose = F, chromever = "填写你的Chrome对应版本号")
remDr <- rD[["client"]]
remDr$maxWindowSize()
remDr$navigate("https://www.fxblue.com/market-data/tools/sentiment")

# 设置等待时间,确保页面JS执行完成、目标节点渲染完毕,可根据网络情况调整时长
Sys.sleep(3)

# 直接通过RSelenium定位元素并提取文本,无需转换为rvest对象处理
target_node <- remDr$findElement(using = "css selector", value = ".SentimentValueCaptionLong")
result <- target_node$getElementText()[[1]]
print(result)

# 任务完成后关闭浏览器和驱动,避免后台残留进程
remDr$close()
rD$server$stop()
更高效的实现方案(无浏览器依赖)

你可以通过浏览器开发者工具的「网络」面板,筛选XHR/Fetch类型的请求,找到返回情绪数据的后端接口,直接发起请求解析返回的JSON数据即可。该方案不需要启动浏览器,运行速度更快,也无需处理浏览器版本匹配、节点等待等问题。


内容的提问来源于stack exchange,提问作者mr.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:24:04