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

如何用Python无需认证提取公开发布Google Doc的表格数据?

无需认证提取公开Google Doc中的表格到Pandas DataFrame

你之前用Google Docs API报错是因为pub URL里的长字符串并不是Docs API要求的原始文档ID,而且API本身需要认证,完全不符合你“无授权、直接用公开URL”的需求。

直接爬取公开发布的HTML页面是最直接的方案,步骤如下:

依赖准备

先安装需要的库:

pip install requests beautifulsoup4 pandas

完整代码实现

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 替换成你的公开Google Doc的pub URL
pub_url = "https://docs.google.com/document/d/e/<你的长字符串>/pub"

# 模拟浏览器请求,避免被Google拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}

# 获取页面内容
response = requests.get(pub_url, headers=headers)
response.encoding = "utf-8"  # 确保Unicode字符正常解析

# 解析HTML
soup = BeautifulSoup(response.text, "html.parser")

# 找到文档中的表格(这里假设只有一个目标表格,若多个可调整索引)
table = soup.find_all("table")[0]

# 解析表格行数据
rows = []
for tr in table.find_all("tr"):
    cells = []
    for td in tr.find_all(["td", "th"]):
        # 获取单元格文本,处理可能的换行和空格
        cell_text = td.get_text(strip=True, separator=" ")
        cells.append(cell_text)
    rows.append(cells)

# 转换为Pandas DataFrame
# 第一行作为表头,后续作为数据
df = pd.DataFrame(rows[1:], columns=rows[0])

# 输出结果
print(df)

说明

  • 这个方案完全不需要任何Google API认证,只要文档是公开发布的,任何人替换URL就能运行。
  • 自动处理Unicode字符,因为我们指定了UTF-8编码。
  • 如果文档中有多个表格,修改find_all("table")[0]的索引即可(比如[1]取第二个表格)。
  • 若表格存在合并单元格,需要额外处理单元格的rowspan和colspan属性,基础版代码默认将合并单元格的内容保留在第一个单元格,其余合并位置留空,你可以根据需求调整解析逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:02:10