Исполнение JS для парсера на PHP

Статус
В этой теме нельзя размещать новые ответы.

Inviseble_Demon

Мой дом здесь!
Регистрация
11 Дек 2008
Сообщения
478
Реакции
377
Всем доброго времени суток.

Итак имеем задачу:
Получить HTML после обработки JavaScript`ом при этом имеем сервер *nux и возможность ставить софт туда.

Решаем задачу.
Для просмотра ссылки Войди или Зарегистрируйся
Этого достаточно как считает почти весь интернет (( Но так как тема создавалось с надеждой получить примерно то что представляет в итоге этот пост то распишем это поподробнее.

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


Устанавливаем
apt-get instrall phantomjs

Создаем маленький скрипт который будет принимать параметр адреса и выдавать нам итог.
Так же лично мне понадобилось знать на какой я странице ибо слать нужно итог туда (редирект был после перехода по начальной ссылке).

Код:
var page = require('webpage').create();
page.open(phantom.args[0], function (status) {
    var ua = page.evaluate(function () {
        return location.href+'##############'+document.getElementsByTagName('html')[0].innerHTML
    });
    console.log(ua);
    phantom.exit();
});

Сохроняем его под именем get_end_html.js (к примеру)

Далее создаем "запрос" исходника
Код:
phantomjs  --cookies-file=cookie.txt get_end_html.js http://google.com/
Тобиш передаем путь до файла cookie далее скрипт для нашего софта и адрес с которым все это работает.

В итоге мы получаем исходник после работы JS

Так как тема по PHP идем немного далее.

Функция для exec (обрезок из проекта...)
[spoil]
PHP:
function SetTask($cmd)
{
        exec($cmd, $output, $if);
        return array(
            'output' => implode('<br>', $output),
            'if' => $if
        );
}
[/spoil]

Запрос страницы через phantomjs (вырезка с проекта)

[spoil]
PHP:
                $phantomjs = SetTask('
                    phantomjs  --cookies-file=' . FCLASS . DS . 'curl' . DS . 'cookie' . DS . 'download_wb.txt ' .
                        FCLASS . DS . 'get_end_html.js ' .
                        $this->url
                );
 
 
//  $this->CurlInfo['url']  - это костылек ))                
list($this->CurlInfo['url'], $page) = explode('##############', $phantomjs['output']);
Все после запроса мы имеем в $page конечный вариант страницы - парсем радуемся ))

Единственная ссылка которую помню и которая мне помогла.
Для просмотра ссылки Войди или Зарегистрируйся


Всем спасибо за внимание проявленное к данному вопросу, вопрос решен - тему можно закрывать.
Надеюсь я пояснил хоть как то понятно и вам не потребуется как мне около 10 часов на решение данной проблемы :D Правда я куда попало лез и тратил на это время...

PS. Софт довольно мощный без проблем можно сделать из него аналог XHE непонятно только нахер они сразу на нем не делали... Работало бы везде ))
 
Насчет насилия над html я не понял, но похоже что тебе нужна эмуляция браузера. Я юзаю Xweb потому что у меня задачи тривиальные. Если бы была задача тру сложная то учился бы работать с selenium и phantomjs
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху