21

我有一个尚未公开的 Google 电子表格,但任何拥有访问链接的人都可以使用。虽然即使我没有登录我的 Google 帐户(即允许匿名访问),我也可以从浏览器访问 CSV 格式的数据,但我无法使用 wget 从命令行下载数据,例如. 我找到了几个网页,其中包含一些创建下载 URL 的说明,但到目前为止我还没有成功。有没有一种简单、直接的方法可以做到这一点,还是我必须使用一些谷歌数据库来访问这些数据?

4

5 回答 5

29

也许我没有正确理解你想要做什么,但我在这篇文章中找到了一个对我来说很好的解决方案。

在文章中,作者将电子表格的下载链接创建为 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 是可以从导航的 URL获得的
  https://docs.google.com/spreadsheets/d/<KEY>/export?gid=<GID>&format=csv
位置<KEY><GID>
  https://docs.google.com/spreadsheets/d/<KEY>/edit#gid=<GID>

PS:电子表格可能有多个工作簿,GID是所需的工作簿 ID。一个工作簿电子表格通常具有gid=0,但如果您添加更多,它们将具有随机数(即使更改制表符顺序也会保留GID )。

因此,使用wget相同的电子表格,

   wget --no-check-certificate -O test.csv \
    'https://docs.google.com/spreadsheets/d/0At2sqNEgxTf3dEt5SXBTemZZM1gzQy1vLVFNRnludHc/export?gid=0&format=csv'
于 2012-06-02T05:50:41.173 回答
20

我能够wget从如下所示的公共电子表格 URL 中获取一个可用的 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"

确保首先使用右上角的蓝色“共享”按钮共享电子表格,然后使用“获取共享链接”。

于 2015-05-21T11:30:58.020 回答
0

要访问其他选项卡,您需要单击并获取该选项卡的 gid,因此:

https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/pubhtml?widget=true&amp%3Bheaders=false#gid=2120833204

变成:

https://docs.google.com/spreadsheets/d/1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw/export?format=csv&id=1GxmL3bbejjGx-Ji7kzsnZLzkSaMrfX5WwgRAvvqfqpw&gid=2120833204

于 2016-02-23T06:44:34.910 回答
-1

现在我可以回答问题了,所以我会一直回答它(粘贴我之前的评论)。

我的问题是我没有正确存储 cookie。当时,我正在使用 Python 程序尝试下载它。这解决了我报告的问题:

# Cookie management 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar())) 
csv_data =  csv.reader(opener.open(url))
于 2015-05-14T17:39:54.183 回答
-1

遇到这个问题并尝试了一些解决方案。没有一个工作完美,所以我写了这个 curl 似乎可以完成这项工作。您需要与知道链接的任何人共享您的 google 电子表格以使其正常工作

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通过在谷歌驱动器中打开它并查看 url 来找到您的电子表格

https://docs.google.com/spreadsheets/d/[idwillbehere]/edit#gid=0

于 2017-02-08T23:36:59.673 回答