我有一个尚未公开的Google电子表格,当我问这个问题时,我不明白Python如何处理cookie。现在一切都很好。法学硕士,去磅沙吧。
也许我没有正确理解你想要做什么,但我在这篇文章中找到了一个解决方案,它对我来说效果很好。
在文章中,作者为电子表格创建了一个 XLS 文件的下载链接(使用“&output=xls”),但我尝试了“&output=csv”并成功下载了正确的 CSV 文件。这是我的“下载测试电子表格”的下载链接,按照文章作者建议的方式构建,但用“csv”代替“xls”:
https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv
该链接是匿名的(即“任何拥有该链接的人都可以查看”),我在没有登录我的 Google 帐户的情况下下载了它。我承认我没有使用 wget 来做到这一点(我只是使用了浏览器——我没有安装 wget),但我想不出 wget 不能正常工作的原因。实际上,我只是拿了一份 wget 并尝试了一下,它也正确下载了文件:
% wget --no-check-certificate --output-document=test.csv 'https://docs.google.com/spreadsheet/ccc?key=0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc&output=csv'
< bla bla bla, reams of output from wget >
% cat test.csv
Foo,Bar,Baz
1,2,3
4,5,6
所以就这样吧...
2018 年更新
正如 @AndyMortimer 所评论的,新的下载 URL 是 https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GID>&format=csv
,其中
<KEY>
和
<GID>
可以从您的导航 URL 获取,
https://docs.google.com/spreadsheets/d/<KEY>/edit#gid=<GID>
PS:电子表格可能有多个工作簿,GID是所需的工作簿ID。一个工作簿电子表格通常具有 gid=0
,但如果添加更多,它们将具有随机数(即使更改 Tab 键顺序,GID 也会保留)。 因此,使用
wget
和相同的电子表格,
wget --no-check-certificate -O test.csv \
'https://docs.google.com/spreadsheets/d/0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc/export?gid=0&format=csv'
wget
的 URL,如下所示:
https://docs.google.com/spreadsheets/d/LONG_ID_STRING/edit?usp=sharing
将它们更改为如下所示:
https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv
这样我的 wget 命令看起来像:
$ wget "https://docs.google.com/spreadsheets/d/LONG_ID_STRING/export?format=csv"
确保首先使用右上角的蓝色“共享”按钮共享电子表格,然后使用“获取可共享链接”。
https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/pubhtml?widget=true&%3Bheaders=false#gid=2120833204
https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/export?format=csv&id=1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw&gid=2120833204
curl -o /path/to/file/you/want/csv/to/go.csv 'https://docs.google.com/spreadsheet/ccc?key=[the-id-of-your-spreadsheet]&output=csv' -L
-L
是这里的技巧,谷歌经常移动csv,但会向您发送重定向链接。
-L
告诉
curl
遵循重定向,直到它到达文件。您可以通过在谷歌云端硬盘中打开电子表格并查看网址来找到电子表格的
id
https://docs.google.com/spreadsheets/d/[idwillbehere]/edit#gid=0