使用请求(或其他库)以CSV格式访问公共Google表单的内容

nmpmafwu  于 2022-12-06  发布在  其他
关注(0)|答案(4)|浏览(112)

我写了一个小的python程序,可以处理CSV文件中的数据。我正在跟踪google工作表中的一些数字,并通过下载google工作表创建了CSV文件。我试图找到一种方法,让python直接从google工作表中读取CSV文件,这样我在更新电子表格时就不必下载新的CSV文件。
我知道requests库也许能处理这个问题,但我很难弄清楚,我选择不尝试google API,因为这种方法看起来更简单,只要我不介意把工作表公开给那些有链接的人,这是可以的。
我试过使用requests文档,但是我是一个程序员新手,我不能把它作为CSV读入。
下面是当前将数据导入python的方式:

file = open('data1.csv', newline='')
reader = csv.reader(file)

我希望file = open()在理想情况下被requests库替换,并直接从电子表格中提取。

cetgtptt

cetgtptt1#

您需要找到下载文件的正确URL请求。
示例URL:

csv_url='https://docs.google.com/spreadsheets/d/169AMdEzYzH7NDY20RCcyf-JpxPSUaO0nC5JRUb8wwvc/export?format=csv&id=169AMdEzYzH7NDY20RCcyf-JpxPSUaO0nC5JRUb8wwvc&gid=0'

方法是手动下载文件,同时在浏览器的“开发人员工具”中的“网络”选项卡上检查请求URL。
那么下面这些就足够了:

import requests as rs
csv_url=YOUR_CSV_DOWNLOAD_URL
res=rs.get(url=csv_url)
open('google.csv', 'wb').write(res.content)

它会将名为'google.csv'的CSV文件保存在python脚本文件的文件夹中。

lymnna71

lymnna712#

import pandas as pd
   import requests
   
   YOUR_SHEET_ID=''

   r = requests.get(f'https://docs.google.com/spreadsheet/ccc?key={YOUR_SHEET_ID}&output=csv')
   open('dataset.csv', 'wb').write(r.content)
   df = pd.read_csv('dataset.csv')
   df.head()

我尝试了@adirmola的解决方案,但我不得不稍微调整一下。当他写道“你需要找到下载文件的正确URL请求”时,他说得有道理。一个简单的解决方案就是我在这里展示的。在你的google sheet id后面添加“&output=csv”。
希望能有所帮助!

wecizke3

wecizke33#

我不太清楚你的使用场景,Adirmola已经为你的问题提供了一个非常准确的答案,但我的直接问题是你为什么要首先下载CSV。
Google Sheets有a python library,所以你可以直接从GSheet中获取数据。
您可能还对this answer感兴趣,因为您对观察GSheets中的变化感兴趣

t3irkdon

t3irkdon4#

我只想说使用Oauth密钥和Google Python API并不总是一个选择。我发现上面的内容对我当前的应用程序相当有用。

相关问题