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

如何用R提取BLS失业率图表SVG文件中的底层数据?

获取BLS失业率数据并转为R数据框的可行方案

首先明确:你下载的SVG是图表的渲染图形文件,不包含原始结构化的失业率数据,所以从SVG提取数据的思路不可行。下面给你两种合法、稳定的解决方案,替代爬取和手动复制的方式:

方案一:使用专门的blsR包(推荐)

blsR是专门对接BLS API的R包,能直接获取结构化数据,无需处理网页爬取的反爬限制。

步骤:

  1. 去BLS官网注册一个免费的API密钥(注册后即时可用)
  2. 安装并加载blsR包:
install.packages("blsR")
library(blsR)
  1. 设置API密钥并请求数据:
# 替换成你的API密钥
bls_set_api_key("你的BLS API密钥")

# 请求失业率数据(系列ID:LNS14000000是美国总体失业率的官方代码)
unemp_data <- bls_request(series_ids = "LNS14000000", start_year = 2000, end_year = 2024)

# 转为标准R数据框
unemp_df <- as.data.frame(unemp_data)

运行后unemp_df就是包含日期、失业率数值的结构化数据框,格式规整,无需手动清理。

方案二:用httr手动调用BLS API

如果不想用第三方包,也可以直接用httr发送HTTP请求:

install.packages("httr")
install.packages("jsonlite")
library(httr)
library(jsonlite)

# 构造请求参数
api_url <- "https://api.bls.gov/publicAPI/v2/timeseries/data/"
request_body <- list(
  seriesid = list("LNS14000000"),
  startyear = "2000",
  endyear = "2024",
  registrationKey = "你的BLS API密钥"
)

# 发送请求并解析数据
response <- POST(api_url, body = toJSON(request_body), content_type("application/json"))
response_data <- fromJSON(content(response, "text"))

# 提取数据并转为数据框
unemp_df <- as.data.frame(response_data$Results$series$data)
# 整理日期和数值格式
unemp_df$date <- paste(unemp_df$year, unemp_df$period, sep = "-")
unemp_df$value <- as.numeric(unemp_df$value)

补充说明:

  • BLS API的系列ID可以在官网查询,比如你要的总体失业率对应LNS14000000,如果需要细分群体的失业率,能找到对应的系列ID直接替换即可。
  • 免费API密钥的请求限额足够个人使用,不用担心限制问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:57:06