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

如何抓取公开Google Sheet中的第二个工作表(Sheet2)

解决Google Sheets抓取指定Sheet数据的问题

问题原因

你用带#gid=367705858的编辑链接抓取数据没用,是因为#后面的锚点参数只在浏览器端生效,服务器收到requests的GET请求时会直接忽略锚点部分,返回的还是默认加载的Sheet1页面内容,所以BeautifulSoup解析到的自然是Sheet1的数据。

正确解决方案:用公开导出API

Google Sheets提供了公开数据的导出接口,直接用这个接口指定Sheet的gid,就能拿到对应Sheet的纯数据(比如CSV格式),比解析HTML靠谱多了。

导出链接格式

把原编辑链接的/edit替换成/export,再加上两个参数:

  • format=csv:指定导出格式为CSV(也可以用format=xlsx导出Excel)
  • gid=367705858:指定要导出的Sheet的gid

最终链接为:
https://docs.google.com/spreadsheets/d/1HplWfW1T_XPF45wondzxsTOd5M2VijT-LaDJ9hVOH7Y/export?format=csv&gid=367705858

修改后的Python代码

import requests
import csv
from io import StringIO

# 请求Sheet2的CSV数据
response = requests.get("https://docs.google.com/spreadsheets/d/1HplWfW1T_XPF45wondzxsTOd5M2VijT-LaDJ9hVOH7Y/export?format=csv&gid=367705858")
response.encoding = 'utf-8'

# 解析CSV内容
csv_data = StringIO(response.text)
reader = csv.reader(csv_data)

# 打印每一行数据
for row in reader:
    print(row)

备选方案:模拟浏览器(不推荐)

如果一定要用HTML解析的方式,得用selenium模拟浏览器加载页面,让浏览器处理锚点并切换到Sheet2,再解析页面。但这种方法速度慢,还需要安装浏览器驱动,不如导出API高效。示例代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("https://docs.google.com/spreadsheets/d/1HplWfW1T_XPF45wondzxsTOd5M2VijT-LaDJ9hVOH7Y/edit#gid=367705858")
time.sleep(2)  # 等待页面加载完成

tbody = driver.find_element(By.TAG_NAME, "tbody")
rows = tbody.find_elements(By.TAG_NAME, "tr")

for row in rows:
    cells = row.find_elements(By.TAG_NAME, "td")
    print([cell.text for cell in cells])

driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:03:33