Java - Как получить HTML-код из URL, включая его сгенерированный AJAX-код, используя Firebug или любую библиотеку Java - PullRequest
5 голосов
/ 02 февраля 2012

Мне нужно получить код из Интернета, который частично является «чистым HTML» и частично HTML, сгенерированным с помощью AJAX, Javascript.

Поскольку кажется, что самый простой способ получить его, это использовать Firebug, я подумал, что должен существовать какой-то способ использовать Firebug или какой-то его плагин, чтобы иметь возможность делать это из кода Java.

Проблема, с которой я столкнулся, заключается в том, что после поиска по многим сетям и порталам я ничего не нашел.

Кто-нибудь знает какой-то способ / какой-нибудь плагин ... который позволяет смешивать этот сгенерированный AJAX-код со статическим HTML, как это делает Firebug?

Спасибо и прошу прощения за мой английский.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Abhijeet вроде как на правильном пути, но я собираюсь потратить время, чтобы объяснить, как браузеры обрабатывают веб-страницы и помочь вам понять, почему ваш запрос такой сложный.

Предупреждение Это довольно грубо, и я выдумал некоторые детали для краткости и ясности

Браузер подключается к серверу и использует HTTP для получения запрошенной вами страницы.Когда эта страница загружена, браузер затем ищет любые дополнительные ресурсы, на которые есть ссылки на этой странице, и извлекает их.Затем он выполняет любой найденный JavaScript сверху вниз, включая любые сценарии, на которые ссылаются.Этот javascript может манипулировать страницей, но к этому моменту браузер не очень заботится об исходном исходном коде страницы, так как усвоил его как DOM или объектную модель документа.Javascript на самом деле просто манипулирует этим DOM, так как DOM - это просто древовидная структура, не выполняющая никаких манипуляций с исходным кодом.В результате firebug (или инспектор webkit) фактически не отображают исходный код, они отображают текущее состояние DOM.

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

Однако, еще не все потеряно.HTMLUnit (упомянутый другими) - это работающий безголовый браузер, написанный на Java, и как таковой вы можете интегрировать его в свою программу.На самом деле выполнение этого выходит за рамки этого ответа, но домашняя страница здесь , а документация API здесь .

2 голосов
/ 02 февраля 2012

Единственный способ, которым вы можете сделать это, это прослушать, что делаются все запросы GET / POST.Итак, запустите Firebug и посмотрите, что делается запрос GET / POST.

Затем вы можете использовать класс URLConnection , чтобы сделать это в коде Java.

Вы также можете попробовать использовать браузер без наушников, например htmlunit .

...