Здравствуйте! Я хочу сохранить текстовое содержимое более 2000 страниц с одного сайта. Я использую следующий код: <pre><code class="java">Document doc = Jsoup.connect(url) .userAgent("Chrome/4.0.249.0 Safari/532.5") .referrer("http://www.google.com") .get();</code></pre> Однако в консоли у меня появляется вывод следующего содержания: <pre><code class="html"><html> <head></head> <body> <script type="text/javascript" src="/aes.js"></script> <script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("35d494c9c55d6ba8cb9663293117cf00");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://wepesstats.rf.gd/pes3.php?i=1";</script> <noscript> This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support </noscript> </body> </html></code></pre> Можете подсказать, как можно решить эту задачу, возможно, используя JavaScript или другой подход?
Судя по предоставленному коду и сообщению об ошибке, сайт, с которого вы пытаетесь получить данные, использует JavaScript для динамической загрузки содержимого страницы. Это означает, что при простом HTTP-запросе с помощью `Jsoup` или другой библиотеки вы загружаете только первоначальный HTML, который не содержит нужного контента. ### Возможные решения: 1. **Использование Selenium**: Selenium — это инструмент для автоматизации браузеров. Он может эмулировать действия пользователя и поддерживает JavaScript. Пример кода на Java для использования Selenium: ```java import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class WebScraper { public static void main(String[] args) { // Укажите путь к chromedriver System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); try { driver.get("http://example.com"); // Получаем HTML-код страницы String pageSource = driver.getPageSource(); // Выводим HTML-код в консоль или сохраняем его System.out.println(pageSource); } finally { driver.quit(); } } } ``` Не забудьте [скачать ChromeDriver](https://chromedriver.chromium.org/downloads) соответствующей версии вашего браузера и указать правильный путь к нему. 2. **Использование библиотеки `HtmlUnit`**: HtmlUnit — это библиотека Java, которая позволяет обрабатывать JavaScript. Вот простой пример: ```java import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class WebScraper { public static void main(String[] args) { try (final WebClient webClient = new WebClient()) { webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); // Отключаем обработку CSS для ускорения // Загружаем страницу HtmlPage page = webClient.getPage("http://example.com"); // Ждем завершения выполнения JavaScript webClient.waitForBackgroundJavaScript(10000); // Получаем HTML-код страницы String pageXml = page.asXml(); // Выводим HTML-код в консоль System.out.println(pageXml); } catch (Exception e) { e.printStackTrace(); } } } ``` 3. **API запросы**: Если сайт предоставляет API для получения данных, это будет лучшим вариантом, так как данные будут получены в структурированном виде (например, в формате JSON). 4. **Обработка HTTP запросов**: Если JavaScript генерирует данные через API запросы, вы можете использовать такие инструменты как `Fiddler` или `Chrome DevTools` для отслеживания сетевых запросов и анализа, какое API используется. Затем можно использовать `Jsoup` или `HttpClient` для выполнения аналогичных запросов к этому API. Попробуйте эти подходы и выберите тот, который лучше всего подходит для вашего сценария.
Простой путь - через селениум.
Сложный - курить их защиту от автоматических запросов.
Вот посмотри как тут пишут https://www.geeksforgeeks.org/selenium-with-java-t...