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

如何用R的httr包调用指定API获取多个NIP对应的主体信息?

解决R语言调用KRS API获取主体信息的问题

我来帮你搞定这个问题!咱们用httr包构造请求,再配合jsonlite解析返回的JSON数据,就能轻松批量处理多个NIP编号。下面是一步步的解决方案:

1. 准备依赖包

首先确保你安装了需要的包,如果没装的话先运行:

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

然后加载它们:

library(httr)
library(jsonlite)

2. 编写单个NIP的查询函数

我先写一个可复用的函数,用来查询单个NIP对应的主体信息,同时处理可能的请求错误:

get_krs_podmiot <- function(nip) {
  # 构造API请求URL
  api_url <- "https://apiv3.mojepanstwo.pl/dane/krs_podmioty"
  
  # 设置查询参数,注意参数名的格式要和API要求一致,特殊字符要用反引号包裹
  query_params <- list(`conditions[krs_podmioty.nip]` = nip)
  
  # 发送GET请求
  response <- GET(api_url, query = query_params)
  
  # 检查请求是否成功
  if (http_status(response)$category != "Success") {
    warning(paste("查询NIP", nip, "失败,状态码:", status_code(response)))
    return(NULL)
  }
  
  # 解析JSON响应并提取主体数据
  response_data <- fromJSON(content(response, "text"))
  return(response_data$Dataobjects)
}

这里的关键是参数名的写法:conditions[krs_podmioty.nip]必须用反引号包裹,不然R会识别不了这个带特殊字符的参数名,这也是很多人踩坑的地方。

3. 批量处理多个NIP

假设你的3个NIP编号是c("6321880539", "1112223334", "5556667778"),咱们用lapply批量查询,最后可以把结果整理成列表或者合并成数据框:

# 替换成你的3个NIP编号
nip_list <- c("6321880539", "1112223334", "5556667778")

# 批量查询所有NIP
krs_results <- lapply(nip_list, get_krs_podmiot)

# 给结果命名,方便后续查看
names(krs_results) <- nip_list

# 如果想把所有结果合并成一个数据框(适合每个NIP只返回一条记录的情况)
library(dplyr)
combined_results <- bind_rows(krs_results, .id = "nip")

4. 验证结果

你可以查看某个NIP的完整结果,比如:

# 查看第一个NIP的详细信息
print(krs_results[["6321880539"]])

这样得到的内容就和直接访问https://apiv3.mojepanstwo.pl/dane/krs_podmioty?conditions[krs_podmioty.nip]=6321880539完全一致了。

如果之前你的代码出错,大概率是参数格式没写对(比如没给特殊参数名加反引号),或者没正确解析JSON响应。按照上面的步骤来应该就能解决问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:27:12