2017-08-07 8 views
2

現在、Python 3で書かれたAPIツールを使用して、複数のURLをクエリしてAPIデータを取得し、その結果を単一の.JSONファイルに書き込みます。私はこれを正常に動作させることができましたが、スクリプトは実行されますが、最後のAPI要求だけが保存されているようです。Python 3 - 複数のAPIクエリを単一のJSONファイルに書き込む

私が望むのは、各リクエストが独自の行を持つことです。これまでの質問を見て、これまでのところこれまでに行ってきたことですが、それでも最後のAPIリクエストのみが保存されます。私が間違っていることをアドバイスできますか?これはシンプルに見えるかもしれないが、私はPythonにとって全く新しいことを謝ります。

ベスト、 Stig0501

import requests 
import json 

urls = ["https://api.chucknorris.io/jokes/random", 
    "http://api.icndb.com/jokes/random"] 

final_data = [] 

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36'} 

for url in URLs: 
data = requests.get(url, headers=headers).json() 
final_data.update(data) 

with open ('output.json', 'w') as f: 
    for fd in final_data: 
    json.dump(fd, f) 
f.write('\n') 
+0

各 'data'が同じキーを持っている場合は、次に' final_data'内のエントリは、各要求に上書きされます。 –

+0

'final_data'を' list'に変更します。 –

+0

'final_data'を' list'に変更します。 –

答えて

0

あなたはリスト

final_data = [] 

final_dataを作成したファイルはすべての要求が含まれます

final_data.append(data) 

要求データを追加することができます。

独自の行にある各要求:

for fd in final_data: 
    json.dump(fd, f) 
    f.write("\n") 
+0

こんにちはHakran、あなたの迅速な対応に感謝します。私はこれを試して、今はすべてのデータを取得しますが、それはまだ同じ行にあります。あなたのコードを今のように更新しました – Stig0501

+0

'' json.dump(fd、f) 'の後ろに' f.write( "\ n")で新しい行を置くことができました –

+0

コードを更新した後質問の説明では、コード内で何が起こっているのか説明していません。 '最後のAPIリクエストのみが保存されます'はもう正しくありません。 –

関連する問題