如何从包含csv文件url的json文件下载csv文件?

2024-04-26 11:35:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一个文件,该文件下载一个json文件,其中包含多个csv文件的url。看起来是这样的

{"data_files":
{"i_p":["https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_i_p.1_0.1.csv.gz",
"https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_i_p.1_0.2.csv.gz"],
"c_p":["https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_c_p.1_0.1.csv.gz",
"https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_c_p.1_0.2.csv.gz"]},
"date":"2021-05-05"}

现在我想下载json文件中的所有文件。我正在使用以下代码

import requests
from requests.auth import HTTPBasicAuth
import json
import urllib
import datetime

myResponse1 = requests.get('https://dashboard.s.com/api/1/user.json?api_key=xxxxxxxxx&personal_key=xxxxxxxx')

if(myResponse1.ok):
    file = open("V.json", "wb")
    file.write(myResponse1.content)
    file.close()
    
    
file = open('V.json', 'r')
id = 0
for line in file:
   response = urllib.request.urlretrieve(line, str(id) + '.csv')
   id+=1
    
else:
  # If response code is not ok (200), print the resulting http error code with description
    myResponse1.raise_for_status()

上面的代码可以下载json文件,但我不知道如何使用json文件下载存储在json中的csv文件。有人能告诉我怎么做吗


1条回答
网友
1楼 · 发布于 2024-04-26 11:35:54

必须使用json,但如果您可以在关键/值对上进行迭代,则可以使用请求下载文件

data = '''{"data_files":
{"i_p":["https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_i_p.1_0.1.csv.gz",
"https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_i_p.1_0.2.csv.gz"],
"c_p":["https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_c_p.1_0.1.csv.gz",
"https://dashboard.s.com/api/1/user/downloads/2021-05-05/all_2021-05-05_c_p.1_0.2.csv.gz"]},
"date":"2021-05-05"}'''

dataj = json.loads(data)

for k,v in dataj['data_files'].items():
    for f in v:
        print(f)
        r = requests.get(f, allow_redirects=True)
        print(f.split('/')[-1]) # split out the file name
        open(f.split('/')[-1], 'wb').write(r.content) # write the file

相关问题 更多 >