Autore Topic: [medio] Ottenere dati da una pagina HTML  (Letto 14622 volte)

Offline Smile

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Sistema operativo:
    Windows 7
Re:[medio] Ottenere dati da una pagina HTML
« Risposta #30 il: 18 Aprile 2014, 15:42:26 CEST »
0
Guarda, ho risposto per lo stesso identico problema in questo thread:
Problema nel visualizzare un Imageview caricata da url - Android Developers Italia

Purtroppo sviluppo da poco, e non capisco come dovrei modificare il codice.. potresti spiegarmelo meglio?

Offline minimanimo

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Sistema operativo:
    Windows 8
Re:[medio] Ottenere dati da una pagina HTML
« Risposta #31 il: 06 Maggio 2014, 19:07:58 CEST »
0
Richiede qualche modifica al codice iniziale (anche per semplificarlo, molto del codice di sopra è inutile se ho ben capito la javadoc di htmlcleaner).
Ti conviene aggiungere un nuovo metodo, così eviti di toccacciare troppo :-P

Codice (Java): [Seleziona]
public String StampaClasse(String className) {
    StringBuffer sb = new StringBuffer();

    try {  
        List<TagNode> elementi = rootnode.getElementListByAttValue("class", className);

        sb.append(">>> Stampa contenuto degli elementi con classe'"+className+"' per il sito '"+url_str+"'\n");
        TagNode el;
        Iterator<TagNode> iterator = elementi.iterator();
        while(iterator.hasNext()) {
             el = iterator.next();
             sb.append("Contenuto: " + el.getText() + "\n");
        }
       
        return sb.toString();
    }
    catch(Exception e) {
        e.printStackTrace();
    }
       
    return null;
}

Questo metodo ti regala la stringa con i valori di tutti quei tag che hanno come classe className.
Ho spostato la creazione dell'Iterator fuori dal ciclo perchè all'interno non mi piace poi più di tanto. Non so se influisca o meno sulle performance, ma mi pare più chiaro lasciarlo fuori da istruzioni for() e while(). Forse sarebbe pure meglio usare un Array invece di una List, mmm...

EDIT: ovviamente, mi ero dimenticato il più grande problema di tutti: la creazione di un nuovo oggetto ad ogni invocazione di ciclo. Ora dovrebbe essere sistemato.

Salve,ottimo tutorial. Mi interebbe fare la stessa cosa.
In pratica,in una pagina html ho:
<pre>
testo che voglio prendere e manipolarlo nella mia app
</pre>

Ma non riesco,qualcuno può darmi una mano?Grazie infinite

EDIT:
Le mie prove:
in finestra.java ho modificato la chiamata con
Codice: [Seleziona]
tv.setText(hp.StampaClasse(elementName));
dove elementName = "pre";
Nel metodo StampaClasse,ho dovuto modificare cosi (perchè dava problemi):
Codice: [Seleziona]
List<TagNode> elementi = rootNode.getElementListByAttValue("class", className, true, true);
Il resto è rimasto lo stesso.
il risultato è che sullo schermo per quella classe non stampa nulla! :'(

RIEDIT:
Ok.. ho capito che quello di cui ho bisogno non è la ricerca della classe,perchè il "pre" non ha classe!!
pre è un tag giusto? Come posso ricavarlo?!
« Ultima modifica: 06 Maggio 2014, 19:20:04 CEST da minimanimo »

Offline minimanimo

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Sistema operativo:
    Windows 8
Re:[medio] Ottenere dati da una pagina HTML
« Risposta #32 il: 11 Maggio 2014, 16:35:56 CEST »
0
Nessuno che sà come aiutarmi??

Offline minimanimo

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Sistema operativo:
    Windows 8
Re:[medio] Ottenere dati da una pagina HTML
« Risposta #33 il: 08 Giugno 2014, 16:53:48 CEST »
0
Non ho ancora risolto  :-(

Offline mauare

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
    • Mauare weSlip! Free
  • Dispositivo Android:
    Samsung Galaxy Note 3
  • Play Store ID:
    Mauare
  • Sistema operativo:
    Ubuntu 13.x
Re:[medio] Ottenere dati da una pagina HTML
« Risposta #34 il: Ieri alle 13:11 »
0
Ho copiato i files e le librerie nel mio progetto, ma non visualizzo nulla a schermo, mi da errore Null in questa riga sulla classe HtmlParser o_O:

riga 66 =
Codice: [Seleziona]
TagNode Elements[] = rootNode.getElementsByName(elementName, true);
lo stack è questo:

Citazione
10-29 12:08:00.634      686-686/it.mauare.example.htmlcleaner E/Error2﹕ www.anddev.it
10-29 12:08:00.644      686-686/it.mauare.example.htmlcleaner W/System.err﹕ java.lang.NullPointerException
10-29 12:08:00.654      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at it.mauare.example.htmlcleaner.HtmlParser.getElement(HtmlParser.java:66)
10-29 12:08:00.654      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at it.mauare.example.htmlcleaner.HtmlParser.Stampa(HtmlParser.java:88)
10-29 12:08:00.654      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at it.mauare.example.htmlcleaner.Finestra.onCreate(Finestra.java:27)
10-29 12:08:00.664      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-29 12:08:00.664      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-29 12:08:00.664      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-29 12:08:00.674      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-29 12:08:00.674      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-29 12:08:00.674      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 12:08:00.674      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.os.Looper.loop(Looper.java:123)
10-29 12:08:00.686      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:3683)
10-29 12:08:00.686      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
10-29 12:08:00.686      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:507)
10-29 12:08:00.694      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-29 12:08:00.694      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-29 12:08:00.694      686-686/it.mauare.example.htmlcleaner W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)

N.B. Lo visualizzo sull'emulatore con android 2.3.3, e sul mio note 3 con kitkat che dice invece... Problema nel parsing: null
« Ultima modifica: Ieri alle 13:24 da mauare »