@askalidov

Как парсить данные с localhost:8080, используя Jsoup?

Имеется ли вообще такая возможность?
У меня есть 10 контейнеров с class="card", вот код:
try {
      Document doc = Jsoup.connect("http://localhost:8080/configurator").get();
      Elements cards = doc.getElementsByAttributeValue("class", "card");
      System.out.println(cards.size());
} catch (IOException ex) {
    ex.printStackTrace();
}

По моей логике, должно выводить в консоль 10, но выводит 0. Соответственно, закрадываются подозрения, что код не особо работает :(
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Я посмотрел на исходный код проекта и все стало на свои места.
Во-первых, этот проект использует Vaadin. К сожалению, мне не доводилось использовать его, но я могу сказать следующее:
Контент страницы формируется динамически на клиенте. JSoup не умеет работать с динамически формируемым контентом и потому, на момент парсинга документа там лишь:
<div id="outlet"></div>
Соответственно, чтобы спарсить динамический контент вам нужно:
1) либо изучить внутренний АПИ и спарсить json, который возвращается извне. Зайдите во вкладку Network (Сеть) браузера и отфильтруйте XHR запросы и гляньте, на какой эндпоинт выполняется запрос и что возвращается в ответ.
2) либо спарсить сайт при помощи Selenium. (запустить браузер, дождаться загрузки страницы, получить документ, получить List<WebElement>)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы