如何从没有附加内容的下载按钮 wget 或 curl URL?

how to wget or curl from a download button with no attached content URL?

我正在尝试从 https://dataverse.harvard.edu/dataverse/icews 的 ICEWS 数据集中下载一些文件。我正在尝试在 Google VM 实例上执行此操作,因为我的连接速度很慢,而且数据限制很容易被打破。我试过 curlwget 都没有成功。对于我要下载的任何给定文件,都有一个附加了 URL 的下载按钮,例如:

http://dataverse.harvard.edu/file.xhtml?persistentId=doi:10.7910/DVN/28075/K7L9Y8#

但是这个 URL 似乎只是 link 当前页面上按钮位置的一个。将此 URL 与 wgetcurl 一起使用会导致下载当前页面的 HTML 而不是下载文件内容。我找不到内容本身的直接 link,也找不到打印导致单击下载按钮的重定向链的方法。

这个问题有什么好的解决办法吗?命令行是首选,但如果有一些特定于 GCP 的解决方法,那也很好。我对这两个方面都是新手,越简单越好。

查看 this link it'll explain how to use wget to download a package. Going to the link you've provided here,在 'metadata Tab' 我复制了 'Download URL' >> 使用 wget 下载文件:

wget https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/28075/K7L9Y8

并且能够很好地查看数据:

:persistentId?persistentId=doi:10.7910%2FDVN%2F28075% 100%[======================================================================================================================>] 221.56M  4.02MB/s    in 84s     

2020-10-05 14:36:43 (2.62 MB/s) - ‘:persistentId?persistentId=doi:10.7910%2FDVN%2F28075%2FK7L9Y8.1’ saved [232325743/232325743]

th@instance-667:~$ ls
':persistentId?persistentId=doi:10.7910%2FDVN%2F28075%2FK7L9Y8'  ':persistentId?persistentId=doi:10.7910%2FDVN%2F28075%2FK7L9Y8.1'

th@instance-667:~$ cat ':persistentId?persistentId=doi:10.7910%2FDVN%2F28075%2FK7L9Y8.1'
Event ID        Event Date      Source Name    Source Sectors   Source Country  Event Text      CAMEO Code      Intensity       Target Name     Target Sectors  Target Country  Story ID        Sentence Number Publisher    City    District        Province       Country  Latitude        Longitude
20718170        2014-01-01      Police (Australia)      Police,Government       Australia 

我想这就是你需要的?

您也可以使用 Dataverse API 下载文件(或数据集),只要您知道其 PID。查看 API documentation 中的“基本文件访问”部分。 请注意,在 Havard 的 Dataverse 中,此 API 端点是开放的,无需身份验证。

如何获取文件

使用 curl,您可以提供一个永久标识符(在本例中为 DOI)来访问文件。你的文件有 DOI 10.7910/DVN/28075/K7L9Y8 所以使用

curl -L https://dataverse.harvard.edu/api/access/datafile/:persistentId/\?persistentId\=doi:10.7910/DVN/28075/K7L9Y8 --output events.2014.20160121105408.tab

下载您想要的文件。

关于文件位置的一些有趣细节

上面的link(以及从网站下载的link)没有直接指向数据文件。该文件本身存储在某些 Amazon S3 云存储中。当 运行 使用 -v 参数(并且没有 -L)进行卷曲时,您可以看到这一点:

curl -v https://dataverse.harvard.edu/api/access/datafile/:persistentId/\?persistentId\=doi:10.7910/DVN/28075/K7L9Y8
< HTTP/2 303 
< date: Fri, 19 Nov 2021 16:50:00 GMT
< content-length: 0
< location: https://dvn-cloud.s3.amazonaws.com/10.7910/DVN/28075/15264f0277f-8738b46ba751[...very long URL that I shortened]

Dataverse 的初始回复是 HTTP 303(参见其他),位置入口指向文件的实际位置。向 curl 传递 -L 参数告诉它跟随这个位置​​ link.

正在下载整个数据集

请注意,在您的情况下,您正在从数据集中下载单个文件。要下载整个数据集,您需要使用不同的 API 端点(基本上将 datafile 替换为 URL 中的 dataset)并使用正确的 DOI。对于您的数据集,文件和数据集的 DOI 是:

10.7910/DVN/28075/K7L9Y8  File DOI
10.7910/DVN/28075         Dataset DOI

换句话说,来自数据集的文件获得附加到数据集 DOI 的附加后缀元素。要下载整个数据集(注意,它有 1.5 GB),您将使用:

curl -L https://dataverse.harvard.edu/api/access/dataset/:persistentId\?persistentId\=doi:10.7910/DVN/4OYCQK -v --output ICEWS_Coded_Event_Data.zip