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");
    });

cyber 19.09.2014 23:04

Народ хелп, не могу вкурить как это не через опу сделать..
Просто если нельзя, то не хочу терять время альтернативу вроде нашел, только нужно по скорости проверить..

cyber 20.09.2014 21:58

НЕ обращайте внимания все работает, просто я упорот был:)

cyber 20.09.2014 22:40

Вроде разобарался, но в данной ситуации мне кажеться использовать фантом не самая лучшая идея. Напишу 2 вариант и сравню.

cyber 22.09.2014 01:27

Как правильно id во множественном числе ids?:)

Gozar 22.09.2014 02:06

Цитата:

Сообщение от cyber
Как правильно id во множественном числе ids?

ideas ;)

Стараюсь не писать ids, т.к. id это все таки уникальный идентификатор и множественное число ему не к лицу.

items, array_id ...

cyber 22.09.2014 02:48

Цитата:

Сообщение от Gozar
ideas

Как сказала моя девушка(она переводчик), правильного варианта нет, в данной ситуации, но можно писать ids, я спросил ее после того как написал.

l-liava-l 22.09.2014 03:05

Цитата:

правильного варианта нет, в данной ситуации, но можно писать ids
В данной ситуации нужно писать IDs, т.к такое "слово" есть и многие так пишут.

cyber 22.09.2014 03:06

Цитата:

Сообщение от l-liava-l
В данной ситуации нужно писать IDs

Я так и пишу, но просто в один момент задумался об этом)

Gozar 22.09.2014 10:33

Цитата:

Сообщение от l-liava-l
нужно писать IDs

Не нужно так писать, можно, но не нужно. Если так писать, то в итоге можно прийти к чему-то такому: HTMLIDs или DOMIDs или IDsHTML, вместо htmlArrayID или htmlListID.

В первом случае совершенно не ясно, что находиться внутри переменной.

Есть небольшая статья http://learn.javascript.ru/variable-...B5%D0%BD%D0%B8 , в которой довольно четко говориться, если назовешь так, что не вспомнишь через пару месяцев, значит решение плохое.

То, что ты - cyber написал на форуме, уже плохой признак, говорящий о том, что ты первый не вспомнишь, что лежит в переменной. Болезнь коротких имен - тяжелая болезнь, она только мешает. Если ты не пишешь на php ниже 5 версии или вообще на php, то называть переменные лучше именами, однозначно говорящими о хранимых в них данных.

IDs вполне себе жизнеспособно, если не забывать что именно там лежит, ссылки на DOM или массив цифр ;), но то, куда ведет такой путь плохое место. Я говорю на своем опыте и мне было очень неудобно вспоминать, что лежит в IDs. В corn я использую короткие переменные, но там скрипт помещается на 1 страницу.

А еще, если тебе не ясно как назвать переменную, то в комментарии лучше записать что она хранит.

cyber 22.09.2014 12:13

Gozar, у меня массив id, именно id в виде строк , а не элементов и не какого пхп

Gozar 22.09.2014 13:20

Цитата:

Сообщение от cyber
у меня массив id, именно id в виде строк , а не элементов и не какого пхп

Если бы ты понял, что я написал, то не написал бы этот бред.

Цитата:

Сообщение от cyber
у меня массив id

У тебя массив id == idArray, не idList - массив элементов, не id_array как в php.


Цитата:

Сообщение от cyber
не какого пхп

никакого php.

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

cyber 22.09.2014 16:33

Цитата:

Сообщение от Gozar
Желаю тебе побольше геморроя в будущем, раз ты так упрям.

И тебе того же

Gozar 22.09.2014 16:37

Цитата:

Сообщение от cyber
того же

Того же - негоже,
в карман не положишь!


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