Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [JAVA]Estrazione dati Pagina web con login

    Salve a tutti.

    Sto cercando di ampliare le mie conoscenze base su java datemi dal corso (approssimativo direi -.-) fatto all'università. In particolare mi sto cimentando nella realizzazione di un gestore per il mio fantacalcio. Dal momento che i programmatori(o aspiranti tali) han fama di eser pigri, la mia idea è di prendere i voti di ogni giocatore in automatico da una pagina web e di fare i vari calcoli in base a questi voti. Ora, il sito a cui mi andrei ad appoggiare è Fantaclub, sul quale i voti sono disponibili solo dopo aver effettuato il login. A me basterebbe avere la pagina web completa downloadata su un file, per esempio.

    Non ho la più pallida idea da dove iniziare

    Ho dato un'occhiata sul web e ho trovato le librerie jSoup, ma non riesco a capire come usarle per leggere una pagina che necessita per forza di cose del login.

    Qualcuno è in grado di darmi qualche dritta per iniziare? Grazie in anticipo per l'attenzione

    Francesco

  2. #2
    Proprio nessuno in grado di darmi qualche dritta?

  3. #3
    ciao
    allora prova con qualke httpurlconnection in primis alla pagina dei voti e vedi il server cosa ti risponde (dovrebbe risponderti con una pagina html di errore in cui ti invita a loggarti), bene.

    Allora effettua una chiamata tramite programma java (standalone, o web, batch come ti pare insomma) sempre con una urlconnection e stavolta gli passi in post i parametri utente e password, ovvio che devi sapere gli id dei campi e l'url della submit della pagina di login :-).
    effettuato il login direi che hai aperto una sessione sul server non ti resta altro che richiamare la tua paginetta di voti e scaricarti il tutto (apt-get docet).

    ciao
    SCJP 96%

    Sono io signore che non ti perdono,io non merito punizioni, io sono potentissimo e ora che ho visto il tuo volto merito di stare in un cielo alto più alto del tuo perché non capendo chi è l’uomo hai dimostrato di essermi inferiore,tu servirai me. Da oggi mi chiamerò Satan che significa l’Avversario.

  4. #4
    Innanzitutto, grazie mille della risposta

    Per quanto riguarda la httpurlconnection ho afferrato il concetto. In sostanza creo un'istanza httpurlconnection passandogli come parametro l'url della pagina dei voti.

    Ciò che mi lascia un pò confuso è il passaggio che descrivi nel secondo paragrafo del post: cosa intendi per effettuare chiamata a programma java? parli di apt-get, ma apt-get non è il gestore applicazioni di ubuntu? O mi sbaglio io?

    Mi sento niubbissimo


    grazie un sacco per l'interesse!

  5. #5
    sorry facevo un'associazione. resetta l'apt-get.
    effettuare una chiamata tramite programma java, utilizzando le api di java; fai una httpurlconnection specificando che la richiesta è in post e come url devi dargli l'url del submit che il bottone login invoca passandogli come parametri l'utente e la password.
    schematizzo

    1 - devo sapere a quale indirizzo inviare i dati di login.
    2 - devo sapere come si chiamano i campi di input da valorizzare ed inviare al server fanta....

    3
    codice:
        
    try     {       
    URL url = new URL( "http://serverfantacalcio/paginaloginsubmit" );         
    HttpURLConnection hConnection = (HttpURLConnection)                              
    url.openConnection();      
    HttpURLConnection.setFollowRedirects( true );         
    hConnection.setDoOutput( true );       
    hConnection.setRequestMethod("POST");	        
    PrintStream ps = new PrintStream( hConnection.getOutputStream() );      
    ps.print("NOMECAMPOUTENTE=abcd&NOMECAMPOPASSWORD=10341");       
    ps.close();         
    hConnection.connect();        
     if( HttpURLConnection.HTTP_OK == hConnection.getResponseCode() )       {     
    //stampo la risposta su un file html, tanto per vedere che succede.
    // NEL TUO CASO DOVRESTI NUOVAMENTE FARE UN HTTPURLCONNECTION
    //STAVOLTA ALLA PAGINA DEI VOTI
        InputStream is = hConnection.getInputStream();        
    OutputStream os = new FileOutputStream("output.html");        
     int data;         
    while((data=is.read()) != -1)         {           
    os.write(data);         }         
    is.close();         
    os.close();         
    hConnection.disconnect();       
    }     
    }     catch(Exception ex)     
    {       ex.printStackTrace();     }
    4 spero di non aver dimenticato niente , scusa la formattazione
    SCJP 96%

    Sono io signore che non ti perdono,io non merito punizioni, io sono potentissimo e ora che ho visto il tuo volto merito di stare in un cielo alto più alto del tuo perché non capendo chi è l’uomo hai dimostrato di essermi inferiore,tu servirai me. Da oggi mi chiamerò Satan che significa l’Avversario.

  6. #6
    Grazie un casino per l'aiuto.

    Allora, se ho inteso bene, devo fare un post sui form user e password, giusto?
    qui:
    codice:
    ps.print("NOMECAMPOUTENTE=abcd&NOMECAMPOPASSWORD=10341");
    devo mettere l'id dei due tag <input> rispettivamente al posto di NOMECAMPOUTENTE e NOMECAMPOPASSWORD, con relativo user e psswd. E' corretto?

    dando un'occhiata al sorgente della pagina pare che il bottone di login punti all'indirzzo relativo /servlet/community. Ho provato a inserire queste info nel codice che mi hai proposto

    codice:
    import java.io.*;
    import java.net.*;
     
    class urltest{
            public static void main(String[] args){
                    try     {       
    URL url = new URL( "http://www.fantaclub.it/servlet/community" );         
    HttpURLConnection hConnection = (HttpURLConnection)                              
    url.openConnection();      
    HttpURLConnection.setFollowRedirects( true );         
    hConnection.setDoOutput( true );       
    hConnection.setRequestMethod("POST");           
    PrintStream ps = new PrintStream( hConnection.getOutputStream() );      
    ps.print("nick=Paolez&pwdutente=XXXX");       
    ps.close();         
    hConnection.connect();        
     if( HttpURLConnection.HTTP_OK == hConnection.getResponseCode() )       {     
    //stampo la risposta su un file html, tanto per vedere che succede.
    // NEL TUO CASO DOVRESTI NUOVAMENTE FARE UN HTTPURLCONNECTION
    //STAVOLTA ALLA PAGINA DEI VOTI
        InputStream is = hConnection.getInputStream();        
    OutputStream os = new FileOutputStream("output.html");        
     int data;         
    while((data=is.read()) != -1)         {           
    os.write(data);         }         
    is.close();         
    os.close();         
    hConnection.disconnect();       
    }     
    }     catch(Exception ex)     
    {       ex.printStackTrace();     }
     
            }
    }

    l'ho testato ma non funge. Ho usato ideone, un compilatore online, perchè sono in ufficio, quindi forse il problema dipende da quello, anche se dall'eccezione che sputa fuori non pare esser colpa di questo. La posto qui:

    java.security.AccessControlException: access denied (java.lang.RuntimePermission setFactory)
    at java.security.AccessControlContext.checkPermission (AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(Acc essController.java:546)
    at java.lang.SecurityManager.checkPermission(Security Manager.java:532)
    at java.lang.SecurityManager.checkSetFactory(Security Manager.java:1612)
    at java.net.HttpURLConnection.setFollowRedirects(Http URLConnection.java:249)
    at urltest.main(Main.java:10)

    pare che proprio mi dia accesso negato

    qualche idea? dove sbaglio?

  7. #7
    ciao in pratica non hai i permessi sufficienti per poter settare la proprietà della JVM
    setFollowRedirects(boolean sss)
    prova a utilizzare l'atro metodo
    setInstanceFollowRedirects
    SCJP 96%

    Sono io signore che non ti perdono,io non merito punizioni, io sono potentissimo e ora che ho visto il tuo volto merito di stare in un cielo alto più alto del tuo perché non capendo chi è l’uomo hai dimostrato di essermi inferiore,tu servirai me. Da oggi mi chiamerò Satan che significa l’Avversario.

  8. #8
    allora, ho provato a far la modifica che mi hai suggerito, ma continua a non fungere. Ti posto codice+errore.

    Ho dimenticato di precisare una cosa prima, più che errore, è un eccezione che vien sollevata credo, dal momento che la compilazione va a a buon fine...

    codice:
    import java.io.*;
    import java.net.*;
     
    class urltest{
            public static void main(String[] args){
                    try     {       
    URL url = new URL( "http://www.fantaclub.it/servlet/community" );         
    HttpURLConnection hConnection = (HttpURLConnection)                              
    url.openConnection();      
    hConnection.setInstanceFollowRedirects( true );         
    hConnection.setDoOutput( true );       
    hConnection.setRequestMethod("POST");           
    PrintStream ps = new PrintStream( hConnection.getOutputStream() );      
    ps.print("nick=Paolez&pwdutente=71598C");       
    ps.close();         
    hConnection.connect();        
     if( HttpURLConnection.HTTP_OK == hConnection.getResponseCode() )       {     
    //stampo la risposta su un file html, tanto per vedere che succede.
    // NEL TUO CASO DOVRESTI NUOVAMENTE FARE UN HTTPURLCONNECTION
    //STAVOLTA ALLA PAGINA DEI VOTI
        InputStream is = hConnection.getInputStream();        
    OutputStream os = new FileOutputStream("output.html");        
     int data;         
    while((data=is.read()) != -1)         {           
    os.write(data);         }         
    is.close();         
    os.close();         
    hConnection.disconnect();       
    }     
    }     catch(Exception ex)     
    {       ex.printStackTrace();     }
     
            }
    }
    report:
    codice:
    java.security.AccessControlException: access denied (java.net.SocketPermission www.fantaclub.it:80 connect,resolve)
    	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    	at java.security.AccessController.checkPermission(AccessController.java:546)
    	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    	at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
    	at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
    	at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
    	at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    	at sun.net.www.http.HttpClient.New(HttpClient.java:323)
    	at sun.net.http://www.protocol.http.HttpURLConn...tNewHttpClient(HttpURLConnection.java:860)
    	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
    	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
    	at sun.net.http://www.protocol.http.HttpURLConn...etOutputStream(HttpURLConnection.java:904)
    	at urltest.main(Main.java:13)
    mi sento un pò spaesato...

  9. #9
    scusa se non posso risponderti in modo preciso ma sono dietro proxy e non posso raggiungere quel sito..
    stasera faccio un pò di prove e ti dirò.
    SCJP 96%

    Sono io signore che non ti perdono,io non merito punizioni, io sono potentissimo e ora che ho visto il tuo volto merito di stare in un cielo alto più alto del tuo perché non capendo chi è l’uomo hai dimostrato di essermi inferiore,tu servirai me. Da oggi mi chiamerò Satan che significa l’Avversario.

  10. #10
    No problem, anzi grazie, anche io devo raffazzonarmi con sti mezzi di fortuna perchè sta intranet aziendale fa schifo e ovviamente installarmi l'SDK è fuori disussione

    il sito non è male, compila un sacco di linguaggi e per programmi con un output da "console" ti esegue l'output tranquillamente. Ovviamente non fa cose tipo jframe o scrivere su file, ma ci si può arrabattare...

    stasera provo anche io sul mio pc, anche se credo che il problema non sia il compilatore, così a naso. Ma non metto mano sul fuoco

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.