R语言中无法打开Kaggle数据集下载URL(网页可正常访问)
解决Kaggle数据集直接加载的报错问题
问题描述
尝试无需本地下载直接从Kaggle加载数据集,编写了如下R代码:
library(httr) dataset <- httr::GET("https://www.kaggle.com/datasets/fedesoriano/heart-failure-prediction/download/", httr::authenticate("kguliani", authkey, type = "basic")) # destination file temp <- tempfile() download.file(dataset$url,temp) data <- read.csv(unz(temp, "heart.csv")) unlink(temp) head(data)
运行时持续报错:
Error in download.file(dataset$url, temp): cannot open URL 'https://www.kaggle.com/datasets/fedesoriano/heart-failure-prediction/download'
该URL在网页中可正常下载包含heart.csv的archive.zip文件,但代码中无法访问。
问题原因
- Kaggle的下载URL是临时重定向链接,浏览器访问时会自动跳转至真实资源地址,但
download.file默认不跟随重定向,直接访问原URL会失败。 httr::GET请求后返回的dataset$url仍是原请求地址,没有提取到认证后重定向的真实下载链接,导致后续下载无效。
解决方案
方案1:修改现有代码,复用认证会话并获取真实资源
library(httr) # 创建会话并完成认证,保存状态 session <- httr::handle("https://www.kaggle.com") httr::GET("https://www.kaggle.com", handle = session, httr::authenticate("你的Kaggle用户名", "你的Kaggle API密钥", type = "basic")) # 发送请求并跟随重定向,获取真实下载内容 resp <- httr::GET("https://www.kaggle.com/datasets/fedesoriano/heart-failure-prediction/download/", handle = session, followlocation = TRUE) # 写入临时文件并读取数据 temp <- tempfile(fileext = ".zip") writeBin(resp$content, temp) data <- read.csv(unz(temp, "heart.csv")) unlink(temp) head(data)
方案2:使用Kaggle官方R包(更稳定)
官方包封装了认证和下载逻辑,操作更简便:
- 安装包:
install.packages("kaggle")
- 配置API密钥:将Kaggle账号的
kaggle.json文件放置在对应目录(Windows:C:\Users\<你的用户名>\.kaggle\;Linux/macOS:~/.kaggle/) - 加载数据集:
library(kaggle) # 下载并自动解压数据集到临时目录 kaggle::dataset_download_files("fedesoriano/heart-failure-prediction", path = tempdir(), unzip = TRUE) # 读取数据 data <- read.csv(file.path(tempdir(), "heart.csv")) head(data)
内容的提问来源于stack exchange,提问作者K2G
相关产品推荐
相关产品推荐

