2010-08-23 8 views
17

Il existe une page Web à partir de laquelle je veux récupérer une certaine chaîne. Pour ce faire, je dois me connecter, cliquer sur certains boutons, remplir une zone de texte, cliquer sur un autre bouton - et la chaîne apparaît.Comment faire pour accéder par programmation à la page Web dans Java

Comment puis-je écrire un programme Java pour le faire automatiquement? Y a-t-il des bibliothèques utiles à cette fin?

Merci

+0

écran des Habituellement œuvres raclant moins bien que en utilisant les API officielles. À quel site essayez-vous d'accéder? –

+0

Je ne crois pas que ce site ait une API officielle, mais je vais aussi vérifier cette option. – duduamar

Répondre

25

Essayez HtmlUnit

HtmlUnit est un "navigateur GUI-Less pour programmes Java". Il modélise des documents HTML et fournit une API que vous permet d'invoquer des pages, remplir formulaires, cliquer sur des liens, etc ... tout comme que vous faites dans votre navigateur "normal".

Exemple de code pour la forme submiting:

@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(); 
} 

Pour plus de détails, consultez: http://htmlunit.sourceforge.net/gettingStarted.html

+0

Cela sonne exactement ce que je cherchais. Je vais vérifier, merci! – duduamar

+0

C'est aussi plutôt lent et très libéral avec des messages d'avertissement. – SuperJedi224

+0

Génial! Avec cette approche, j'ai pu créer une application Java qui accède au site web de ma banque, me connecte avec mes identifiants et gère par la sortie sur la console Java le solde et les mouvements de mon compte bancaire, le tout de manière complètement automatique ! – user3289695

0

Eh bien, lorsque vous appuyez sur un bouton habituellement vous faites une demande par une méthode HTTP POST, vous devez donc utiliser HttpClient pour gérer la demande et HtmlParser pour gérer la page de réponse avec la chaîne dont vous avez besoin.

1

Jetez un coup d'oeil au projet apache HttpClient, ou si vous devez exécuter Javascript sur la page, essayez HttpUnit.

2

La façon super simple à faire est d'utiliser HtmlUnit ici:

http://htmlunit.sourceforge.net/

et ce que vous voulez faire peut être aussi simple que:

@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()); 
} 
Questions connexes