Java Jsoup Отправка формы - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь выяснить, как отправить форму с помощью Jsoup. На веб-сайте Xfinity я пытаюсь ввести адрес и вернуться к полученной странице после нажатия на ссылку «Показать предложения» по URL-адресу ниже:

https://www.xfinity.com/learn/offers

Вот мой текущий код:

    public String getISP() throws IOException {
    Connection.Response addressFormResponse = Jsoup.connect("https://www.xfinity.com/learn/offers")
            .data("Address.SingleStreetAddress", address)
            .method(Connection.Method.POST)
            .execute();

    Document doc = addressFormResponse.parse();

    System.out.println(doc.title());
    System.out.println(doc.location());
    if (doc.location().contains("Active Address")) {
        return "Comcast XFinity";
    }
    return "Cannot find an ISP";
}

Текущий код возвращает только ту же самую веб-страницу, как мне вернуть полученную страницу?

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Я бы не согласился с ответом Даниила о том, что ни HTTP-клиент, ни crawler4j не поддерживают javascript, который требуется для этой страницы. Selenium, вероятно, лучшее решение.

Ниже приведен пример использования jsoup для извлечения страницы, заполнения формы и отправки ее. Результатом будет json, и вы передадите эту строку в gson или тому подобное. Я не сделал, чтобы страница была очень нестабильной только в обычном браузере, и иногда перехватывал ввод адреса, а иногда вызывал раздражение при этом же вводе.

Document doc = Jsoup.connect("https://www.xfinity.com/learn/offers").get();
FormElement form = (FormElement) doc.selectFirst("[data-form-dealfinder-localization]");
Element input = form.selectFirst("#Address_StreetAddress");
input.val("2000 YALE AVE E, SEATTLE, WA 98102");
String json = form.submit().ignoreContentType(true).execute().body();

System.out.println(json);
1 голос
/ 19 февраля 2020

Jsoup - это библиотека синтаксического анализатора HTML, которая предоставляет функции для извлечения и обработки данных на странице HTML. Если вам нужны сайты, отправляющие формы, щелкающие элементы, лучше использовать другие инструменты, такие как selenium , HTTP-клиент (которые часто используются для автоматического тестирования веб-приложений) или веб библиотеки искателей, такие как crawler4j .

...