как анализировать содержимое веб-страницы в Android с помощью js с помощью jsoup

Как я могу анализировать HTML-страницу в Android с результатами js? Основная проблема заключается в том, что если я просто использую метод Jsoup.connect(), объект Document не содержит результатов js, потому что js требуется некоторое время для запуска. Можно ли отложить подключение?


person borune    schedule 09.01.2018    source источник
comment
Jsoup не выполняет JavaScript, ожидание готовности DOM не является проблемой. Вам придется использовать что-то с движком JavaScript, например Selenium или PhantomJS.   -  person Titus    schedule 09.01.2018
comment
это не лучшее решение я думаю. Вы предлагаете добавить такие огромные модули в мое приложение только для парсинга 1 страницы. Это очень неудобно.   -  person borune    schedule 09.01.2018
comment
Вам не обязательно использовать их. Я просто говорю, что вам нужно что-то с движком JavaScript, Jsoup которого нет.   -  person Titus    schedule 09.01.2018
comment
Я понимаю, но о чем вы говорили?   -  person borune    schedule 09.01.2018
comment
Я не уверен, вам придется понять это самостоятельно, я только что дал вам 2 примера, которые, как вы сказали, не подходят для того, что вы пытаетесь сделать.   -  person Titus    schedule 09.01.2018


Ответы (1)


Как уже упоминалось в комментариях, JSOUP не запускает JavaScript. Для этого вам понадобится интерпретатор JavaScript.

Поскольку вы упомянули, что страница, которую вы хотите прочитать, требует некоторого времени для рендеринга, кажется очевидным, что вам действительно нужно запустить JavaScript для рендеринга DOM.

Однако, если вы посмотрите на исходный код страницы, вы сможете понять, как JavaScript на самом деле отображает страницу. Я вижу две возможности:

1) JavaScript действительно просто запускается для динамического отображения страницы с информацией, которая уже загружена при начальном доступе. Это часто происходит с современными веб-сайтами, которые могут отправлять все необходимые данные при первом доступе (он же изоморфный рендеринг). Здесь вы можете получить необходимую информацию для данных, которые обычно доступны на веб-сайте в виде объектов JSON. Вы можете извлечь JSON, а затем проанализировать его с помощью парсера JSON.

2) JavaScript фактически загружает некоторые данные асинхронно. В этом случае вы можете идентифицировать эти http-запросы и использовать JSOUP для получения этих данных. Обычно такие данные представлены в формате JSON, поэтому и в этом случае может иметь смысл использовать анализатор JSON для считывания соответствующих частей.

person luksch    schedule 21.01.2018