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

如何获取公开Google表格中超过100行的数据?

如何获取公开Google表格中超过100行的数据?

嗨,我来给你几个亲测有效的办法解决这个问题:

方法一:用Google Sheets官方API(最稳定可靠)

这是官方支持的方式,完全不用担心反爬问题,还能精准控制获取的数据范围。步骤大概是这样:

  1. 去Google Cloud控制台创建一个新项目,启用「Google Sheets API」
  2. 创建服务账号并下载密钥文件(JSON格式)
  3. 在Python里用google-api-python-client库调用API,示例代码大概是这样:
from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials

# 加载密钥文件
creds = Credentials.from_service_account_file('你的密钥文件.json')
service = build('sheets', 'v4', credentials=creds)

# 替换成你的表格ID和范围,比如取整个工作表的数据
sheet_id = '1DAQ__r9RNx4mHgcDoXvzda9-0d_yeP7hqXdRUZ67EtM'
range_name = 'Sheet1!A:Z'  # 这里可以按需调整范围

result = service.spreadsheets().values().get(spreadsheetId=sheet_id, range=range_name).execute()
values = result.get('values', [])

# 打印所有数据
for row in values:
    print(row)

方法二:直接用公开表格的导出链接(最简单)

如果你的表格是公开可访问的,那完全不用折腾API或者Selenium,直接用导出链接就能拿到全量数据。把原表格链接里的/edit?gid=xxx部分替换成/export?format=csv&gid=xxx,然后用requests请求这个链接就行。比如:

import requests
import csv

# 替换成你的导出链接
export_url = 'https://docs.google.com/spreadsheets/d/1DAQ__r9RNx4mHgcDoXvzda9-0d_yeP7hqXdRUZ67EtM/export?format=csv&gid=0'

response = requests.get(export_url)
response.encoding = 'utf-8'

# 解析CSV数据
reader = csv.reader(response.text.splitlines())
for row in reader:
    print(row)

这个方法直接拿到的是完整的CSV文件,所有行都在里面,完美避开只加载100行的限制。

方法三:优化Selenium绕过反爬

如果你一定要用Selenium,试试这些技巧绕过Google的检测:

  • 用undetected-chromedriver库,它专门针对Google的反爬做了优化,比普通的ChromeDriver好用很多
  • 模拟真实用户的操作,比如慢慢滚动页面加载所有数据,不要一次性跳到底部
  • 设置合理的等待时间,比如用WebDriverWait等待元素加载完成
    示例代码大概是这样:
from undetected_chromedriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

driver = Chrome()
driver.get('你的表格链接')

# 模拟滚动加载所有数据
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)  # 等待加载
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

# 等待表格加载完成,然后提取数据
table = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, 'table'))
)
rows = table.find_elements(By.TAG_NAME, 'tr')
for row in rows:
    cols = row.find_elements(By.TAG_NAME, 'td')
    print([col.text for col in cols])

driver.quit()

备注:内容来源于stack exchange,提问作者Max Mustermann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:34:32