Невозможно найти некоторые элементы HTML, используя Jsoup - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь найти элементы, соответствующие кнопке «Применить» на этой странице (https://gwlabs.taleo.net/careersection/gw_ext_career_section/jobsearch.ftl) с помощью Jsoup. Я пытаюсь использовать Document.getElementsMatchingOwnText («Применить»), но он не возвращает элементы. I попытался перечислить все якорные элементы и напечатать их текст, я не смог увидеть элементы с текстом «Применить». Вывод был следующим

Текст привязки - Войти

Текст привязки - Поиск работы

Текст привязки - Моя страница вакансий

Текст якоря в порядке

Текст якоря в порядке

Текст привязки Отправить профиль друга

Текст привязки Просмотреть все вакансии

Текст привязки - Расширенный поиск

Текст привязки - Добавить организацию

Текст привязки - Добавить местоположение

Текст привязки - Добавить поле задания

Текст привязки - Отмена

Текст привязки - Добавить

Текст якоря в порядке

Текст привязки Ясный

Текст привязки Сохранить этот поиск

Текст привязки однострочный

Текст привязки Сохранить этот поиск

Текст привязки - Отмена

Текст привязки - Доступ к моим сохраненным поискам

Текст привязки подтвержден

Текст привязки - Отмена

Текст якоря в порядке

Текст якоря в порядке

Текст якоря в порядке

Текст привязки Вы также можете просмотреть все доступные вакансии.

Текст привязки - Приведи друга

Текст привязки предыдущий

Текст привязки следующий

Текст якоря в порядке

Тот же подход дал желаемые результаты для https://healthfirst.taleo.net/careersection/hf_ext_cs/jobsearch.ftl?lang=en Я понятия не имею, почему это так, может кто-нибудь взглянуть, пожалуйста

1 Ответ

2 голосов
/ 20 мая 2019

Данные, которые вы пытаетесь получить, не являются частью исходного html, но задаются JavaScript после загрузки страницы. Вы можете проверить это, отключив JavaScript в вашем браузере. Jsoup получает только статический HTML, не выполняет код JavaScript.

Jsoup в настоящее время не поддерживает JavaScript, что означает, что страницы, на которых данные загружаются с помощью JavaScript, не будут доступны при разборе с использованием Jsoup.

Если вы хотите получить такие динамически загружаемые данные, вы можете:

-Используйте альтернативу, такую ​​как HtmlUnit, Selenium WebDriver или ui4j.

-Используйте API веб-сайта, если он предлагает,

- Чтобы узнать, откуда веб-сайт загружает свои данные, обычно все, что вам нужно сделать, это отправить куда-нибудь HTTP-запрос, чтобы получить данные в формате JSON.

Более подробную информацию можно найти здесь: https://stackoverflow.com/tags/jsoup/info

или вы можете использовать подсказки из этого ответа: https://stackoverflow.com/a/50831894

...