Autore Topic: Parsing HTML  (Letto 880 volte)

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Parsing HTML
« il: 03 Marzo 2011, 01:25:05 CET »
0
Ciao Ragazzi,
vi scrivo per chiedervi una mano nel parsing di una pagina web.

La struttura della pagina è pressapoco cosi
Codice (HTML): [Seleziona]
<body>
        <h2>
                <span class="classe" id="TITOLO GENERALE">TITOLO GENERALE</span>
        </h2>
        <h3>
                <span class="classe" id="TITOLO 1">TITOLO 1</span>
        </h3>
        <ul>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
        </ul>
        <h3>
                <span class="classe" id="TITOLO 2">TITOLO 2</span>
        </h3>
        <ul>
                <li>testo</li>
                <li>testo
                        <ul>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                        </ul>
                </li>
                <li>testo
                        <ul>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                        </ul>
                </li>
                <li>testo</li>
                <li>testo</li>
                <li>testo
                        <ul>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                        </ul>
                </li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
        </ul>
        <h3><span class="classe" id="TITOLO 3">TITOLO 3</span></h3>
        <ul>
                <li>testo
                        <ul>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                        </ul>
                </li>
                <li>testo</li>
        </ul>
        <h3>
                <span class="classe" id="TITOLO 4">TITOLO 4</span>
        </h3>
        <ul>
                <li>testo</li>
                <li>testo</li>
        </ul>
        <h3>
                <span class="classe" id="TITOLO 5">TITOLO 5</span>
        </h3>
        <ul>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
        </ul>
        <h3>
                <span class="classe" id="TITOLO 6">TITOLO 6</span>
        </h3>
        <ul>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
        </ul>
                </li>
                <li>testo
                        <ul>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                                <li>testo</li>
                        </ul>
                </li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
                <li>testo</li>
        </ul>
                <p>testo</p>
        <ul>
                <li>testo</li>
        </ul>
</body>
sono alle prime armi con android (da circa un mesetto ci sto smanettando come si deve) e volevo capire come recuperare parecchio testo da una pagina html cosi formattata.

Questo è il codice che utilizzo per il recupero dei vari tag
Codice (Java): [Seleziona]
TagNode[] nodesh= rootNode.getElementsByName("h2", true); //Prendo il tag h2
 testo.append("\n"+nodesh[0].getText()+"\n"); //Prendo il testo.
e questo è il codice che sto cercando di usare per recuperare il testo:
Codice (Java): [Seleziona]
 TagNode[] nodesh3= rootNode.getElementsByName("h3", true); //Prendo il tag h3            
       
        for(int i=0; i<nodesh3.length; i++){
            testo.append("\n"+nodesh3[i].getText()+"\n"); //Prendo il testo.                                                                                   
             
            TagNode[] nodesul= rootNode.getElementsByName("ul", true); //Prendo il tag ul
           
            for(int x=0; x<nodesul.length; x++){
                testo.append("\n"+nodesul[x].getText()+"\n"); //Prendo il testo.
            }
        }
La cosa è che riesco a recuperare il testo però dovrei riuscire a fare dei controlli quando mi trovo nel tag <ul> del tipo: quanti <li> ci sono? per ogni <li> dentro <ul> devo scrivere il testo e poi continuo a "scrollare" il documento fino a cercare altri tag <ul>, finiti i quali ricomincio con l'incremento di nodesh3.

Qualcuno che ci è capitato e sa come consigliarmi?
Nell'attesa ringrazio.
CIAO!

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Parsing HTML
« Risposta #1 il: 03 Marzo 2011, 09:39:13 CET »
0
scusa, se l'html è ben formato, potresti utilizzare un parser xml e avresti solo da scorrere l'albero DOM.....
Se cerchi sul forum trovi diversi argomenti al riguardo.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Re:Parsing HTML
« Risposta #2 il: 03 Marzo 2011, 11:47:05 CET »
0
Ciao e grazie per la risposta!
L'html l'ho un po' ripulito... considera che in mezzo ci sono span e paragrafi ma ho visto che se dai il tag padre prende il testo fino alla chiusura dello stesso eliminando eventuali tag interni.
Proverò a vedere con il metodo che hai consigliato
qualche esempio?
Grazie e ciao!

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Parsing HTML
« Risposta #3 il: 03 Marzo 2011, 15:50:14 CET »
0
ripeto: cerca in giro sul forum, e vedrai che c'è un po' di materiale riguardo il parsing XML.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/