@XOM91K

Как правильно отпарсить веб-страницу через Jsoup?

public void methodAddDataTop3(TableView table) throws IOException {
        TableViewController tvController = new TableViewController();
        tvController.methodTableItemsClear(table);
        Document doc = Jsoup.connect("http://www.stoloto.ru/keno2/archive/").get();
        Elements newsHeadlines = doc.select("div.ashjf-0.dkbhVc");
            System.out.println(newsHeadlines.get(1).text());
    }

Всем привет!
Как отпарсить эту страницу? Другие страницы на этом сайте парсит нормально, но именно с этой проблема...
В идеале нужно извлечь 20 цифр тиража.
FxYpcgQ.png
Ошибка такая, ошибка намекает на то, что неправильный doc.select я указал, если я указываю на других страницах, допустим страница с лотереей топ-3, рапидо и т.д, то всё парсится нормально.
Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
  • Вопрос задан
  • 458 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Как и отметил коллега Сергей Горностаев контент данной страницы формируется динамически. Соответственно, jsoup не подойдет.
Вам необходимо выполнить GET запрос на урл REST сервиса и получить json, который потом необходимо будет распарсить.
Откройте консоль браузера и перейдите на вкладку "Сеть". В фильтрах выберите XHR и изучите запросы.
Увидете вот, такой урл:
https://www.stoloto.ru/p/api/mobile/api/v34/service/draws/archive?count=10&game=keno2

А в ответ прибегает json с веткой draws.

При помощи либы или онлайн сервиса json2pojo создайте pojo и используя (gson, DomParser или jackson) спарсите этот json.

jsoup тут не нужен.
Можно еще спарсить страницу при помощи selenium (управляя браузером), но как по мне это плохое решение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Запустите отладчик и посмотрите какие данные обрабатываются в момент возникновения ошибки. Вероятно, интересующие вас цифры формируются javascript'ом, а поэтому для JSoup их на странице нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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