Domanda

Voglio accedere ai moduli su pagine HTML throught linguaggio di programmazione Java senza coinvolgere vero browser in mezzo.

Al momento sto facendo attraverso HTML UNITA ma ci vuole un po 'più di tempo per caricare una pagina . Quando si tratta di accedere a milioni di pagina, quindi questa volta qualcosa in più che conta di più.

C'è qualche altri metodi per fare questo?

È stato utile?

Soluzione

Ho usato qualcosa di simile chiamato HttpUnit prima, ma non ho idea di come si confronta prestazioni saggio .

Se si dispone di milioni di pagine per elaborare, mi sento di raccomandare gettando alcuni più thread a questo. Solo una supposizione, ma credo che se si scala fino a questo thread multipli, sarà a corto di banda prima che si esaurisca di potenza della CPU (nel qual caso non importa quanto più veloce potrebbe essere)

Altri suggerimenti

Accesso a una pagina web utilizzando un browser, anche HtmlUnit, sta per essere lento. Un metodo migliore è lo strato appena sotto l'interfaccia web , in modo che non c'è bisogno di accedere a milioni di pagine -. invece si prova abbastanza per fare in modo che l'interfaccia web sta usando correttamente il livello inferiore

La maggior parte delle interazioni in del browser si riduce a un HTTP GET o un HTTP POST. È necessario capire esattamente l'operazione desiderata, e quindi è possibile costruire i dati URL e / o forma. Quindi è possibile utilizzare qualcosa di simile:

   try { 
    //Construct data 
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); 
    // Send data 
    URL url = new URL("http://hostname:80/cgi"); 
    URLConnection conn = url.openConnection(); conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line; while ((line = rd.readLine()) != null) { 

    // Process line... } 
    wr.close(); 
    rd.close(); 
    } catch (Exception e) { } 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top