Могу ли я запускать все скрипты Java на странице при просмотре веб-страниц с помощью Node.js? (т.е. имитировать реальный браузер?)

Я пытаюсь сделать некоторые веб-соскоб с помощью node.js. С помощью jsdomлегко загрузить DOM и внедрить в него JavaScript. Я хочу сделать еще один шаг: запустить весь JavaScript, связанный с веб-страницей, а затем проверить полученный DOM, включая визуальные свойства (высота, ширина и т. Д.) Элементов.

До сих пор я получаю NaN когда я пытаюсь проверить размеры элементов DOM с помощью jsdom.

Это возможно?

Мне кажется, что есть две разные проблемы:

  1. Запуск всех JS на веб-странице
  2. Получение узла для имитации рендеринга окна / экрана в дополнение только к DOM

Еще один способ задать вопрос: возможно ли использовать node.js как полностью безголовый браузер, который вы можете написать?

Если это невозможно, у кого-нибудь есть предложения, какую библиотеку я могу использовать для этого? Я относительно языковая агностика.

2 ответа

Посмотрите на PhantomJS. Невероятно прост в использовании.

http://www.phantomjs.org/

PhantomJS - это инструмент командной строки, который упаковывает и встраивает WebKit. Буквально он действует как любой другой веб-браузер на основе WebKit, за исключением того, что на экран ничего не выводится (таким образом, термин безголовый). В дополнение к этому, PhantomJS можно контролировать или создавать сценарии с помощью JavaScript API.

Ты можешь использовать:

  • htmlunit (Java, Jython)
  • PyQtWebKit или pygtk + webkit (python)
  • WWW:: Mechanize:: Firefox, чтобы соскрести с Firefox (Perl)
  • Win32-IEA автоматическая очистка от MS Internet Explorer (perl)

Все эти решения могут работать и на JavaScript.

Вы найдете много примеров кода прямо из поиска http://stackru.com/

Другие вопросы по тегам