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

咨询:rvest包中rvest:::request_POST弃用后的POST请求处理方案

替代已弃用的rvest:::request_POST的方案

rvest的内部函数rvest:::request_POST属于未公开API,被弃用后无法正常使用,以下是两种可复用已有rvest会话状态的替代方案:

方案1:用rvest会话对象的request()方法(优先推荐)

这是官方设计的标准化请求方式,会自动继承会话的Cookie、请求头等状态,用法逻辑和原函数一致:

library(rvest)

# 假设你已初始化好会话对象my_session
# my_session <- session("https://your-target-site.com")

# 构造POST请求参数,根据接口要求调整
post_data <- list(
  key1 = "value1",
  key2 = "value2"
)

# 执行POST请求
resp <- my_session$request(
  method = "POST",
  url = "https://your-target-site.com/api/endpoint",
  body = post_data,
  encode = "form" # 接口为JSON则改为"json",文件上传用"multipart"
)

# 解析响应(示例)
result <- resp %>% html_element(".result-content") %>% html_text()

方案2:结合httr2实现灵活请求控制

如果需要更精细的配置(比如自定义超时、代理),可提取rvest会话状态后用httr2发送请求:

library(rvest)
library(httr2)

my_session <- session("https://your-target-site.com")

# 基于会话状态构造httr2请求
req <- request("https://your-target-site.com/api/endpoint") %>%
  req_method("POST") %>%
  req_body_form(key1 = "value1", key2 = "value2") # JSON格式用req_body_json()
  req_headers(!!!my_session$response$headers) %>% # 继承会话请求头
  req_cookies(!!!my_session$cookies) # 继承会话Cookie

# 发送请求并处理响应
resp <- req_perform(req)
result <- resp %>% resp_body_html() %>% html_element(".result-content") %>% html_text()

重要提醒

  • 永远不要依赖rvest的内部函数(带:::的),这类函数无官方维护承诺,随时可能被移除
  • 优先选择方案1,完全贴合rvest会话机制,代码更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:55:18