如何使用 HDX Python API 库从人道主义数据交换 (HDX) 下载数据集?

问题描述 投票:0回答:2

我不太明白如何从数据集中下载数据。我只下载了一个文件,而且还有好几个。我怎么解决这个问题? 我正在使用 hdx api 库。文档中有一个小例子。返回给我一个列表,我使用下载方法。但仅下载列表中的第一个文件,而不是全部。

我的代码

from hdx.hdx_configuration import Configuration
from hdx.data.dataset import Dataset

Configuration.create(hdx_site='prod', user_agent='A_Quick_Example', hdx_read_only=True)
dataset = Dataset.read_from_hdx('novel-coronavirus-2019-ncov-cases')
resources = dataset.get_resources()
print(resources)
url, path = resources[0].download()
print('Resource URL %s downloaded to %s' % (url, path))

我尝试使用不同的方法,但只有这个有效,似乎循环中出现某种错误,但我不明白如何解决它。

结果

Resource URL https://data.humdata.org/hxlproxy/api/data-preview.csv?url=https%3A%2F%2Fraw.githubusercontent.com%2FCSSEGISandData%2FCOVID-19%2Fmaster%2Fcsse_covid_19_data%2Fcsse_covid_19_time_series%2Ftime_series_covid19_confirmed_global.csv&filename=time_series_covid19_confirmed_global.csv downloaded to C:\Users\tred1\AppData\Local\Temp\time_series_covid19_confirmed_global.csv.CSV

忘记补充一点,我得到了一个包含下载网址值的字符串列表。可能问题出在循环中

当我使用 for 循环时,我得到这个:

  for res in resources:
        print(res)
        res[0].download()
Traceback (most recent call last):
  File "C:/Users/tred1/PycharmProjects/pythonProject2/HDXapi.py", line 31, in <module>
    main()
  File "C:/Users/tred1/PycharmProjects/pythonProject2/HDXapi.py", line 21, in main
    res[0].download()
  File "C:\Users\tred1\AppData\Local\Programs\Python\Python38\lib\collections\__init__.py", line 1010, in __getitem__
    raise KeyError(key)
KeyError: 0

数据集

python api dataset cycle hdx
2个回答
0
投票

您可以通过以下方式获取下载链接:

dataset = Dataset.read_from_hdx('acled-conflict-data-for-africa-1997-lastyear')
lita_resources = dataset.get_resources()

dictio=lista_resources[1]
url=dictio['download_url']

0
投票

您可以使用以下代码实现您想要的效果,该代码从 HDX 下载数据集中的每个资源,并显示下载的 url 以及文件下载的路径。

from hdx.api.configuration import Configuration
from hdx.data.dataset import Dataset

Configuration.create(hdx_site="prod", user_agent="A_Quick_Example", hdx_read_only=True)
dataset = Dataset.read_from_hdx("novel-coronavirus-2019-ncov-cases")
resources = dataset.get_resources()
for res in resources:
    url, path = res.download()
    print(f"Resource URL {url} downloaded to {path}")

您可以使用

res.download("FOLDER")
提供要下载的文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.