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

R语言使用RCurl、httr下载网站CSV文件失败问题求助

问题根因
  • RCurl抛出tlsv1 alert protocol version错误的原因是目标站点仅支持TLS 1.2及以上版本协议,RCurl默认使用的低版本TLS协议无法完成握手,httr默认适配高版本TLS因此可以正常建立连接。
  • 你当前使用的下载URL包含#锚点标识,该部分内容仅用于浏览器前端页面路由,不会发送到服务端,因此实际请求返回的是站点首页HTML内容,并非你需要的CSV文件。
修复方案

该数据集托管于Tableau公共视图,需要构造符合Tableau服务端导出规则的请求,修改后的可运行代码如下:

library(httr)

# 替换前端路由URL为Tableau服务端可识别的导出路径
export_url <- "https://report.acr.org/t/PUBLIC/views/NRDRLCSLocator/ADownload.csv"

resp <- GET(
  export_url,
  # 模拟浏览器请求头,避免被反爬策略拦截
  add_headers(
    "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
  ),
  # 配置Tableau CSV导出所需的固定参数
  query = list(
    `:format` = "csv",
    `:showVizHome` = "no"
  ),
  write_disk(tf <- tempfile(fileext = ".csv"), overwrite = TRUE)
)

# 校验返回内容格式后读取数据
if (http_type(resp) == "text/csv") {
  lcsr <- read.csv(tf, check.names = FALSE)
} else {
  stop("导出失败,请检查请求参数是否正确")
}
注意事项
  • 不要直接复制浏览器地址栏中带#的页面URL作为数据下载地址,Tableau服务端导出接口需要使用不带前端路由的视图路径
  • 如果后续出现请求被拦截的情况,可以从浏览器F12开发者工具的网络面板中,复制同域请求的Cookie值加入请求头即可正常导出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:36:03