Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    5

    "Simulare" selezioni di un utente su una pagina Web

    Ciao a tutti!

    Sto lavorando sull'ottenimento del codice HTML di questa pagina Web: http://www.studenti.ict.uniba.it/ess...elliOfferta.do

    Ho scritto del codice mediante cui riesco ad ottenerlo correttamente:

    codice:
    try{      URL url= new URL("http://www.studenti.ict.uniba.it/esse3/ListaAppelliOfferta.do");
          URLConnection urlConn = url.openConnection();
          BufferedReader dis= new BufferedReader(new InputStreamReader((url.openStream())));
          String s="";
          while (( s=dis.readLine())!= null) {
          System.out.println(s);
          }
          dis.close();
          }catch (MalformedURLException mue) {} catch(IOException ioe){}

    Il mio obiettivo è ottenere il codice HTML dei dati che si possono visualizzare selezionando "[1020] Dipartimento di Informatica" nel menu a tendina Facoltà e "[1102] Informatica e Tecnologie per la produzione del Software" nel menu a tendina Corso di Studi, e infine cliccando su "Avvia Ricerca".

    Questo click eseguirà una ricerca e quindi restituirà in tabella i dati che mi interessano.

    Il problema è che la URL della pagina rimane la stessa anche dopo la selezione dei campi e la ricerca, quindi quando la uso con il codice che ho scritto, ottengo sempre e solo il codice html PRIMA che venga effettuata la ricerca, quindi senza la tabella con le info di cui ho bisogno.

    Mi servirebbe quindi capire come "simulare" la selezione di quei due campi e quindi il click per avviare la ricerca, così possa ottenere l'html della pagina DOPO la ricerca, contenente quindi anche i dati della tabella che mi servono.

    Spero qualcuno possa darmi qualche dritta

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da claw Visualizza il messaggio
    Il problema è che la URL della pagina rimane la stessa anche dopo la selezione dei campi e la ricerca, quindi quando la uso con il codice che ho scritto, ottengo sempre e solo il codice html PRIMA che venga effettuata la ricerca
    L' URL rimane lo stesso, perché l'unico form presente (quello con quei 5 campi) al submit fa un POST allo stesso URL.
    Analizza bene la pagina, magari con un browser con appositi developer tool (es. Firefox con estensione Firebug).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    5
    Quindi secondo te c'è modo di ottenere quello che cerco?

    In pratica poi sul codice HTML della tabella emessa come output del submit dovrò usare XPath per estrarne le informazioni contenute e salvarle in un file csv (Excel, insomma).

    Secondo te,visto il fine, quale approccio per ottenere il sorgente della tabella sarebbe il più appropriato?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da claw Visualizza il messaggio
    Quindi secondo te c'è modo di ottenere quello che cerco?
    Certo ... basta fare un POST al URL, invece che un GET. Devi solo verificare se è necessario tenere "su" la sessione e se ci sono cookie che devono essere presi dalla prima richiesta in GET e passati poi al/i POST successivi (se c'è da tenere la sessione, tipicamente sì, c'è almeno 1 cookie a meno di volerlo ignorare e poter passare il session id nel url).

    Ripeto che tutto questo lo "scopri" analizzando la pagina e guardando header/body del flusso di request/response con tools appositi nel browser.

    E comunque se ci sono questioni di sessione e/o cookie, usare URL/URLConnection non è il massimo della praticità. Meglio usare librerie apposite di HTTP "client" (es. la Apache HttpClient).

    Quote Originariamente inviata da claw Visualizza il messaggio
    In pratica poi sul codice HTML della tabella emessa come output del submit dovrò usare XPath per estrarne le informazioni contenute e salvarle in un file csv (Excel, insomma).

    Secondo te,visto il fine, quale approccio per ottenere il sorgente della tabella sarebbe il più appropriato?
    XPath è di norma per XML. Quella pagina non è XML e nemmeno XHTML. Quindi o vai con le "regular expression" oppure usi librerie apposite di parsing HTML (es. jsoup, cercalo in rete).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    5
    Visto che il "core" del mio programma in Java è focalizzato sull'estrazione dei dati della tabella in output piuttosto che il resto, per il momento mettiamo da parte questo passaggio.

    Ho eseguito manualmente le selezioni e fatto restituire la tabella dal browser, poi ne ho preso il codice HTML salvato nel relativo file.

    Per estrarre i dati mi sembra che questo JSoup che mi hai suggerito possa andar bene.

    Vedo quello che riesco a fare e ti faccio sapere.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    5
    Allora andbin, grazie a JSoup e al codice che sto scrivendo, sto riuscendo poco a poco ad eseguire lo scraping dei dati contenuti nella tabella degli esami.

    Ora sto adattando il mio codice affinché possa trattare tutte le possibili configurazioni di dati che possono essere contenute nella tabella (ad esempio, alcuni esami hanno un solo docente, altri due, tre o addirittura quattro) e generare correttamente il file excel.

    Il passo finale sarà quindi scrivere qualcosa che mi consenta di scaricare il codice html della pagina che si ottiene dopo aver selezionato la facoltà (necessariamente [1012] Dipartimento di Informatica), il corso di studi (ad esempio [197] Informatica) e quindi cliccato su "Avvia Ricerca".

    Purtroppo però riguardo a POST/GET brancolo nel buio e un qualsiasi modo per ottenere quello che mi serve va bene... cosa mi consigli di fare? Qualcosa di più semplice possibile, io non so nemmeno dove cominciare!

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    5
    Ciao!

    Ho finalmente finito con la scrittura del codice per eseguire lo scraping dei dati dalla tabella e, anche se è stato davvero faticoso, alla fine funziona perfettamente con qualunque corso di studi io scelga della facoltà di Informatica (ce ne sono circa una dozzina come puoi vedere).

    Ora bisogna trovare il modo di copiare in un il file il codice HTML della pagina Web che contiene la tabella con Java.

    Finora ovviamente eseguivo io manualmente questa procedura dal browser, e davo in input il file col codice HTML al mio programma Java in grado di eseguire lo scraping.

    Mi aiuteresti almeno a capire come fare almeno la prima selezione (quella della facoltà)? Poi per le altre due cerco di continuare da solo...non sono molto ferrato in materia, 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 © 2024 vBulletin Solutions, Inc. All rights reserved.