Получить обработанный HTML DOM на чистой Java - PullRequest
5 голосов
/ 31 января 2012

Я знаю, что здесь уже есть несколько похожих вопросов.Но я не хочу создавать браузер на Java, я только хочу, чтобы исходный код был полностью сгенерирован (или «обработан»).Как будто я смотрю на сгенерированный DOM в браузере.Кто-нибудь знает инструмент для этого?

Я посмотрел на Cobra и HtmlUnit , но, похоже, они не могут правильно отображать более сложные веб-сайты.Особенно, если есть вызовы AJAX, добавляющие контент на сайт после его загрузки.Мне действительно нужен инструмент, который делает то же самое, что и браузер, без фактического его отображения.Должен ли я в конце концов дистанционно управлять браузером?

Есть ли у кого-нибудь опыт с этим?

Очень похожий вопрос, но без каких-либо удовлетворительных ответов можно найти здесь .

Ответы [ 3 ]

1 голос
/ 31 января 2012

Я не верю, что существует библиотека, которая выполняет очистку асинхронных вызовов после загрузки страницы.

Моя рекомендация:

  1. Получить HTML-код страницы, используя Cobra или аналогичную библиотеку.
  2. Разобрать источник для запросов AJAX. (например, вызов ajax будет иметь параметр URL и строку JSON «data», которую вы можете использовать для запроса)
  3. Для каждого вызова AJAX сделайте еще один запрос к захваченному параметру URL.
  4. Добавьте результат каждого вызова AJAX к источнику вашего HTML-кода с исходной страницы.

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

Надеюсь, это поможет.

0 голосов
/ 26 апреля 2012

Я должен ответить на этот вопрос сам ... В конце концов, лучшее решение, которое я нашел, было HtmlUnit.Это слишком медленно для моих нужд.Поэтому я создал свой собственный инструмент, который, конечно, нуждается в ручной настройке для вызова необходимых ссылок.Но, таким образом, он не должен ждать каких-либо тайм-аутов js или тому подобное, но анализирует запрашиваемую информацию со страницы и выполняет желаемые вызовы.Это много ручной работы, но, похоже, нет другого решения, которое работает достаточно быстро.

0 голосов
/ 01 февраля 2012

Селен делает кое-что похожее на это. Вам необходимо установить пульт дистанционного управления Selen на вашем компьютере. Затем вы можете передать URL-запрос на селен. Selenium откроет браузер и отобразит html / dhtml страницу, указанную в URL. После этого вы можете получить весь дом, обратившись к селену. Вы можете сделать все это, кодируя

http://seleniumhq.org/ пожалуйста, обратите внимание: вам нужно установить либо slenium webdriver, либо пульт дистанционного управления selenium, а не selenium ide.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...