Существуют ли инструменты командной строки или библиотеки для отображения веб-страниц, использующих JavaScript? - PullRequest
18 голосов
/ 07 апреля 2009

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

Мне кажется, что с таким количеством выпущенных макетов с открытым исходным кодом и рендерингами JavaScript (например, WebKit , Gecko и Chromium + V8 ) что кто-то должен был создать инструмент для загрузки страницы и рендеринга ее JavaScript без необходимости запуска реального браузера. Тем не менее, я не показываю то, что я ищу в своих поисках - я нашел такие инструменты, как Selenium-rc , но они зависят от работающего браузера. Меня интересует любой инструмент или библиотека, которые могут выполнять одно (или оба) из следующего:

  1. Программа, которая может быть запущена из командной строки (* nix), которая, учитывая источник страницы, возвращает исходный код страницы в том виде, в каком он был обработан каким-либо механизмом JS.

  2. Интегрированная поддержка на определенном языке, которая позволяет (легко) передавать на него исходный код страницы и возвращает исходный код страницы в том виде, в каком он был предоставлен некоторым механизмом JS.

Я думаю, что # 1 предпочтительнее в общем смысле, но # 2 было бы более полезно, если бы инструмент существовал на языке, на котором я хочу работать. Кроме того, меня не интересует конкретный движок JS - любой относительно современный один сделает. Что там?

Ответы [ 8 ]

4 голосов
/ 30 марта 2011

Web Kit HTML в PDF отлично работает, он даже может производить JPG

http://wkhtmltopdf.googlecode.com

2 голосов
/ 07 апреля 2009

Ну, есть инструмент DumpRenderTree , который используется как часть тестовых наборов WebKit. Я не уверен, насколько он подходит для превращения в автономный инструмент, но он делает то, что вы просите (рендеринг HTML, запуск JavaScript и выгрузка его дерева рендеринга на диск).

2 голосов
/ 08 апреля 2009

Поскольку JavaScript может выполнять довольно много манипуляций с объектной моделью документа (DOM) веб-страницы, похоже, что для точной очистки содержимого произвольной страницы вам потребуется не только запустить движок JavaScript, вы ' Мне также нужно полное и точное DOM представление страницы. Это то, что вы получите, только если у вас есть настоящий движок браузера. Для этого можно использовать встроенный, не отображаемый движок WebKit или Gecko, а затем после подходящей задержки загрузки, чтобы разрешить выполнение скрипта, просто выгрузить содержимое DOM в форме HTML.

2 голосов
/ 07 апреля 2009

Вы можете посмотреть на HTMLUnit . Его основная цель - автоматическое веб-тестирование, но я думаю, что оно может позволить вам получить обработанную страницу.

1 голос
/ 08 апреля 2009

Я думаю, что есть пример кода для Qt, который использует включенный WebKit для рендеринга страницы в растровое изображение. оттуда до полной утилиты CLI просто определяет ваши потребности.

конечно, для большинства задач по соскобу экрана вам нужен текст, а не растровое изображение ... если это то, что вам нужно, лучше проверьте Rhino

1 голос
/ 07 апреля 2009

Мы использовали Rhino некоторое время назад, чтобы провести некоторое автоматическое тестирование с Java. Кажется, он сделает всю работу за вас:

0 голосов
/ 08 апреля 2009

Очень мало кода, чтобы WebView отображал страницу без отображения чего-либо, но это должно быть приложение с графическим интерфейсом. Они также могут принимать аргументы командной строки и скрывать окно. Использование WebKit напрямую возможно в инструменте.

Помимо сложного доступа к DOM в Objective-C WebKit может также внедрять JavaScript, а также вместе с jQuery, что делает отличное решение для очистки. Я не знаю ни одного универсального приложения, делающего это, хотя.

0 голосов
/ 07 апреля 2009

Существует Cobra Engine для Java (http://lobobrowser.org/cobra.jsp),, который обрабатывает Javascript (он также имеет средство визуализации, но это необязательно). Я никогда не использовал его, но слышал, что об этом говорили хорошие слова.

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