Как программно получить доступ к веб-странице в java

17

Существует веб-страница, из которой я хочу получить определенную строку. Для этого мне нужно войти в систему, нажать несколько кнопок, заполнить текстовое поле, нажать другую кнопку - и затем появится строка.

Как я могу написать программу Java, чтобы сделать это автоматически? Есть ли полезные библиотеки для этой цели?

Спасибо

    
задан duduamar 23.08.2010 в 19:04
источник
  • Обычно скрипинг экрана работает менее эффективно, чем использование официальных API. На каком сайте вы пытаетесь получить доступ? –  Thorbjørn Ravn Andersen 23.08.2010 в 19:17
  • Я не верю, что у этого сайта есть официальный API, но я также проверю этот вариант. –  duduamar 23.08.2010 в 19:23

5 ответов

25

Попробуйте HtmlUnit

  

HtmlUnit - это «браузер GUI-Less для   Java-программы ". Он моделирует 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();
}

Подробнее: Ссылка

    
ответ дан YoK 23.08.2010 в 19:10
  • Этот звук именно то, что я искал. Я проверю это, спасибо! –  duduamar 23.08.2010 в 19:24
  • Он также довольно медленный и действительно либеральный с предупреждающими сообщениями. –  SuperJedi224 16.11.2015 в 13:26
  • УДИВИТЕЛЬНО! При таком подходе я смог сделать приложение Java, которое обращается к веб-сайту моей банковской компании, регистрируется с моими учетными данными и управляет путем вывода на консоль Java моего баланса и движений банковского счета, все это полностью автоматическим способом ! –  user3289695 10.05.2016 в 17:02
2

Самый простой способ сделать это - использовать HtmlUnit здесь:

Ссылка

и то, что вы хотите сделать, может быть таким же простым, как:

@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());
}
    
ответ дан Jon 23.08.2010 в 19:11
1

Взгляните на проект apache HttpClient или если вам нужно запустить Javascript на на странице, попробуйте HttpUnit .

    
ответ дан Mike C 23.08.2010 в 19:11
0

Хорошо, когда вы нажимаете кнопку обычно , вы выполняете запрос через метод HTTP POST, поэтому вы должны использовать HttpClient для обработки запроса и HtmlParser для обработки страницы ответов с нужной строкой.

    
ответ дан dierre 23.08.2010 в 19:10
0

Да:

ответ дан Bozho 23.08.2010 в 19:10