Как выполнить PhantomJS из PHP
Я хочу выполнить PhantomJS из PHP на localhost.
Может ли какой-нибудь орган объяснить, как выполнить PhantomJS с PHP и какой пакет я должен загрузить с phantomjs.org?
Ответы
Ответ 1
- загрузите PhantomJS binary, загрузите его где-нибудь и сделайте его исполняемым (
chmod +x
)
- если вы собираетесь делать скриншоты, настройте fontconfig (это довольно специфично для моей конфигурации, но цель состоит в том, чтобы имеют по крайней мере некоторые шрифты в вашей системе)
- выполните следующие действия в PHP:
$response = exec('/path/to/phantomjs myscript.js');
Ответ 2
На самом деле библиотека, называемая PHP PhantomJS, предназначена для того, чтобы сделать это проще для вас!
PHP PhantomJS - это гибкая библиотека PHP для загрузки страниц через PhantomJS без браузера и вернуть ответ страницы. Это удобно для тестирования веб-сайтов, требующих поддержки JavaScript, а также поддержки экрана.
Полная документация
Список функций:
- Загрузка веб-страниц через браузер без браузера PhantomJS
- Просмотр подробных данных ответа, включая содержимое страницы, заголовки, код состояния и т.д.
- Переадресация дескрипторов
- Просмотр ошибок консоли javascript
- Просмотр подробной отлаженной информации PhantomJS
- Сохранение снимков экрана на локальный диск
- Установить размер области просмотра
- Определить параметры захвата экрана x, y, ширины и высоты
- Отображение страницы задержки за определенное время
- Выполнить PhantomJS с параметрами командной строки
- Легко создавать и запускать собственные скрипты PhantomJS
Убедитесь, что ваша версия PhantomJS совместима с вашей версией PHP PhantomJS:
Обратите внимание: Версия 4.0 этой библиотеки в настоящее время нерешенная проблема с PhantomJS 2.0.
Ответ 3
Недавно я опубликовал проект, предоставляющий PHP доступ к браузеру. Получите его здесь: https://github.com/merlinthemagic/MTS. Под капотом он опирается на PhantomJS.
После загрузки и настройки вы просто используете следующий код:
$myUrl = "http://www.example.com";
$windowObj = \MTS\Factories::getDevices()->getLocalHost()->getBrowser('phantomjs')->getNewWindow($myUrl);
//now you can either retrive the DOM and parse it, like this:
$domData = $windowObj->getDom();
//or take screen shots
$imageData = $windowObj->screenshot();
//or use the mouse to click buttons:
$windowObj->mouseEventOnElement("[id=searchInput]", 'leftclick');
//or type with the keyboard :
$windowObj->sendKeyPresses("my search words");
//or load and execute custom javascript, fill forms etc, etc.