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

使用Rvest对Freedom24网站IPO页做web scraping返回空值如何解决

问题原因

返回空值的核心原因是目标页面的IPO列表数据是JavaScript动态渲染生成的,rvest::read_html()只能获取页面初始静态HTML源码,这部分动态加载的IPO卡片内容在静态源码里不存在,你定位的tm-f24eu-ipo-card-past-grid-item类元素只有在浏览器执行完页面JS逻辑后才会生成,所以静态抓取无法匹配到对应元素。

解决方案

提供两种可直接落地的调整方案:

方案1:使用RSelenium模拟浏览器加载(适配性最高)

RSelenium可以启动真实浏览器内核加载页面,等JS执行完成、内容渲染完毕后再提取元素,代码示例:

# 首次使用先安装依赖包
# install.packages("rvest")
# install.packages("RSelenium")
library(rvest)
library(RSelenium)

# 启动Chrome驱动,需提前安装对应版本的Chrome和ChromeDriver
driver <- rsDriver(browser = "chrome", chromever = "你的Chrome浏览器对应版本号", port = 4545L)
remDr <- driver$client
remDr$navigate("https://es.freedom24.com/ipo/all")

# 等待动态内容加载完成,可根据网络情况调整等待时长
Sys.sleep(3)

# 获取渲染完成的完整页面源码
page_source <- remDr$getPageSource()[[1]]
web <- read_html(page_source)

# 提取IPO卡片内容
datos_web <- web %>%
  html_nodes(xpath = '//*[@class="tm-f24eu-ipo-card-past-grid-item"]') %>%
  html_text()

# 抓取完成后关闭驱动释放资源
remDr$close()
driver$server$stop()

# 查看抓取结果
head(datos_web)

方案2:直接请求后端数据接口

打开浏览器控制台的「网络」标签,筛选XHR/fetch类型请求,刷新页面后即可找到加载IPO数据的后端接口,直接请求接口即可拿到结构化JSON数据,无需解析HTML,抓取效率更高。

注意事项
  • 抓取前请确认目标网站的robots.txt规则和用户协议,遵守合规抓取要求
  • 可适当增加请求间隔,避免给目标服务器造成过大压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:45:04