如何从The Humanitarian Data Exchangehdx api python下载datasat

问题描述

我不太了解如何从数据集中下载数据。我只下载一个文件,其中有几个。我怎么解决这个问题? 我正在使用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

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

当我使用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

enter image description here

数据集

enter image description here

解决方法

您可以按以下方式获得下载链接:

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']

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...