2016-04-04 8 views

答えて

5

は、私はすべてのAPIプログラミングにrequestsを使用して好みます。ここではいくつかのAPI呼び出しの結果をフェッチワンライナーは、リストでそれらを置き、そしてJSONファイルにリストと書いている:

json.dump([requests.get(url).json() for url in URLs], fp) 

ここでは、完全なテストプログラムです:

import requests 
import json 

URLs = [ 
    # Some URLs that return JSON objects 
    'http://httpbin.org/ip', 
    'http://httpbin.org/user-agent', 
    'http://httpbin.org/headers' 
] 

with open('result.json', 'w') as fp: 
    json.dump([requests.get(url).json() for url in URLs], fp, indent=2) 

何らかの理由でrequestsにアレルギーがある方は、標準のライブラリのみを使用して、同等のPython3コードを入力してください。

from urllib.request import urlopen 
import json 

URLs = [ 
    # Some URLs that return JSON objects 
    'http://httpbin.org/ip', 
    'http://httpbin.org/user-agent', 
    'http://httpbin.org/headers' 
] 

json_list = [] 
for url in URLs: 
    resp = urlopen(url) 
    resp = resp.read().decode(resp.headers.get_content_charset() or 'ascii') 
    json_list.append(json.loads(resp)) 
with open('result.json', 'w') as fp: 
    json.dump(json_list, fp, indent=2) 
+0

私の答えは、基本言語を使用したソリューションを取り上げていました。私はPython初心者のように外部パッケージをインストールしないようにしたいと思っていました。つまり、これはプロセスを単純化します。ありがとう! – sookie

+0

私のアドバイス:常に 'requests'を使用してください。 [urllibのドキュメント](https://docs.python.org/3/library/urllib.request.html#module-urllib.request)でもそれをお勧めします!しかし、私の最近の編集を参照して、標準ライブラリのみの代替。 –

+0

アドバイスと編集が大変感謝しています – sookie

-1

1A)解析JSONにリスト、及び

3)出力リストに(パイソン2)

Python 2では、JSON解析を実装する方が簡単でした:

import urllib2 

json_data = urllib2.urlopen(url) 
data = json.load(json_data)   # load() from file 

APIから1b)の解析JSON(Pythonの3)

のPython 3 urllib2のを落とし、代わりに、urllibはのための新しい標準に移動:

import urllib.request 

json_data = urllib.request.urlopen(url) 

データは、この関数から返さができます」以前と同じ方法で処理されます。タイプは 'HTTPResponse'なので、最初にそれを読み込んでデコードする必要があります。

これで文字列を取得できました。これで、loads()関数を使用して有効なJSON辞書に処理できます。

json_dict = json.loads(str_json_data)  # loads() from string 

json.load()関数とjson.loads()関数の違いに注目してください。

2)追加の

data.append(json_dict) 

通常通りリストに

リストに複数の要求を解析します。

file = open("file.json", "w") 
file.write(json.dumps(data)) 
file.close() 

を提出する

3)出力あなたは、目的のフォーマットにインデントを追加することができます。

file.write(json.dumps(data, indent=4, sort_keys=True) 
関連する問題