Menu

Par défaut Extraire plusieurs textes d'un site WEB en JAVA

- - Dernière réponse : KX
Messages postés
15989
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2019
- 16 mai 2019 à 21:24
Bonjour/Bonsoir !

Je cherche à enregistrer dans un tableau de String de taille 100, tous les pseudos des joueurs présent dans ce club : https://brawlstats.com/club/282YLRCR

Problème étant, il doit se mettre à jour toutes les heures, donc pas moyen de le faire à la mano. Comment faire ? Je ne trouve pas d'ID ou de class qui les distinguent des autres textes.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
15989
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2019
2359
1
Merci
Bonjour,

Le site web exécute une requête à cette API : https://api.brawlstats.com/v6/clubs/profiles/282YLRCR
C'est elle qui transmet les données, au format JSON, pour remplir le site.
Un exemple de contenu : https://codebeautify.org/online-json-editor/cb7f92fc

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 39387 internautes nous ont dit merci ce mois-ci

Commenter la réponse de KX
0
Merci
Bonjour,

C'est génial ! Vous sauriez m'expliquer comment je peux envoyer une requête à cette API via un programme Java et récupérer ces données ?
Commenter la réponse de Skysynth
0
Merci
Bonjour/Bonsoir !

Alors j'ai pas mal avancé, j'ai contacté un des programmeurs de l'API ( un français très sympathique au passage ) qui m'a tout expliqué.

J'ai chargé le profile d'un joueur, voici la réponse :

Code :

{"tag":"LLUL2Y82","id":{"high":9,"low":2673228},"name":"cassidokan","nameColorCode":"CB5AFF","brawlersUnlocked":20,"victories":2996,"soloShowdownVictories":253,"duoShowdownVictories":194,"totalExp":64168,"expFmt":"948/1130","expLevel":110,"trophies":8773,"highestTrophies":8791,"avatarId":28000004,"avatarUrl":"https://media.githubusercontent.com/media/fourjr/bs-assets/master/player_icons/28000004.png","bestTimeAsBigBrawler":"1m 57s","bestRoboRumbleTime":"6m 9s","hasSkins":true,"club":{"id":{"high":7,"low":473519},"tag":"282YLRCR","name":"Oblivion [FR]","role":"Senior","badgeId":6,"badgeUrl":"https://media.githubusercontent.com/media/fourjr/bs-assets/master/club_badges/clan_badge_02_03.png","members":98,"trophies":945502,"requiredTrophies":9000,"onlineMembers":12},"brawlers":[{"name":"Colt","hasSkin":false,"skin":null,"trophies":529,"highestTrophies":548,"power":10,"rank":20},{"name":"Bull","hasSkin":false,"skin":null,"trophies":505,"highestTrophies":509,"power":7,"rank":20},{"name":"Dynamike","hasSkin":false,"skin":null,"trophies":500,"highestTrophies":500,"power":7,"rank":20},{"name":"Rosa","hasSkin":false,"skin":null,"trophies":500,"highestTrophies":500,"power":5,"rank":20},{"name":"Barley","hasSkin":true,"skin":"Wizard Barley","trophies":481,"highestTrophies":498,"power":7,"rank":19},{"name":"Brock","hasSkin":false,"skin":null,"trophies":460,"highestTrophies":490,"power":8,"rank":19},{"name":"Bo","hasSkin":false,"skin":null,"trophies":460,"highestTrophies":491,"power":7,"rank":19},{"name":"Poco","hasSkin":false,"skin":null,"trophies":427,"highestTrophies":442,"power":7,"rank":18},{"name":"Shelly","hasSkin":false,"skin":null,"trophies":425,"highestTrophies":433,"power":7,"rank":18},{"name":"Jessie","hasSkin":false,"skin":null,"trophies":425,"highestTrophies":440,"power":7,"rank":18},{"name":"El Primo","hasSkin":false,"skin":null,"trophies":424,"highestTrophies":429,"power":7,"rank":18},{"name":"Piper","hasSkin":false,"skin":null,"trophies":424,"highestTrophies":433,"power":6,"rank":18},{"name":"Carl","hasSkin":false,"skin":null,"trophies":422,"highestTrophies":422,"power":5,"rank":18},{"name":"Leon","hasSkin":false,"skin":null,"trophies":420,"highestTrophies":430,"power":5,"rank":18},{"name":"Frank","hasSkin":false,"skin":null,"trophies":410,"highestTrophies":420,"power":6,"rank":18},{"name":"Rico","hasSkin":false,"skin":null,"trophies":401,"highestTrophies":482,"power":8,"rank":19},{"name":"Darryl","hasSkin":false,"skin":null,"trophies":401,"highestTrophies":411,"power":7,"rank":17},{"name":"Nita","hasSkin":false,"skin":null,"trophies":399,"highestTrophies":407,"power":7,"rank":17},{"name":"Penny","hasSkin":false,"skin":null,"trophies":397,"highestTrophies":424,"power":6,"rank":18},{"name":"Pam","hasSkin":false,"skin":null,"trophies":363,"highestTrophies":382,"power":7,"rank":17}]}


A travers tout ce blabla, j'aimerais pouvoir récupérer par exemple le pseudo du joueur ("name":"cassidokan"), ses trophées actuels("trophies:8773") et pour aller plus loin, pourquoi pas récupérer tous les noms de ses brawlers avec ses trophées.

Problème étant, je rencontre une erreur IllegalStateException et je n'arrive pas à m'en défaire. Des idées ?
KX
Messages postés
15989
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2019
2359 -
Bonjour,

Tu peux utiliser une bibliothèque de manipulation du JSON, par exemple https://search.maven.org/artifact/org.json/json/20180813/bundle

import org.json.JSONObject;

JSONObject json = new JSONObject("{...}");
String name = json.getString("name");
Commenter la réponse de Skysynth
0
Merci
Oups ! Je n'ai pas pu envoyer le screen, j'avais pas remarqué, pas grave regarde ce que j'ai fait :

En enlevant toute la partie obsolète de la requête, voici les lignes importantes qui génère un JSONException : JSONObject ["tag"] not found

 JSONObject json = new JSONObject(response.body());

System.out.println("name = " + json.get("tag")); // JSONException not found
System.out.println("trophies = " + json.getInt("trophies"));
KX
Messages postés
15989
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2019
2359 -
Tu peux utiliser
json.keySet()
pour savoir quelles sont les clés sur lesquelles tu peux faire un
get(key)
ou même faire json.toString pour vérifier la structure du JSON manipulé.
Commenter la réponse de Skysynth