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

如何用RStudio从MarineTraffic抓取指定船舶位置数据?

搞定MarineTraffic船舶位置数据抓取的完整方案

嘿,我来帮你解决这个问题!首先得说清楚:MarineTraffic的页面很多核心数据是动态加载的——也就是你打开页面时,浏览器会先加载静态HTML,再通过JavaScript偷偷从后端接口拉取真实的位置数据。所以你直接用rvest的read_html()抓页面,根本拿不到想要的内容,因为那些数据不在静态HTML里。咱们一步步来搞定:

第一步:装好用得上的R包

你需要三个核心包,先安装(没装过的话):

install.packages(c("rvest", "httr", "jsonlite"))

然后加载到环境里:

library(rvest)
library(httr)
library(jsonlite)
  • rvest:辅助解析HTML(这次主要靠后面两个包)
  • httr:模拟浏览器发送HTTP请求,搞定动态接口
  • jsonlite:把接口返回的JSON数据转成R能处理的格式

第二步:找到真实的数据接口

直接抓页面行不通,咱们得找到MarineTraffic藏起来的API接口:

  1. 打开你给的船舶页面,按下F12打开浏览器开发者工具
  2. 切换到「网络」标签,刷新页面,然后过滤「XHR」类型的请求
  3. 找一找带shipid参数的请求,比如类似/getvesseldata的接口——这就是真正返回位置数据的地方

第三步:写代码直接抓API数据

直接调用API比解析HTML高效多了,还能拿到结构化数据。给你写好示例代码:

# 目标船舶的ID,就是你链接里的199293
ship_id <- 199293

# 构造API请求地址(这个是从开发者工具里扒的,要是以后失效了,再去工具里找新的就行)
api_url <- paste0("https://www.marinetraffic.com/en/ais/ajax/getvesseldata/shipid:", ship_id)

# 发送请求,得加请求头模拟浏览器,不然容易被网站拦截
response <- GET(
  url = api_url,
  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",
    "Referer" = paste0("https://www.marinetraffic.com/en/ais/details/ships/shipid:", ship_id)
  )
)

# 把返回的JSON转成R数据框/列表
ship_data <- fromJSON(content(response, as = "text"))

# 提取你要的位置相关数据,按需调整
location_details <- list(
  纬度 = ship_data$LAT,
  经度 = ship_data$LON,
  当前航速 = ship_data$SPEED,
  航向 = ship_data$HEADING,
  航行状态 = ship_data$NAVSTAT
)

# 看看结果
print(location_details)

为啥你原来的代码没效果?

你之前写的:

"https://www.marinetraffic.com/en/ais/details/ships/shipid:199293" %>% read_html() %>% html_nodes("div#MuiTypography-displayInline")

问题出在:

  • div#MuiTypography-displayInline对应的内容是JavaScript渲染出来的,静态HTML里根本没有,所以read_html()抓不到
  • 就算侥幸抓到,解析出来的也是零散文本,远不如API返回的结构化数据好用

最后提个醒

  • MarineTraffic的API可能会随时更新,如果上面的URL用不了了,记得再去浏览器开发者工具里找新的接口
  • 别疯狂刷请求,容易触发反爬,建议加个间隔比如Sys.sleep(5)再请求
  • 遵守网站的服务条款,别拿来搞商业用途或者大规模抓取哦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:12:32