2010-08-23 18 views
17

Hay una página web desde la que quiero recuperar una determinada cadena. Para hacerlo, necesito iniciar sesión, hacer clic en algunos botones, completar un cuadro de texto, hacer clic en otro botón, y luego aparece la cadena.Cómo acceder mediante programación a la página web en Java

¿Cómo puedo escribir un programa java para hacerlo automáticamente? ¿Hay alguna biblioteca útil para ese propósito?

Gracias

+0

Por lo general, pantalla de trabajos de raspado menos bien que usando las API oficiales ¿A qué sitio intenta acceder? –

+0

No creo que este sitio tenga una API oficial, pero también verificará esa opción. – duduamar

Respuesta

25

Trate HtmlUnit

HtmlUnit es un "navegador GUI-Menos de programas Java". Modela documentos HTML y proporciona una API que le permite invocar páginas, completar formularios , hacer clic en enlaces, etc ... al igual que que hace en su navegador "normal".

Código de ejemplo para la forma de sometimiento:

@Test 
public void submittingForm() throws Exception { 
    final WebClient webClient = new WebClient(); 

    // Get the first page 
    final HtmlPage page1 = webClient.getPage("http://some_url"); 

    // Get the form that we are dealing with and within that form, 
    // find the submit button and the field that we want to change. 
    final HtmlForm form = page1.getFormByName("myform"); 

    final HtmlSubmitInput button = form.getInputByName("submitbutton"); 
    final HtmlTextInput textField = form.getInputByName("userid"); 

    // Change the value of the text field 
    textField.setValueAttribute("root"); 

    // Now submit the form by clicking the button and get back the second page. 
    final HtmlPage page2 = button.click(); 

    webClient.closeAllWindows(); 
} 

Para más detalles visita: http://htmlunit.sourceforge.net/gettingStarted.html

+0

Este sonido es exactamente lo que he estado buscando. Lo revisaré, gracias! – duduamar

+0

También es bastante lento y muy liberal con mensajes de advertencia. – SuperJedi224

+0

¡IMPRESIONANTE! Con este enfoque pude hacer una aplicación Java que accede al sitio web de mi empresa bancaria, inicia sesión con mis credenciales y gestiona para enviar a la consola Java el saldo y los movimientos de mi cuenta bancaria, todo eso de forma completamente automática. ! – user3289695

0

Bueno, cuando se pulsa un botón por lo general lo hace una solicitud a través de un método HTTP POST, por lo que debe utilizar para manejar HttpClient petición y HtmlParser para manejar la página de respuesta con la cadena que necesita.

1

Tome un vistazo al proyecto Apache HttpClient, o si necesita Javascript para funcionar en la página, pruebe HttpUnit.

2

La manera súper fácil de hacer esto es usar HtmlUnit aquí:

http://htmlunit.sourceforge.net/

y lo que quiere hacer puede ser tan simple como:

@Test 
public void homePage() throws Exception { 
    final WebClient webClient = new WebClient(); 
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 
    assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText()); 
} 
Cuestiones relacionadas