Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    23

    Estrazione parole da una pagina web

    Ho questo problema:
    ho una pagina web di cui prendo il sogente e lo memorizzo in una "superstringa". Ora da questa stringa dovrei poter recuperare tutte le parole che sono all'interno della pagina per esempio da questa

    vorrei poter recuperare "Pubblicità" , "Soluzioni Aziendali" etc...

    pensavo di usare un'espressione regolare da passare metodo split()... solo che non riseco a formulare l'espressione corretta per estrarre le parole dai vari tag. Qualche suggerimento?

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    In realtà tu vuoi estrarre tutto quello che è "fuori" dai tag, ovverosia tutto quello che non è compreso in una cosa di questo tipo:
    <TAG attributo="valore" . . . >
    trattando separatamente cose particolari come i tag "style" e "script", ad esempio.

    Credo che la soluzione più pratica sia parsare tutto il documento, ignorando tutto ciò che è compreso fra < e > (fermi restando i casi eccezionali che ti ho segnalato).

    Ti segnalo comunque alcune criticità relativamente a quello che vuoi fare: eventuali chiamate Ajax asincrone effettuate dalla pagina, script di manipolazione del DOM, utilizzo degli attributi CSS di visibilità. Ce ne sono sicuramente altre, quindi tienine conto

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    23
    Ho risolto con una roba del genere:

    codice:
    //sorgente contiene tutto il codice sorgente della pagina
    ArrayList<String> risultati = new ArrayList<String>();
            String temp = "";
            for (int i = 0; i < sorgente.length() - 1; i++) {
                char c = sorgente.charAt(i);
               //prendo tutto quello che è compreso tra > e < e che siano lettere
                if (c == '>' && ((sorgente.charAt(i + 1) >= 'a' && sorgente.charAt(i + 1) <= 'z') || (sorgente.charAt(i + 1) >= 'A' && sorgente.charAt(i + 1) <= 'Z'))) {
                    for (int j = i + 1; sorgente.charAt(j) != '<'; j++) {
                        temp = temp + sorgente.charAt(j);
    
                    }
                    if(filtraggio(temp)){ //quì effettuo un controllo per filtrare script e altre robe
                                               //che non mi interessano... non riporto il codice...
                    risultati.add(temp);
                    }
                    temp="";
                   
                }
            }
    così funziona, ma l'eleborazione è molto lenta. Suppongo sia dovuto al fatto che la stringa "sorgente" è enorme!!. Qualcuno sà indicarmi soluzioni alternative?

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.