Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] Recupero stringa con JSoup

    Ciao,
    Ho questa stringa in un documento html:
    codice:
    <div class="gol-casa text-right">	<div><span>P. Franco</span> <span class="minuto-gol">90'+3'</span></div>
    </div>
    <div class="gol-fuori text-left">
            <div><span class="minuto-gol">24'</span><span>M. Stroppa</span> </div>
            <div><span class="minuto-gol">45'+2'</span><span>A. Gomez</span> </div>
    	<div><span class="minuto-gol">80'</span><span>F. Spanò</span> </div>
    </div>
    I minuti riesco a recuperarli facilmente
    codice:
    Element met1b=documentb.select("span.minuto-gol").get(0);
    poi è possibile fare un ciclo for per recuperarli invece di mettere get(0), ma al momento sono prove e voglio solo raggiungere il mio scopo, per affinarlo ci penserò dopo.

    Il problema è che non riesco in alcun modo a prendere i giocatori.
    ho provato con
    codice:
    Elements met1b=documentb.select("gol-casa text-right").select("div").select("span")
    ma la lista è sempre vuota.
    Ho fatto tante altre prove che ho cancellato nel mio listato perché non mi portavano a nulla,
    visto che non esiste nel div e nello span del giocatore né la classe né qualcos'altro per indentificarlo, come potrei fare a recuperarlo?

    Grazie a chi mi potrà aiutare.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Ho risolto, non andava messo "text right" e "text left", mi è venuta una illuminazione

    codice:
    	
    Elements element = document.select("div.gol-casa");for (Element e : element){
        System.out.println(e.text());
        	
    }
    ci stavo impazzendo, pensavo fosse parte del nome.
    Ora devo trovare un modo per escludere "span.minuto-gol" per prendere solo il nome.
    Grazie.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, non utilizzo JSoup ma leggo che select() riceve una stringa che ricalca il funzionamento dei selettori CSS, quindi deduco che tu possa selezionare qualsiasi cosa se imposti opportunamente tale query.

    Ancora, penso che sia meglio usare .text() per recuperare il testo contenuto dentro gli elementi tag.

    Dal momento che i nomi dei giocatori (nel tuo esempio) non sono posti seguendo sempre una stessa logica, è necessario capire cosa ti interessa selezionare esattamente.
    Nella prima riga (cioè dentro il <div> .gol-casa) il giocatore è inserito nello <span> prima di .minuto-gol.
    Invece, nelle righe successive (cioè quelle dentro il <div> .gol-fuori) i giocatori sono inseriti dopo i relativi <span> .minuto-gol.

    Se ti serve selezionare giocatori e relativi minuti, è necessario capire quale logica si deve considerare.

    Ora, se volessi selezionare il primo giocatore dentro il <div> .gol-casa, suppongo si possa impostare una roba del genere (non l'ho testato):

    codice:
    documentb.select("div.gol-casa > div:eq(0) > span:eq(0)").text();
    Parafrasando (leggendo da destra verso sinistra) viene selezionato il primo <span> (con indice 0) che è "figlio diretto" (usando il combinatore ">") del primo <div> (con indice 0) che a sua volta è figlio diretto (">") di qualsiasi <div> che possiede classe "gol-casa". Quindi ne viene restituito il testo attraverso text(). Dovrebbe restituire "P. Franco"


    Questo a grandi linee.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Grazie KillerWorm.
    il tuo codice in qualche modo funziona anche se mettendo "> div:eq(0)> span:eq(0)" me ne prende solo uno, tuttavia al momento per prendere solo i giocatori ho risolto così:
    codice:
    	
    document.select("span.minuto-gol").remove();	
    Elements c_childs = document.select("div.gol-casa");	
    
    
    for (Element e : c_childs){
    	System.out.println(e.text().trim());
       	
    }
    	
    
    documentb.select("span.minuto-gol").remove();
    	
    Elements f_childs = documentb.select("div.gol-fuori");	
    
    
    for (Element e : f_childs){
    	System.out.println(e.text().trim());
    }
    Adesso devo in qualche modo prendere tutti i gol "minuto-gol" rispettivamente per in gol-casa e gol-fuori.
    Se selezionassi il documento per prendere i tag "minuto-gol"
    codice:
    	
    Elements minuti=document.select("span.minuto-gol");
    me li prenderebbe tutti e quattro indistintamente, si certo posso in qualche modo discriminarli avendo già estratto il risultato, ma dovrei in qualche modo fare più lavoro, sarebbe meglio in qualche modo discriminarli preventivamente.
    Magari proverò integrare il tuo codice con qualche modifica.
    Essendo per un mio progetto personale, ci lavoro i fine settimana o la sera, tornando da lavoro.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Ho risolto così per i gol.
    codice:
            Elements g_childs = document.select("div.gol-casa");
            Elements gol_childs=g_childs.select("span.minuto-gol");
    
    
    
    
            for (Element e : gol_childs){
                System.out.println(e.text().trim());
            
            }
            
            System.out.println("-----------------------------");
            Elements gf_childs = document.select("div.gol-fuori");
            Elements golf_childs=gf_childs.select("span.minuto-gol");
    
    
    
    
            for (Element e : golf_childs){
                System.out.println(e.text().trim());
            
            }
    Adesso posso andare avanti
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.