La clé n'est pas reconnue pourtant elle est dans le JSON

geekat Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je ne comprends pas pourquoi j'ai une erreur sur la clé sachant que la clé existe bien !


J'ai utilisé d'autres clé, j'ai la même erreur.
Voici le fichier JSON pour cette clé :
https://fr.wiktionary.org/w/api.php?action=query&titles=abr%C3%A9ger&prop=iwlinks&utf8&iwprefix=en&format=jsonfm

Merci

1 réponse

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Probablement une erreur de recopie quelque part.
    Sur ma machine, ça fonctionne bien !
    Tape : datas['query']['pages'] et fais un copier coller de ce qu'il renvoie.
    0
    1. geekat Messages postés 223 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci pour votre réponse.
      J'ai essayé, ça me renvoie bien un résultat :
      >{'2254808': {'ns': 0, 'title': 'accrassiner', 'pageid': 2254808}}</code>
      

      Et c'est tout ce qu'il reconnaît d'une liste de titles que je souhaitais qu'il reconnaissent. Je dois avoir un problème dans ma boucle :
      # mettre tous les titles dans title
      for datum in data[0]['query']['categorymembers']:
          titles_0 = datum['title']
          pageids_0 = datum['pageid']
          mon_url = 'https://fr.wiktionary.org/w/api.php?action=query&titles=%s&prop=iwlinks&utf8&iwprefix=en&format=json&indexpageids=%s' % (titles_0, pageids_0)
          print(mon_url)
      
      for datum in data[1]['query']['categorymembers']:
          titles_1 = datum['title']
          pageids_1 = datum['pageid']
          mon_url = 'https://fr.wiktionary.org/w/api.php?action=query&titles=%s&prop=iwlinks&utf8&iwprefix=en&format=json&&indexpageids=%s' % (titles_1, pageids_1)
          print(mon_url)
          
      with urllib.request.urlopen(mon_url)as url:
          datas= json.loads(url.read().decode("utf8"))    
      
      
      ######################### Il doit récupérer tous les titles 
      ## Récupérer le mot traduit
      print (datas['query']['pages'])
      for datum in datas['query']['pages'][pageids_0]:
          title2 = datas["iwlinks"][0]['*'] # pageids entre crochets
          print(title2)  
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > geekat Messages postés 223 Date d'inscription   Statut Membre Dernière intervention  
         
        Avant de plonger dans votre code, c'est étrange que datas['query']['pages'] ne renvoie pas la clé "137227" (à moins que ton copier coller soit tronqué...).

        Vérifie bien que le contenu de datas (issu du JSON) est correct.
        0