2010-08-23 15 views
17

Es gibt eine Webseite, von der ich eine bestimmte Zeichenfolge abrufen möchte. Um dies zu tun, muss ich mich anmelden, auf einige Schaltflächen klicken, ein Textfeld ausfüllen, auf eine andere Schaltfläche klicken - und dann erscheint die Zeichenfolge.Programmgesteuert auf die Webseite in Java zugreifen

Wie kann ich ein Java-Programm schreiben, um das automatisch zu tun? Gibt es zu diesem Zweck nützliche Bibliotheken? Nun

Dank

+0

gut Normalerweise Schaben Arbeiten weniger Bildschirm als mit offiziellen APIs. Auf welche Site möchten Sie zugreifen? –

+0

Ich glaube nicht, dass diese Seite eine offizielle API hat, aber ich werde diese Option auch prüfen. – duduamar

Antwort

25

HtmlUnit

Htmlunit ein "GUI-Less-Browser für Java-Programme" ist. Es modelliert HTML Dokumente und bietet eine API, können Sie Seiten aufrufen, füllen Sie Formulare, klicken Sie auf Links, etc ... genau wie Sie in Ihrem "normalen" Browser tun.

Beispielcode für submiting Form:

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

Für weitere Informationen überprüfen: http://htmlunit.sourceforge.net/gettingStarted.html

+0

Das klingt genau das, wonach ich gesucht habe. Ich überprüfe es, danke! – duduamar

+0

Es ist auch ziemlich langsam und wirklich liberal mit Warnmeldungen. – SuperJedi224

+0

FANTASTISCH! Mit diesem Ansatz konnte ich eine Java-Anwendung erstellen, die auf die Website meiner Bankgesellschaft zugreift, mich mit meinen Zugangsdaten anmeldet und es verwaltet, indem ich auf der Java-Konsole meinen Kontostand und meine Bewegungen vollautomatisch ausgibt ! – user3289695

0

, wenn Sie eine Taste drücken in der Regel Sie eine Anfrage über eine HTTP-POST-Methode zu tun, so sollten Sie HttpClient Anfrage bearbeiten verwenden und HtmlParser die Antwortseite mit der Zeichenfolge behandeln Sie benötigen.

1

Werfen Sie einen Blick in das Apache HttpClient Projekt, oder wenn Sie müssen Javascript auf der Seite ausführen können, versuchen HttpUnit.

2

Die Super-einfache Möglichkeit, dies zu tun, ist mit Htmlunit hier:

http://htmlunit.sourceforge.net/

und was wollen Sie so einfach tun sein können, wie:

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