首页 > 解决方案 > 通过循环包含 47 个 URL 的 Pandas 数据框来下载 CSV 数据

问题描述

我正在尝试为我的数据工程项目开发一个 Python 脚本,并且我想循环存储在数据框中的 47 个 URL,它会下载一个 CSV 文件并存储在我的本地机器中。以下是前 5 个 URL 的示例: 在此处输入图像描述

test_url = "https://data.cdc.gov/api/views/pj7m-y5uh/rows.csv?accessType=DOWNLOAD"
req = requests.get(test_url)
url_content = req.content
csv_file = open('cdc6.csv', 'wb')
csv_file.write(url_content)
csv_file.close()

我有一个文件,但不是打开一个 CSV 文件并在其中写入数据,我想直接下载所有文件并将其保存在本地机器中。

标签: pythonpython-3.xpandasdataframe

解决方案


您想要迭代然后将文件下载到文件夹中。.items()通过使用pandas 数据帧中的方法并将其传递到循环中,迭代很容易。请参阅此处的文档。

然后,您要下载每个项目。Urllib 具有将.urlretrieve(url, filename)托管文件下载到本地文件的功能,此处的 urllib 文档中对此进行了详细说明。

您的代码可能如下所示:

for index, url in url_df.items():
    urllib.urlretrieve(url, "cdcData" + index + ".csv")

或者如果您想保留原始名称:

for index, url in url_df.items():
    name = url.split("/")[-1]
    urllib.urlretrieve(url, name)

推荐阅读