Как получить JSON из глобальной переменной JS на Java?

Мне требуется экспортировать данные с сайта, к исходном коду сайта или к базе данных доступа нет. Нужные данные в формате JSON хранятся в глобальной переменной, к которой можно обратиться при помощи консоли браузера с помощью команды window.__timetableData. Можно ли каким то образом вызывать эту команду по URL сайта при помощи Java? Слышал, что с таким может помочь Selenium Web Driver, но он довольно обширный, поэтому не знаю, что именно мне нужно.


Ответы (1 шт):

Автор решения: Ceramic Three

Всё оказалось проще, чем я думал. Глобальная переменная windows.__timetableData лежала в html документе странницы. При помощи библиотеки Jsoup я спарсил все теги <script> и нашёл нужный. Далее с помощью регулярных выражений вытащил нужный Json.

Elements scripts = document.getElementsByTag("script");
Element script = scripts.get(4);

if(script.data().contains("window._timetableData")) {
    Pattern pattern = Pattern.compile("(\\[[^;]*)");
    Matcher matcher = pattern.matcher(script.data());

    if (matcher.find()) {
        System.out.println(matcher.group(1));
    } else {
        System.err.println("No match found!");
    }
}

С решением очень помог ответ: https://stackoverflow.com/questions/47766187/how-to-fetch-variables-inside-script-entry-using-jsoup

→ Ссылка