Теги прячутся от парсинга java/jsoup

381
31 января 2017, 20:55

Привет народ.

Суть вопроса: парсю сайт с помощью Jsoup. Jsoup упорно отказывается видеть id таблицы, более того, она скрыта вся (в браузере вся структура документа видна).

Данные в таблице обновляются раз в минуту. Иду по второму сценарию сохраняю страницу локально на свой комп и все нормально все парсится, все работает. Что это и как можно обойти проблему?

Спасибо за внимание к вопросу.

Answer 1

С помощью Jsoup непосредственно не получится спарсить требуемую информацию с данной страницы, потому как она генерируется динамически, насколько я понимаю, при помощи PHP.

Однако решение таки есть:

Берем любой сниффер и смотрим, что происходит в процессе загрузки страницы. Для простоты можно использовать средство, встроенное в Google Chrome: нажимаем Ctrl + Shift + I, переходим во вкладку Network, перезагружаем страницу и ловим момент, в который загружается таблица. Во время загрузки таблицы во вкладке Network видим следующее:

Как видно из скриншота, таблица генерируется с помощью PHP. Далее берем URL и переходим по нему в браузере:

http://hrk.aero/table/ajax_tablo_new.php?lang=ru&full=1&first=1

И, о чудо, отображается требуемая таблица.

Далее используем полученный URL в Jsoup:

public class Main {
    public static void main(String[] args) throws IOException {
        Document page = Jsoup.connect("http://hrk.aero/table/ajax_tablo_new.php?lang=ru&full=1&first=1").get();
        System.out.println(page);
    }
}

И в консоли видим HTML-код требуемой таблицы:

Осталось лишь распарсить эту таблицу. Это, насколько я понимаю, Вы умеете.

READ ALSO
Отрисовка полигона с помощью JPanel

Отрисовка полигона с помощью JPanel

Нужно нарисовать полигон с кординнатамиПроблема в том что открываеться окно но не отрисовывается полигон

335
обновление значения Label на SplitPane

обновление значения Label на SplitPane

Есть некое JavaFx приложение со SplitPane на сценеНа SplitPane есть 2 Label'а

306
NullPoinerException в RecyclerView.Adapter

NullPoinerException в RecyclerView.Adapter

Необходимо в обработчике нажатия запустить новую активити, изменив view компонеты, которые хранит ее xml представление

334
Long cannot be cast to JSONObject

Long cannot be cast to JSONObject

ЗдравствуйтеХочу распарсить вот этот JSON файл

360