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

使用rvest爬取ASX网站基本面数据失败,求解决方法

解决ASX网站动态数据爬取问题

ASX网站的基本面数据是通过JavaScript动态渲染的,直接用read_html获取的是初始未加载完成的HTML源码,所以你找不到目标元素,返回空结果。下面给你两种可行的解决方案:

方案一:用RSelenium模拟浏览器渲染

RSelenium可以模拟真实浏览器加载页面,等待JS执行完成后再获取完整的页面内容,步骤如下:

  1. 先安装所需包:
install.packages("RSelenium")
install.packages("rvest")
  1. 下载对应浏览器的驱动(比如ChromeDriver,需和你的Chrome版本匹配),确保驱动路径能被系统识别,或在代码中指定路径。

  2. 编写爬取代码:

library(RSelenium)
library(rvest)

# 启动Chrome浏览器驱动(替换chromever为你的Chrome版本号)
driver <- rsDriver(browser = "chrome", chromever = "118.0.5993.70")
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://www2.asx.com.au/markets/company/bhp")

# 等待页面加载完成(可根据网络情况调整等待时间)
Sys.sleep(5)

# 获取渲染后的页面源码
page_source <- remDr$getPageSource()[[1]]
ASX_bhp <- read_html(page_source)

# 提取EPS数值(用你指定的选择器)
eps_value <- ASX_bhp |> 
  html_element("#company_key_statistics > div > div.panel-body.row > div:nth-child(3) > table > tbody > tr:nth-child(8) > td") |> 
  html_text()

print(eps_value)

# 关闭浏览器及驱动
remDr$close()
driver$server$stop()

方案二:直接调用ASX的API接口(更高效稳定)

ASX的动态数据实际是通过API接口返回的,直接请求接口能拿到结构化数据,无需处理页面渲染:

library(httr)
library(jsonlite)

# 请求BHP的关键统计数据API
response <- GET("https://api-markets2.asx.com.au/asx/1/companies/BHP/keyStatistics")
data <- fromJSON(content(response, "text"))

# 提取EPS数据(查看返回的JSON结构,直接定位对应字段)
eps <- data$equity$eps
print(eps)

这种方法效率更高,也更不容易受页面结构变化影响,推荐优先使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:50:27