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

Python下载BLS CSV文件遇HTTPError 403及多类报错求助

解决pandas 1.0.5读取BLS TSV文件的403及解析错误问题

核心问题分析

  1. 403 Forbidden:BLS服务器会拦截无浏览器标识的请求,直接用pd.read_csv访问会被拒绝。
  2. 适配pandas旧版本:storage_options参数是pandas 1.3.0新增的,1.0.5不支持,直接套用高版本代码会报错。
  3. 解析错误:未正确处理请求头时获取到的内容可能是反爬页面(而非真实TSV数据),导致解析字段不匹配。

有效解决方案

用requests模拟浏览器请求获取数据,再传给pandas解析,完美适配1.0.5版本:

import pandas as pd
import requests
from io import StringIO

# 设置请求头,模拟浏览器访问
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'
}

# 获取目标数据
url = 'https://download.bls.gov/pub/time.series/cu/cu.item'
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'  # 确保编码匹配

# 包装文本内容后交给pandas解析TSV
df = pd.read_csv(StringIO(response.text), sep='\t', skipinitialspace=True)
print(df.head())

对之前报错的解释

  1. ParserError:未加请求头时获取到的是反爬拦截页面,不是真实的TSV数据,导致解析时字段数量不匹配。
  2. SyntaxError:大概率是复制代码时出现格式错误(比如引号不匹配、缩进混乱)。
  3. TypeError: storage_options:pandas 1.0.5确实没有这个参数,必须用requests中转的方式替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:14:57