python - 下载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()
解决方案
要在没有 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)
推荐阅读
- ubuntu - 如何创建从 GCP 虚拟机实例到 GCP 存储桶的 zip 或 tar
- c# - 如何为文本块设置动画,使其看起来好像在 XAML 或 C# 中的表面上弹跳?
- r - 需要 2 个参数但需要 3 个参数的 R 函数
- python - 在熊猫中重命名列的更好方法是什么?
- javascript - 环境变量不会在 javascript 中用新行替换 '\n' 并抛出错误:0909006C:PEMroutines:get_name:no start line
- vb.net - 在没有签名证书的情况下部署 VSTO 加载项?
- javascript - 当表格中存在水平滚动条时显示向右箭头
- javascript - 用 Javascript 模拟 Java 枚举?
- typescript - 为什么,即使在为 React 组件指定类型参数后,linter 仍然抱怨'
' 缺少道具验证? - python - 列表理解后如何将列表转换为数据框