Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    [JAVA-HTTP] Prelievo informazioni da pagina web

    Ciao a tutti, dovrei realizzare un'applicazione in Java che consente di prelevare dei dati dalle pagine web di un sito (www.imdb.com) risultato di una richiesta GET (esempio: http://www.imdb.com/find?s=tt&q=shawshank+redemption). Non saprei bene da dove partire... potreste darmi qualche dritta?
    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA-HTTP] Prelievo informazioni da pagina web

    Originariamente inviato da PeppinoCatrame
    Non saprei bene da dove partire... potreste darmi qualche dritta?
    Avevo fatto un esempio in questa discussione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Intanto grazie per avermi risposto!
    Cmq nel tuo esempio vedo che si fa una separazione tra url di connessione e file da scaricare.
    Quindi volendo io scaricare la pagina visibile all'indirizzo http://www.imdb.com/title/tt0111161/ dovrei chiamare il metodo
    downloadFromUrl (URL url, String localFilename, String userAgent) passandogli i parametri in questo modo:

    downloadFromUrl (http://www.imdb.com/, title/tt0111161/, "Mozilla/4.0") ?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da PeppinoCatrame
    Cmq nel tuo esempio vedo che si fa una separazione tra url di connessione e file da scaricare.
    No, non è una separazione. Quel parametro 'url' deve essere un oggetto java.net.URL (e non una semplice stringa) che rappresenta un URL completo di protocollo, host, path, file, query string (i parametri) e quant'altro.
    Mentre il parametro 'localFilename' è la specifica di un nome di file locale che verrà creato e in cui verrà scaricato il contenuto della risorsa. E può anche non avere alcuna attinenza con l'URL indicato.

    Originariamente inviato da PeppinoCatrame
    Quindi volendo io scaricare la pagina visibile all'indirizzo http://www.imdb.com/title/tt0111161/ dovrei chiamare il metodo
    downloadFromUrl (URL url, String localFilename, String userAgent) passandogli i parametri in questo modo:

    downloadFromUrl (http://www.imdb.com/, title/tt0111161/, "Mozilla/4.0") ?
    No.

    downloadFromUrl (new URL ("http://www.imdb.com/title/tt0111161/"), "pagina.html", "Mozilla/4.0");

    (occhio che il costruttore di URL può lanciare la eccezione MalformedURLException che è di tipo "checked" e quindi va tenuta in considerazione).

    Il nome del file locale lo chiami ovviamente come ti pare. La questione dello user-agent è un po' diversa. Molti siti si basano sulla stringa di user-agent per offrire una versione diversa e/o più funzionale a seconda dello user-agent. Oppure lo possono usare a fini statistici.
    Quindi spetta a te decidere come vuoi "presentarti" al server.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Intanto grazie ancora per avermi risposto. Ho glissato la storia del FileOtputStreamer scrivendo direttamente tutto sulla stringa perché alla fine quelle che devo ottenere sono info testuali.
    Ora dovrei infatti estrapolare dalla pagina risultato di una ricerca del titolo (es: http://www.imdb.com/find?s=tt&q=in+the+cut) l'indirizzo del primo titolo della lista (es: http://www.imdb.com/title/tt0199626/).
    Il mio problema è: come farlo? Usando uno string tokenizer posso dividere i token usando come separatore solamente un carattere. Non esiste un modo di usare come separatori più caratteri? Se così fosse sarei a buon punto!

    Edit: dovrei avere capito come arrivarci logicamente tramite lo split, ma ora è sopraggiunto il problema che la pagina con i risultati della ricerca non ha sempre la stessa struttura, a volte ha una configurazione di questo tipo, altre volte di quest'altro.
    Come potrei fare una scelta automatica elastica??? Conto su un tuo consiglio andbin

  6. #6
    Sono riuscito a risolvere il problema di cui sopra, ma ora ne ho un altro.
    Se il seguente codice

    codice:
    int lun_a1 = Array.getLength(splitted1);
    for(int i=0;i<lun_a1;i++){
    	System.out.println(splitted1[i]);
    				
    }
    mi restituisce il seguente risultato su di una pagina splittata:


    <html

    <head

    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"

    <title
    Forrest Gump (1994)</title

    ...
    come è possibile che con questa aggiunta non mi restituisca niente (non stampa true)?!

    codice:
    int lun_a1 = Array.getLength(splitted1);
    for(int i=0;i<lun_a1;i++){
    	if (splitted1[i].equals("<title")){
    		       System.out.println("true");
    		       break;
    	}
    				
    }

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da PeppinoCatrame
    come è possibile che con questa aggiunta non mi restituisca niente (non stampa true)?!
    Perché quasi sicuramente quello che hai in splitted1[i] non è esattamente solo il testo che cerchi. Molto probabilmente ha degli spazi e/o newline in più.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Originariamente inviato da andbin
    Perché quasi sicuramente quello che hai in splitted1[i] non è esattamente solo il testo che cerchi. Molto probabilmente ha degli spazi e/o newline in più.
    Eh ma come posso fare a capirlo? Se lo seleziono non vedo altro che il testo... niente spazi aggiuntivi!

    Poi, se così fosse mi dovrebbe funzionare almeno così:

    codice:
    int lun_a1 = Array.getLength(splitted1);
    for(int i=0;i<lun_a1;i++){
    	if (splitted1[i].startsWith("<title")){
    		System.out.println("true");
    		break;
    	}
    }
    E invece nada... non riesco proprio a capire... anche perché ho fatto un altro ciclo praticamente identico e quello funziona!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Non credo che ti convenga usare split(). Usa find() di Matcher per andare a cercare ciò che ti serve.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Grazie del consiglio ma come si usa la classe Matcher? Nelle API non vedo il costruttore e il metodo .find() non prende argomenti... come lo invoco?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.