Estrarre informazioni da un sito

Lev1n

Nuovo Utente
9
0
Ciao, fin'ora ho studiato solo Java all'università però ho la necessità di prendere la mano con C#, ho notato fin da subito che le differenze non sono poi molte, volevo comunque fare una piccola applicazione per fare un po' di pratica, tuttavia c'è un problema che non ho mai affrontato.. Vi spiego in linea di massima cosa vorrei fare:

Su questo sito (Partite) appaiono le ultime informazione di alcune partite fatte su questo gioco. Quello che vorrei fare è importare queste informazioni e da queste fare delle statistiche. In verità avevo già fatto un'app del genere in Java solo che le informazioni dovevo inserirle io manualmente volta per volta.
Qualcuno mi saprebbe dare qualche dritta ? Di html sono proprio crudo, comunque provando a leggere la sorgente del sito ho notato che le statistiche non appaiano nel codice html, ma più che altro ci sono delle query a un database, a riguardo ho gia studiato qualcosa, solo che non so in che modo riferirmi a questo database di cui non conosco nemmeno la struttura..
 

lorigio

Utente Attivo
817
238
CPU
Athlon II x3 435 With Noctua NH-D14
Scheda Madre
Asus M5A99X EVO AM3+
HDD
1TB + 160gb + WD My Passport Essential 500gb
RAM
Kingston ddr3 9-9-9-24 6gb 1333mhz
GPU
Gigabyte 5670 790mhz
Monitor
Samsung 22 pollici P2270HD
PSU
Corsair 400watt
Case
Cm 690 II advanced
OS
Windows 7 32 bit

Lev1n

Nuovo Utente
9
0
Grazie dell'aiuto, ho provato a guardare un po' nel sito che hai linkato, in pratica mi basterebbe andare ad un determinato URL e prendere la string che da come risultato.. questo è un esempio : https://euw.api.pvp.net/api/lol/euw...?api_key=63cc69e0-fc16-4a63-9244-4bf8cca3fd19

Una volta che ho quella stringa dovrebbe essere semplice lavorarci su e prendere le info che mi servono.

Ora però non ho idea di come a partire da quell'url ottenere una string con C#, potreste aiutarmi?
 

lorigio

Utente Attivo
817
238
CPU
Athlon II x3 435 With Noctua NH-D14
Scheda Madre
Asus M5A99X EVO AM3+
HDD
1TB + 160gb + WD My Passport Essential 500gb
RAM
Kingston ddr3 9-9-9-24 6gb 1333mhz
GPU
Gigabyte 5670 790mhz
Monitor
Samsung 22 pollici P2270HD
PSU
Corsair 400watt
Case
Cm 690 II advanced
OS
Windows 7 32 bit
Usa questa libreria
James Newton-King - Json.NET

Poi qua ti ho fatto un esempio

Codice:
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using Newtonsoft.Json;


namespace testlol
{
    public class FellowPlayer
    {
        public int summonerId { get; set; }
        public int teamId { get; set; }
        public int championId { get; set; }
    }


    public class Stats
    {
        public int level { get; set; }
        public int goldEarned { get; set; }
        public int numDeaths { get; set; }
        public int minionsKilled { get; set; }
        public int championsKilled { get; set; }
        public int goldSpent { get; set; }
        public int totalDamageDealt { get; set; }
        public int totalDamageTaken { get; set; }
        public int killingSprees { get; set; }
        public int largestKillingSpree { get; set; }
        public int team { get; set; }
        public bool win { get; set; }
        public int neutralMinionsKilled { get; set; }
        public int largestMultiKill { get; set; }
        public int physicalDamageDealtPlayer { get; set; }
        public int magicDamageDealtPlayer { get; set; }
        public int physicalDamageTaken { get; set; }
        public int magicDamageTaken { get; set; }
        public int largestCriticalStrike { get; set; }
        public int timePlayed { get; set; }
        public int totalHeal { get; set; }
        public int totalUnitsHealed { get; set; }
        public int assists { get; set; }
        public int item0 { get; set; }
        public int item1 { get; set; }
        public int item2 { get; set; }
        public int item3 { get; set; }
        public int item4 { get; set; }
        public int item6 { get; set; }
        public int physicalDamageDealtToChampions { get; set; }
        public int totalDamageDealtToChampions { get; set; }
        public int trueDamageTaken { get; set; }
        public int wardKilled { get; set; }
        public int wardPlaced { get; set; }
        public int neutralMinionsKilledEnemyJungle { get; set; }
        public int? turretsKilled { get; set; }
        public int? doubleKills { get; set; }
        public int? item5 { get; set; }
        public int? visionWardsBought { get; set; }
        public int? magicDamageDealtToChampions { get; set; }
        public int? trueDamageDealtPlayer { get; set; }
        public int? trueDamageDealtToChampions { get; set; }
        public int? neutralMinionsKilledYourJungle { get; set; }
        public int? totalTimeCrowdControlDealt { get; set; }
        public int? sightWardsBought { get; set; }
    }


    public class Game
    {
        public int gameId { get; set; }
        public bool invalid { get; set; }
        public string gameMode { get; set; }
        public string gameType { get; set; }
        public string subType { get; set; }
        public int mapId { get; set; }
        public int teamId { get; set; }
        public int championId { get; set; }
        public int spell1 { get; set; }
        public int spell2 { get; set; }
        public int level { get; set; }
        public int ipEarned { get; set; }
        public object createDate { get; set; }
        public List<FellowPlayer> fellowPlayers { get; set; }
        public Stats stats { get; set; }
    }


    public class RootObject
    {
        public int summonerId { get; set; }
        public List<Game> games { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            var json = new WebClient().DownloadString("https://euw.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/20168828/recent?api_key=63cc69e0-fc16-4a63-9244-4bf8cca3fd19");
            RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
            Console.WriteLine("Summoner ID: " + obj.summonerId.ToString());
            Console.WriteLine("Giochi Totali: " + obj.games.Count());
            int i = 1;


            foreach (Game Game in obj.games)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("Game Id: " + Game.gameId);
                Console.ResetColor();
                Console.WriteLine("Risultato: " + ((Game.stats.win) ? "vinto" : "perso"));


            }
            Console.ReadLine();
        }
    }
}

Ho usato json2csharp - generate c# classes from json per generare lo schema e poi con quella libreria ho fatto il parse dell'url e poi da qui puoi usare i risultati a tuo piacimento.

90q0b7.png
 
Ultima modifica:

Lev1n

Nuovo Utente
9
0
Ero riuscito nel frattempo a trovare la classe WebClient, questa libreria non la conosco, magari lo faccio a mano anche se ci vorrà un po' di tempo..
Non riesco però a far eseguire il codice da visual studio, o per lo meno non so come fare, e farlo ogni volta da console è un po' seccante
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili