2016-10-21 123 views
0

我試圖從pokemon api訪問數據並從那裏獲取一些信息。首先你需要輸入一個數字(現在只有選項1)。然後形成口袋妖怪名稱/號碼和網址。但當我收到很多錯誤時使用python訪問JSON api

data = json.loads(THEURL) 
print(data['forms']['name']) 

我在做什麼錯?

#importception 
import requests 
import json 

#import poke api 
api_url = 'http://pokeapi.co/api/v2/' 

#welke database 
def databaseaanvragen(): 
    print('Welke database wilt u aanvragen?') 
    print('Hallo), wat wilt u doen?') 
    print('1) Pokemons') 
    print('2) Locations') 
    print('3) Moves') 
    keuze = input('Voer hier het nummer in: ') 
    if(keuze.isdigit()): 
     keuze = int(keuze) 

    if keuze == 1: 
     poke_naam = input('Voer de naam of het nummer van de Pokemon in: ') 
     poke_value = 'pokemon/' + poke_naam 
     return poke_value 

#database url en data aanvragen 
aangevraagd = api_url + databaseaanvragen() 
data = json.loads(aangevraagd) 

print(data['forms']['name']) 
+2

'json.loads'需要包含要解碼的JSON的字符串,而不是URL。 'json.load'代替了一個打開的文件指針。簡而言之:'json'模塊不會執行實際的HTTP請求來獲取JSON文檔,這不是它的工作;你需要自己做。 – deceze

回答

1

實際上並不像您使用GET請求查詢JSON api。您需要的代碼如下所示:

try: 
    r = requests.get(api_url) 
except requests.exceptions.RequestException as error: 
    print(error) 
    sys.exit(1) 
else: 
    # No Exception was raised :) 
    # Decode the JSON from the response content 
    json_data = r.json()