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

如何从下载链接直接读取CSV到pandas DataFrame?遇403错误求解

解决远程CSV读取的403 Forbidden错误

问题根源

目标网站的服务器会校验请求的来源标识,直接用pd.read_csv()或无请求头的requests发起请求,会被判定为非浏览器请求,进而返回403禁止访问。

可行解决方法

方式一:pandas直接带请求头读取(需pandas 1.3.0及以上版本)

import pandas as pd

url = 'https://datahack.analyticsvidhya.com/contest/practice-problem-loan-prediction-iii/download/train-file'
# 模拟浏览器的请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

# 通过storage_options参数传递请求头
df = pd.read_csv(url, storage_options={'User-Agent': headers['User-Agent']})

方式二:结合requests+pandas读取

import requests
import pandas as pd
from io import StringIO

url = 'https://datahack.analyticsvidhya.com/contest/practice-problem-loan-prediction-iii/download/train-file'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

# 发起带请求头的请求
response = requests.get(url, headers=headers)
# 检查请求是否成功,失败则抛出异常
response.raise_for_status()
# 将响应内容转为StringIO,再用pandas读取
df = pd.read_csv(StringIO(response.text))

额外提示

  • 你可以替换User-Agent为自己浏览器的真实标识,在浏览器F12开发者工具的网络请求详情中能找到
  • 如果还是出现403,可以尝试添加Referer请求头,值设为目标网站的下载页面地址,进一步模拟完整的浏览器请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:20:43