Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    53

    estrarre link pagina web

    Salve a tutti,
    avete dei consigli di come fare per estrarre tutti i link da un file html?
    In html la sintassi è la seguente Non so cosa usare per dire di prendere il testo tra
    codice:
    <A HREF="
    e
    codice:
    ">
    Qualche suggerimento?Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    leggi riga per riga il file, con il metodo startsWith(String prefix) controlli se inizia per <A HREF=.
    se si trovi la pos del primo e dell'ultimo " con i metodi indexOf(String str) e lastIndexOf(String str) e poi con il metodo substring(int beginIndex, int endIndex) ottieni il path

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    53
    grazie....non conoscevo alcuni metodi
    Proverò e posterò il codice (potesse mai servire a qualcuno)!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    53
    Dimenticavo...un problema però non è risolto!
    <A REF può iniziare in qualunque posto della riga e non subito all'inizio (cosi non posso usare startsWith!)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    usa indexOf e ti trova la prima occorrenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    53
    Grazie.
    Ho realizzato questo!
    codice:
    import java.util.*;
    import java.io.*;
    
    public class estraiLink {
    	public static void main(String[] args) throws IOException{
    		File file = new File("index.htm");
    		Scanner input = new Scanner(file);
    	
    		while (input.hasNextLine()) {
    			String prova = input.nextLine();
    			int start = 0, end = 0;					
    
    			String iniziale = "<A HREF=\"";
    			String finale = "\"";
    
    			start = prova.indexOf(iniziale);
    			if (start != -1) { //se trova un link
    				start = start+iniziale.length();
    				end = prova.indexOf(finale, start);
    				System.out.println(prova.substring(start, end));
    			}
    		}
    	}
    }
    L'unico problema che mi rimane è che nelle pagine posso trovare scritto "A HREF" oppure "a href" per cui il mio metodo non li rileva entrambi....è facile metterci un "IgnoreCase"?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    puoi usare un
    codice:
    if((minusc)||(maius)){
    ...
    
    }
    oppure

    codice:
    equalsIgnoreCase(String anotherString)
    che compara due stringhe ignorando maiusc e minusc

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    53
    Ciao,
    usando l'if non andrebbe bene perchè se beccassi un "A HrEf" verrebbe ignorato....
    Vorrei usare il secondo metodo che mi hai suggerito ma non capisco come/dove applicarlo nel mio codice!
    Grazie per l'aiuto!

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    soluzione indolore e poco elaborata... metti in maiuscolo ogni stringa letta...

    codice:
    String prova = input.nextLine();
    prova.touppercase();
    int start = 0, end = 0;

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    53
    Si, hai anche ragione grazie

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.