Могу ли я запускать все скрипты Java на странице при просмотре веб-страниц с помощью Node.js? (т.е. имитировать реальный браузер?)
Я пытаюсь сделать некоторые веб-соскоб с помощью node.js. С помощью jsdom
легко загрузить DOM и внедрить в него JavaScript. Я хочу сделать еще один шаг: запустить весь JavaScript, связанный с веб-страницей, а затем проверить полученный DOM, включая визуальные свойства (высота, ширина и т. Д.) Элементов.
До сих пор я получаю NaN
когда я пытаюсь проверить размеры элементов DOM с помощью jsdom.
Это возможно?
Мне кажется, что есть две разные проблемы:
- Запуск всех JS на веб-странице
- Получение узла для имитации рендеринга окна / экрана в дополнение только к DOM
Еще один способ задать вопрос: возможно ли использовать node.js как полностью безголовый браузер, который вы можете написать?
Если это невозможно, у кого-нибудь есть предложения, какую библиотеку я могу использовать для этого? Я относительно языковая агностика.
2 ответа
Посмотрите на PhantomJS. Невероятно прост в использовании.
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/