Colab下载Kaggle竞赛数据遇403错误的解决办法及替代方案
解决Colab中Kaggle LANL竞赛数据下载403 Forbidden问题及替代方案
一、核心原因:竞赛权限未获取
你遇到的403错误大概率是因为LANL-Earthquake-Prediction竞赛需要主动加入才能下载数据——很多Kaggle竞赛(尤其是带有规则或隐私限制的)要求用户先点击竞赛页面的「Join Competition」并同意条款,API才会授予数据下载权限。其他竞赛比如us-consumer-finance-complaints属于公开可下载类型,所以没有这个限制。
二、快速修复步骤
网页端加入竞赛
打开Kaggle的LANL竞赛页面,登录你的账号,找到页面顶部的「Join Competition」按钮,点击后阅读并同意竞赛规则,完成加入流程。验证权限并重新下载
回到Colab,先运行命令确认你已加入竞赛:!kaggle competitions status -c LANL-Earthquake-Prediction如果输出显示
Status: Joined,再重新执行下载命令:!kaggle competitions download -c LANL-Earthquake-Prediction备选:刷新API Token
如果还是报错,可能是你的kaggle.json权限未更新:- 去Kaggle的「Account」页面,点击「Create New API Token」,下载新的kaggle.json。
- 在Colab中重新上传并替换旧文件:
!mkdir -p ~/.kaggle/ && mv kaggle.json ~/.kaggle/ && chmod 600 ~/.kaggle/kaggle.json
然后再次尝试下载。
三、Colab下载Kaggle数据的替代方法
如果API方式始终有问题,可以试试以下几种方案:
1. 手动下载+Google Drive挂载
- 步骤1:在Kaggle网页端下载LANL竞赛数据的压缩包。
- 步骤2:把压缩包上传到你的Google Drive。
- 步骤3:在Colab中挂载Drive,直接读取数据:
之后你就可以通过from google.colab import drive drive.mount('/content/drive')/content/drive/MyDrive/路径访问Drive里的竞赛数据,解压后即可使用。
2. 使用Kaggle Python API(代码式调用)
除了命令行,也可以用Python代码调用Kaggle API,有时能避开命令行的权限缓存问题:
!pip install kaggle --upgrade from kaggle.api.kaggle_api_extended import KaggleApi # 认证API api = KaggleApi() api.authenticate() # 下载竞赛数据到指定目录 api.download_competition_files('LANL-Earthquake-Prediction', path='/content/lanl_data/') # 解压文件(如果需要) import zipfile with zipfile.ZipFile('/content/lanl_data/LANL-Earthquake-Prediction.zip', 'r') as zip_ref: zip_ref.extractall('/content/lanl_data/')
3. Colab内置Kaggle集成
Colab提供了直接关联Kaggle账号的功能,无需手动上传kaggle.json:
- 打开Colab,点击左侧菜单栏的「Files」→「Add-ons」→「Kaggle」。
- 按照提示登录你的Kaggle账号,完成授权。
- 之后就可以在Colab中直接搜索并导入LANL竞赛的数据,无需手动执行下载命令。
内容的提问来源于stack exchange,提问作者sargupta




