如何在java中以编程方式访问网页

2022-09-02 09:50:23

有一个网页,我想从中检索某个字符串。为此,我需要登录,单击一些按钮,填写文本框,单击另一个按钮 - 然后字符串出现。

我怎样才能编写一个java程序来自动做到这一点?是否有任何有用的库用于此目的?

谢谢


答案 1

试用 HtmlUnit

HtmlUnit是一个“用于Java程序的无GUI浏览器”。它对HTML文档进行建模,并提供一个API,允许您调用页面,填写表单,单击链接等...就像您在“普通”浏览器中所做的那样。

提交表单的示例代码:

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

有关更多详细信息,请查看: http://htmlunit.sourceforge.net/gettingStarted.html


答案 2

超级简单的方法是在这里使用HtmlUnit:

http://htmlunit.sourceforge.net/

你想做的事情可以很简单:

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

推荐