Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Парсинг сайта (https://javascript.ru/forum/offtopic/49901-parsing-sajjta.html)

cyber 17.09.2014 23:50

kobezzza,я думал если так то выполняться скрипты, то чего мне не нужно..

kobezzza 17.09.2014 23:55

Цитата:

Сообщение от cyber (Сообщение 331079)
kobezzza,я думал если так то выполняться скрипты, то чего мне не нужно..

Ну вообще, он и так и так их выполняет, т.к. этот тот же браузер. Он также просчитывает вёрстку: геометрию, стили и т.д., причём можно даже сделать скриншот загруженой страницы.

Я хз, но возможно есть опция "отключить JS" (почему бы и нет?), но у меня таких задач не было и я сам не копал, так что изучай доку.

cyber 18.09.2014 01:42

kobezzza,
нашел, это делаеться так
page.settings.javascriptEnabled = false;


http://phantomjs.org/api/webpage/property/settings.html

cyber 18.09.2014 01:44

Теперь остался последний вопрос нужен халявный хостинг где будет работать phantomjs:)

cyber 18.09.2014 02:13

И что за бред твориться там внутри, так не работает

var matches = page.evaluate(function() {
    return {
        upcoming: document.getElementById("upcoming-matches"),
        fallback: document.getElementById("fallback-matches")
    }
});


а так работает
var upcoming = page.evaluate(function() {
        return document.getElementById("upcoming-matches")
    });

    var fallback = page.evaluate(function() {
        return document.getElementById("fallback-matches")
    });


И код внутри page.evaluate исполняеться только return?

cyber 18.09.2014 02:35

Хотя если правильно вкурил, то самый простой и удобный вариант написать обычный js скрипт, и потом просто вернуть результат через phantomejs?
И вообще какие есть альтернативы phantom, желательно штуки работающие как nodejs модуль (если такое вообще есть)?

kobezzza 18.09.2014 08:34

Цитата:

Теперь остался последний вопрос нужен халявный хостинг где будет работать phantomjs
Любой хостинг с поддержкой CGI, а их over9000.

Цитата:

И что за бред твориться там внутри, так не работает
Цитата:

The execution is "sandboxed", there is no way for the code to access any JavaScript objects and variables outside its own page context. An object can be returned from evaluate(), however it is limited to simple objects and can't contain functions or closures.
Я думаю были причины.

Цитата:

И код внутри page.evaluate исполняеться только return?
Нет, там можно писать любой код.

Цитата:

И вообще какие есть альтернативы phantom, желательно штуки работающие как nodejs модуль (если такое вообще есть)?
Есть модуль phantomjs под ноду, уже давал ссылку выше. А что касается альтернатив, то это самое лучшее из возможных решений и мне абсолютно непонятно, чем оно тебе не нравится (ну кроме того, что нужно изучать новое и поэтому сразу может не получатся, но это же только плюс).

cyber 18.09.2014 10:38

kobezzza,
Спасибо, а про новое, доки в любя случае прийдеться ковырять, так что особо нет разницы phantom это или другая либа.

Gozar 18.09.2014 11:01

Цитата:

Сообщение от kobezzza
это самое лучшее

Одно из лучших.

cyber 18.09.2014 21:28

Цитата:

Сообщение от kobezzza
Я думаю были причины.

Тогда как удобно сделать что то в таком роде не могу понять, в примерах не нашел...
Задача состоит в том что бы хтмл с блока upcoming-matches (который там в виде строки) превратить в нужный мне объект..
Как это быстро и удобно сделать, возможно без использования phantomjs
var upcoming = page.evaluate(function() {

        var upcom = document.getElementById("upcoming-matches"), // тут хтмл
            div = document.createElement( "div" ); // делаем контейнер
        div.id = "template-dom-upcoming";

        div.innerHTML = upcom.innerHTML; // записываем его в хтмл
        document.body.appendChild( div ); // закидыаем его в дом

        return document.getElementById("upcoming-matches");
    });


Часовой пояс GMT +3, время: 04:07.