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

如何在R中抓取NASA动态网页的小行星密切轨道要素数据?

解决R抓取JPL小行星密切轨道要素的问题

针对动态页面无法用rvest直接抓取的情况,提供两种可行方案:

方案1:用RSelenium模拟浏览器渲染页面

动态页面内容由JavaScript加载,rvest无法解析JS,因此用RSelenium模拟完整浏览器环境获取数据:

  1. 安装并加载依赖包:
install.packages(c("RSelenium", "rvest", "dplyr"))
library(RSelenium)
library(rvest)
library(dplyr)
  1. 启动Chrome驱动(确保已安装Chrome浏览器,rsDriver会自动匹配对应驱动版本):
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]
  1. 访问目标页面并等待加载:
remDr$navigate("https://ssd.jpl.nasa.gov/tools/sbdb_lookup.html#/?sstr=2006%20WP1")
Sys.sleep(5) # 等待页面完全加载,可根据网络情况调整时长
  1. 触发“轨道参数”下拉菜单:
# 通过XPath定位按钮并点击展开菜单
orbit_btn <- remDr$findElement(using = "xpath", value = "//button[contains(text(),'轨道参数')]")
orbit_btn$clickElement()
Sys.sleep(2) # 等待表格渲染完成
  1. 提取并解析表格:
page_source <- remDr$getPageSource()[[1]]
page_html <- read_html(page_source)
# 定位密切轨道要素表格(CSS选择器可通过浏览器开发者工具确认)
osculating_table <- page_html %>% 
  html_element(css = "table[data-table-type='osculating']") %>% 
  html_table(header = TRUE)
  1. 清理资源:
remDr$close()
driver$server$stop()
  1. 查看结果:
print(osculating_table)

方案2:直接调用JPL官方API(推荐)

JPL提供了Small-Body Database的公开API,无需模拟浏览器,直接请求数据更高效稳定:

  1. 安装并加载依赖包:
install.packages(c("httr", "jsonlite", "dplyr"))
library(httr)
library(jsonlite)
library(dplyr)
  1. 构造API请求链接:
asteroid <- "2006%20WP1"
# 请求密切轨道要素,开启高精度数据返回
api_url <- paste0("https://ssd-api.jpl.nasa.gov/sbdb.api?sstr=", asteroid, "&full-prec=true&cov=false")
  1. 解析API返回的JSON数据:
response <- GET(api_url)
raw_data <- fromJSON(content(response, "text"))
  1. 整理成表格格式:
# 提取osculating轨道要素字段
osculating_elements <- raw_data$orbit$elements$osculating
osculating_table <- as.data.frame(osculating_elements) %>% 
  select(param, value, unit, desc)
  1. 查看结果:
print(osculating_table)

方案对比

  • 方案1:通用型强,适用于各类动态页面,但依赖浏览器驱动,运行速度较慢。
  • 方案2:专为JPL数据库设计,无需渲染页面,速度快且数据准确,优先推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:37:43