Установка PhantomJS и CasperJS на Debian GNU\Linux

test
Собственно для тех кто не знает что такое PhantomJS, вещает хабр:
PhantomJS это все плюшки WebKit из консоли с управлением на JS и поддержкой различных стандартов и технологий: DOM, CSS, JSON, Canvas и SVG.

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

CasperJS - это надстройка над PhantomJS позволяющая более удобно его использовать. Добавляется сохранение скриншота части страниц, более удобная работа со страницей и другие плюшки.

Для выполнения зависимостей нужно поставить NodeJS:
apt-get install nodejs npm


Но не всегда в Debian GNU\Linux можно найти пакет. Оказалось он просто не в каждом репозитории находиться, например мне достаточно было добавить в свое /etc/apt/sources.list строчку:
echo "deb http :// ftp.de.debian.org/debian sid main" >> /etc/apt/sources.list
apt-get update
apt-get install phantomjs

Да, к слову, sid - это не стабильная ветка дистрибутива, до этого у меня все так же стояла не стабильная ветка, но другого репозитория.

Если не из репозитория, то нужно собирать из исходных кодов, которые можно скачать прямо с сайта PhantomJS, но это занимает время и ресурсы компа, да и не факт что завершиться успехом.

А дальше мы ставим CasperJS:
npm install -g casperjs


Вот таким образом мы поставили PhantomJS + CapserJS.

Используем с PHP.

Мне не нужны возможности CasperJS, по этому я использую модуль для PHP, работающий только с PhantomJS: php-phantomjs

Ставим через composer. В Kohana 3 это делаем так:
php composer.phar require "jonnyw/php-phantomjs:3.*"


Ну, и краткий пример использования:
use JonnyW\PhantomJs\Client;

$client = Client::getInstance();
        $client->setPhantomLoader('vendor/jonnyw/php-phantomjs/bin/phantomloader');
        $client->setPhantomJs('vendor/jonnyw/php-phantomjs/bin/phantomjs');

        $request  = $client->getMessageFactory()->createRequest();
        $response = $client->getMessageFactory()->createResponse();

        $request->setMethod('GET');
        $request->setUrl("http :// google.com");
//если нужно через прокси, добавляем опции
            $client->addOption('--proxy-type=socks5');
            $client->addOption('--proxy-auth=login:password');
            $client->addOption('--proxy=127.0.0.1:12383');

        $delay = 5; // 5 seconds
        $request->setDelay($delay);

        $client->send($request, $response);
        $status_code = $response->getStatus();
        $html = $response->getContent();


Вот как-бы и все, для примера достаточно. Для использования CasperJS есть свои PHP обертки, но как мне показалось, все они недоразвитые какие-то.
Категория: 
Share/Save

Делитесь с друзьями в социальных сетях! Оставляйте комментарии!

Share/Save

Это Вам так же может быть интересно!