首页 > 解决方案 > 下载google sheet,需要我先登录

问题描述

我正在尝试以 CSV 格式下载谷歌电子表格。但是即使我提供了用户名和密码,脚本也会将我重定向到登录页面。有什么建议可以解决这个问题吗?

import requests
from requests.auth import HTTPBasicAuth

response = requests.get('https://docs.google.com/spreadsheet/ccc?key=1Kwim1GF0SXx24kN8LycaYF6LUsJAIAm6FkPStDqDoNE&output=csv',auth=HTTPBasicAuth('xxxxxx', 'xxxxxxx'))
data=response.content
csv_file = open(r"C:\google_sheet\bills.csv", "w")
csv_file.write("%s" % data)
csv_file.close()

标签: python

解决方案


要在没有 google python 客户端的情况下执行此操作,请参阅这篇文章

但您可能想使用google cloud python 客户端。使用客户端,您会想要访问google drive api;表格 API 更多的是关于操作表格,所以不要使用它。

按照快速入门(1) 以服务对象的形式获取连接并 (2) 列出电子表格的 ID。

要验证您的服务对象,您需要生成一个凭证文件。然后,您将使用服务对象进行 api 调用(列出和下载)。

有了服务对象和文件 ID,您可以下载一个csv 格式的电子表格,如下所示:

file_id = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo'
request = drive_service.files().export_media(fileId=file_id,
                                             mimeType='text/csv')
with open('/path/to/outfile.csv', 'w') as fh:
    downloader = MediaIoBaseDownload(fh, request)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        print "Download %d%%." % int(status.progress() * 100)

推荐阅读