R语言循环读取xlsx列值替换POST请求参数的实现方法
R脚本循环遍历xlsx列值发送POST请求实现方案
前置准备
- 先安装需要用到的依赖包,本地首次运行执行一次即可:
install.packages(c("httr", "jsonlite", "readxl"))
完整实现代码
# 加载依赖库 library(httr) library(jsonlite) library(readxl) # -------------------------- # 提前赋值你原有逻辑里的固定参数,确保和实际值一致 url_base <- "你的接口域名前缀" service <- "你的服务标识" method <- "你的接口方法名" token <- "你的鉴权token" # -------------------------- # 1. 导入xlsx数据集,替换为你本地文件的实际路径 imported_file <- read_excel("C:/xxx/你的数据文件.xlsx") # 提取所有需要遍历的code值,如果你的列名不是code,替换为实际列名即可 code_list <- imported_file$code # 2. 初始化存储结果的列表 api_results <- list() # 3. 循环遍历每个code发送请求 for (idx in seq_along(code_list)) { current_code <- code_list[idx] # 自动生成合法JSON请求体,避免手动拼接的转义、语法错误 post_body <- toJSON( list( entity = "sigpac", code = current_code ), auto_unbox = TRUE ) # 发送POST请求,逻辑和你原有脚本完全一致 resp <- POST( url = paste(url_base, service, method, sep = "/"), body = post_body, add_headers( "Content-Type" = "application/json", "authorization" = token ) ) # 存储当前请求的对应结果 api_results[[idx]] <- list( request_code = current_code, response_status = status_code(resp), response_data = content(resp, "parsed") ) # 可选:打印进度,方便查看运行状态 cat(sprintf("已完成 %d/%d 请求,code:%s,状态码:%d\n", idx, length(code_list), current_code, status_code(resp))) }
结果使用说明
- 所有请求的返回结果都存在
api_results列表中,可通过索引直接调取对应请求的信息,例如api_results[[2]]即可查看第2个请求的code、状态码和返回数据 - 如果需要将所有返回的结构化数据合并为统一数据框,可安装dplyr包后运行
dplyr::bind_rows(api_results)实现快速转换
注意事项
- 如果目标接口有请求频率限制,可在循环末尾添加
Sys.sleep(n)代码,n为每次请求的间隔秒数,根据接口要求调整即可 - 如果导入的xlsx中code列存在空值,可在遍历前添加
code_list <- na.omit(code_list)过滤空值,避免无效请求
内容的提问来源于stack exchange,提问作者Gordenbúh
相关产品推荐
相关产品推荐

