Как я могу анализировать HTML-страницу в Android с результатами js? Основная проблема заключается в том, что если я просто использую метод Jsoup.connect(), объект Document не содержит результатов js, потому что js требуется некоторое время для запуска. Можно ли отложить подключение?
как анализировать содержимое веб-страницы в Android с помощью js с помощью jsoup
Ответы (1)
Как уже упоминалось в комментариях, JSOUP не запускает JavaScript. Для этого вам понадобится интерпретатор JavaScript.
Поскольку вы упомянули, что страница, которую вы хотите прочитать, требует некоторого времени для рендеринга, кажется очевидным, что вам действительно нужно запустить JavaScript для рендеринга DOM.
Однако, если вы посмотрите на исходный код страницы, вы сможете понять, как JavaScript на самом деле отображает страницу. Я вижу две возможности:
1) JavaScript действительно просто запускается для динамического отображения страницы с информацией, которая уже загружена при начальном доступе. Это часто происходит с современными веб-сайтами, которые могут отправлять все необходимые данные при первом доступе (он же изоморфный рендеринг). Здесь вы можете получить необходимую информацию для данных, которые обычно доступны на веб-сайте в виде объектов JSON. Вы можете извлечь JSON, а затем проанализировать его с помощью парсера JSON.
2) JavaScript фактически загружает некоторые данные асинхронно. В этом случае вы можете идентифицировать эти http-запросы и использовать JSOUP для получения этих данных. Обычно такие данные представлены в формате JSON, поэтому и в этом случае может иметь смысл использовать анализатор JSON для считывания соответствующих частей.
Jsoup
не выполняет JavaScript, ожидание готовности DOM не является проблемой. Вам придется использовать что-то с движком JavaScript, например Selenium или PhantomJS. - person Titus   schedule 09.01.2018Jsoup
которого нет. - person Titus   schedule 09.01.2018