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

使用rvest爬取纳斯达克IPO页面无法获取目标数据的求助

解决rvest爬取纳斯达克IPO页面无法获取数据的问题

我明白你遇到的困扰了——用rvest直接爬取纳斯达克IPO页面时,完全拿不到目标的Priced表格数据,甚至tbody节点返回的都是空内容。这核心原因是这个页面的IPO表格是动态加载的:服务器返回的初始HTML里只有空的占位符,实际数据是通过JavaScript从后端API拉取后渲染到页面上的,静态爬取方式根本抓不到真实数据。

下面给你两种可行的解决方案:

方案一:直接请求后端API(推荐,高效稳定)

纳斯达克的IPO数据其实是通过公开的API接口提供的,我们可以跳过前端页面,直接请求这个接口获取JSON格式的数据,解析起来更方便快捷。

代码示例:

library(httr)
library(jsonlite)

# 请求Priced类型的IPO数据接口,模拟浏览器请求避免被拦截
response <- GET(
  url = "https://api.nasdaq.com/api/ipo/calendar?date=priced",
  add_headers(
    "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
  )
)

# 解析JSON响应内容
ipo_data <- fromJSON(content(response, "text"))

# 提取Priced表格的核心数据(包含你需要的Symbol、Company Name等字段)
priced_ipos <- ipo_data$data$priced$data

# 查看目标字段
print(priced_ipos[, c("symbol", "companyName", "price", "offerDate")])

说明:

  • 接口参数date=priced指定获取已定价的IPO数据,如果你需要其他类型(比如即将上市的),可以改成date=upcoming或date=all。
  • 加上User-Agent头是为了模拟浏览器请求,避免被接口直接拒绝。

方案二:用RSelenium模拟浏览器加载(适合复杂动态页面)

如果API接口有变化,或者你需要模拟完整的页面交互操作,可以用RSelenium启动真实浏览器加载页面,等数据渲染完成后再爬取。

代码示例:

library(RSelenium)
library(rvest)

# 启动Chrome浏览器(会自动下载对应驱动,也可以手动指定)
driver <- rsDriver(browser = "chrome", port = sample(4000:5000, 1))
remDr <- driver[["client"]]

# 访问IPO页面
remDr$navigate("https://www.nasdaq.com/market-activity/ipos")

# 等待页面加载完成(给JS足够时间拉取数据,可根据网络情况调整延迟)
Sys.sleep(5)

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

# 精准定位Priced表格的tbody,转换成数据框
priced_table <- page_html %>% 
  html_element("#priced-ipos") %>%  # 定位Priced表格的容器
  html_element("tbody") %>% 
  html_table()

# 查看你需要的字段
head(priced_table[, c("Symbol", "Company Name", "Price", "Offer Date")])

# 关闭浏览器和驱动
remDr$closeSession()
driver$server$stop()

为什么你的原始代码失败?

你用read_html(url)获取的是服务器返回的初始静态HTML,这个HTML里的<tbody>只是空的占位符,真实的IPO数据还没有被JavaScript插入到页面中。所以xml_nodes("tbody")拿到的是空节点集合,xml_text()自然只有换行符了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:05:09