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

R语言爬取Coinbase Pro时html_nodes返回{xml_nodeset (0)}如何解决

爬取Coinbase Pro返回空节点的修复方案

拿到空节点的核心原因是Coinbase Pro市场页的数据是前端JavaScript动态渲染生成的:read_html()只能拿到页面初始的静态HTML骨架,你要的加密货币列表、.dOEGza类对应的元素,都是页面加载完成后JS请求后端接口数据,再动态插入到DOM里的,静态请求自然找不到对应节点。

另外注意:你用的.dOEGza是前端框架生成的哈希类名,这类类名会随网站版本迭代随时变更,就算你拿到了渲染后的页面,后续网站更新也会导致选择器失效,不推荐用这类随机类名做定位。

修复方案

方案1:使用无头浏览器模拟页面渲染

用R的RSelenium包启动无头浏览器,等页面完全渲染后再提取节点,示例代码如下:

# 安装加载依赖包
# install.packages("RSelenium")
# install.packages("rvest")
library(RSelenium)
library(rvest)

# 启动无头Chrome,chromever参数需替换为你本地Chrome对应的版本号
driver <- rsDriver(
  browser = "chrome", 
  chromever = "替换为你的Chrome版本号",
  extraCapabilities = list(
    chromeOptions = list(args = c("--headless", "--disable-gpu"))
  )
)
remDr <- driver$client

# 访问目标页面
remDr$navigate("https://pro.coinbase.com/markets")
# 等待页面渲染完成,可根据网络情况调整等待时长
Sys.sleep(3)

# 获取渲染后的完整页面源码
pg <- read_html(remDr$getPageSource()[[1]])
# 提取目标节点
target_nodes <- html_nodes(pg, '.dOEGza')

# 操作完成后关闭驱动
remDr$close()
driver$server$stop()

方案2:直接调用官方公开接口(更推荐)

Coinbase Pro本身提供公开的市场数据接口,不需要爬取页面,不会触发反爬策略,数据结构稳定、获取效率更高,示例代码如下:

# 安装加载依赖包
# install.packages("httr")
# install.packages("jsonlite")
library(httr)
library(jsonlite)

# 请求公开产品接口,直接获取所有加密货币交易对完整信息
res <- GET("https://api.exchange.coinbase.com/products")
data <- fromJSON(content(res, as = "text"))

# 直接提取加密货币名称等所需字段
coin_names <- data$base_currency

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:06:02