Как получить JSON из глобальной переменной JS на Java?
Мне требуется экспортировать данные с сайта, к исходном коду сайта или к базе данных доступа нет. Нужные данные в формате JSON хранятся в глобальной переменной, к которой можно обратиться при помощи консоли браузера с помощью команды window.__timetableData. Можно ли каким то образом вызывать эту команду по URL сайта при помощи Java? Слышал, что с таким может помочь Selenium Web Driver, но он довольно обширный, поэтому не знаю, что именно мне нужно.
Ответы (1 шт):
Всё оказалось проще, чем я думал. Глобальная переменная 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