В настоящее время существует довольно много установок, которые могут запускать Java -Script на веб-странице. Я думаю, что наиболее известным является, вероятно, Selenium
, так как я думаю, что это было какое-то время назад. Другие включают karate
, Puppeteer
и даже старый инструмент под названием Rhino
. Кукловод это гугл, в c. проект, который использует Java -Script (серверный Java -Script, называемый Node.js
. Они не любят, когда мы сравниваем контрастирующие библиотеки здесь.
У меня не было времени заниматься Selenium, пока, но я пишу HTML парсер, постоянно ищу и обновляю код. Если ваша единственная цель - загрузить страницу, содержимое которой динамически «заполняется AJAX вызовами» - и что я имею в виду, вам нужно только содержимое HTML, которое обычно отображается при посещении веб-страницы сайта, , и вас не интересуют нажатия кнопок , тогда как тот, который я использовал это называется Splash
Этот инструмент может позволить вам вызвать Java -Script, но если все, что вы хотите сделать, это увидеть JS на страница динамически загружает таблицу, затем, буквально, все, что вам нужно сделать, это запустить инструмент и добавить одну строку в вашу программу.
На Google Cloud Platform эти 2 строки начнут Spla sh Прокси-сервер . Если вы пишете Ваш код на AWS (Amazon) или Azure (Microsoft), скорее всего, будет похожим. Если вы выполняете свой код в офисе на локальном компьютере, вам придется изучить, как его запустить.
Установить Docker. Убедитесь, что установлена Docker версия> = 17.
Вытащите образ:
$ sudo docker pull scrapinghub/splash
Запустите контейнер:
$ sudo docker run -it -p 8050:8050 --rm scrapinghub/splash
Затем в Ваш код, все, что вам нужно сделать, это следующее:
// If your original code looked like this:
URL url = new URL("https://en.wikipedia.org/wiki/Christopher_Columbus");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
return new BufferedReader(new InputStreamReader(con.getInputStream()));
Измените первую строку кода в этом примере на эту, и (теоретически), и динамически загруженные таблицы HTML, которые заполняются с помощью События страницы onload
будут автоматически загружены перед возвратом страницы HTML.
// Add this line to your methods
String splashProxy = "http://localhost:8050/render.html?url=";
URL url = new URL(splashProxy + "https://en.wikipedia.org/wiki/Christopher_Columbus");
Для большинства веб-сайтов любые начальные таблицы, заполненные JS / jQuery / AJAX, будут заполнены. Если вы хотите изучить Lua Programming Language
, вы также можете начать вызывать там методы. Это было довольно удобно для моих целей, так как я не пишу код тестирования веб-страницы (код, имитирующий нажатия пользовательских кнопок). Если это то, что вы делаете, Selenium, вероятно, стоит потратить время на изучение / изучение API