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

requests.get()获取Google Sheets导出CSV返回HTML而非文件如何解决

原因说明

你获取到HTML源码而非CSV数据,是因为Google服务识别到当前请求来自自动化脚本,触发了校验拦截,返回了服务首页而非导出数据。浏览器可以正常下载是因为请求附带了完整的浏览器标识、Cookie等校验信息。

解决步骤

  • 首先确认目标Google Sheets的共享权限已设置为「所有拥有链接的用户均可查看」,排除权限拦截问题。
  • 请求时添加模拟浏览器的User-Agent请求头,绕过基础的爬虫识别策略。
  • 若需要导出指定工作表,可在URL中添加gid=对应工作表ID参数(工作表ID可在浏览器打开表格时,从URL的gid参数处获取)。

修正后代码

from io import BytesIO
import requests
import pandas as pd

sheet_id = '替换为你的表格ID'
# 如需导出指定工作表,替换为对应gid,默认0为第一个工作表
gid = '0'
url = f'https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=csv&gid={gid}'

# 模拟浏览器请求头
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'
}

response = requests.get(url, headers=headers)
# 校验请求状态,异常时直接抛出错误方便排查
response.raise_for_status()

df = pd.read_csv(BytesIO(response.content))
# 测试输出前5行数据
print(df.head())

如果上述方案仍无法获取数据,可以打开浏览器的开发者工具,在「网络」标签页找到CSV导出请求,将请求头中的Cookie字段也添加到代码的headers参数中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:45:01