2016-10-21 85 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()