Pregunta

Quiero tener acceso a formularios de las páginas HTML throught lenguaje de programación Java sin la participación de navegador real en el medio.

En la actualidad lo estoy haciendo a través HTML UNIDAD pero se necesita un poco más de tiempo para cargar una página . Cuando se trata de acceder a millones de página, este tiempo extra más importa.

¿Hay otros métodos para hacer esto?

¿Fue útil?

Solución

He utilizado algo similar llamado HttpUnit antes, pero no tengo ni idea de cómo se compara el rendimiento sabia .

Si usted tiene millones de páginas a procesar, recomendaría tirar algunos más hilos en ella. Sólo una suposición, pero creo que si se cambia la escala esto a múltiples hilos, que se quedará sin ancho de banda antes de ejecutar fuera de energía de la CPU (en cuyo caso no importa cuánto más rápido podría ser)

Otros consejos

Acceso a una página web usando un navegador, incluso HtmlUnit, va a ser lento. Un método mejor es la capa justo por debajo de la interfaz web , de modo que no es necesario para acceder a millones de páginas -. en lugar de probar lo suficiente como para asegurarse de que la interfaz web está utilizando la capa inferior correctamente

La mayor parte de la interacción en el navegador se reduce a un HTTP GET o HTTP POST. Es necesario averiguar exactamente la operación que necesita, y entonces se puede construir los datos de URL y / o forma. A continuación, puede usar algo como esto:

   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) { } 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top