Показать сообщение отдельно
  #17 (permalink)  
Старый 16.09.2015, 14:07
Аспирант
Отправить личное сообщение для ninja2 Посмотреть профиль Найти все сообщения от ninja2
 
Регистрация: 07.06.2015
Сообщений: 90

Сообщение от caetus Посмотреть сообщение
объясни что тебе нужно сделать и я постараюсь помочь )

http://habrahabr.ru/post/224081/
неправильно работал скрипт что выше с рекурсией. нужно было каждый раз вызывать var page=webpage.create() и закрывать, тогда без ошибок, вот так
var webpage=require("webpage");

var url=[];
url[0]="http://google.ru";
url[1]="http://microsoft.com";
url[2]="http://kselax.ru";
url[3]="http://cyberforum.ru";
url[4]="http://fl.ru";
url[5]="http://podrobnosti.ua";

var i=0;
pars();

function pars(){
    var page=webpage.create();
    page.settings.resourceTimeout=10000;
    page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0';
    page.open(url[i],function(status){
        if(status=="success"){
            console.log("success"+i)
            page.render("img"+i+".png");
            page.close();
            if(++i<url.length){pars();}
            else{phantom.exit();}
        }
        else{
            console.log("not success"+i)
            page.close();
            if(++i<url.length){pars();}
            else{phantom.exit();}
        }
    });
};

А раньше по разному парсило, то 2 страницы, то 3, то урлы разные, а изображения одинаковые, вроде разобрался.

Вот с помощью switch типо отлова сообщений
var webpage=require('webpage');

var url=[];
url[0]="http://google.ru";
url[1]="http://microsoft.com";
url[2]="http://kselax.ru";
url[3]="http://cyberforum.ru";
url[4]="http://fl.ru";
url[5]="http://podrobnosti.ua";

var step=1;
var time=500;
var intervalId=setInterval(tick,time);
var i=0;
function tick(){
    switch(step){
        case 1:{
            clearInterval(intervalId);//останавливаем счетчик
            step=2;
            console.log(url[i]);
            var page=webpage.create();
            page.settings.resourceTimeout=15000;//время ожидания 15 секунд
            page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0';
            page.open(url[i],function(status){
                if(status==="success"){
                    console.log("success"+i);
                    page.render("img"+i+".png");
                    page.close();
                    i++;
                    if(i<url.length) {step=1;}
                    else step=3;
                }
                else{
                    page.close();
                    console.log("not success"+i);
                    i++;
                    if(i<url.length) {step = 1;}
                    else step=3;
                }
            });
            intervalId=setInterval(tick,time);
            break;
        }
        case 2:{
            console.log("TICK"+step);
            break;
        }
        case 3:{
            clearInterval(intervalId);
            phantom.exit();
        }
    }
}


А от большие парсера походу не сильно удобно будет писать??? Наверно лучше делать с помощью switch чем на функции разбивать. А мб. еще есть какой то лучший способ?????

Еще интересно как phantom куки сохраняет, от если я сделаю авторизацию через phantom , потом его закрой и заново открою то я буду авторизован или нет??? Нада проверить. И изображения не ясно как их копировать. От есть урл на изображение http://hsto.org/files/59f/f05/718/59...e54ea5e2b3.png и как его скопировать через phantom? просто загрузить и сохранить? Щас проверю.

Хочу попробовать большой парсер написать типо товары напарсить для интернет магазина, я такой на curl писал, а тут не ясно как делать.
И как прокси поменять не ясно

Последний раз редактировалось ninja2, 16.09.2015 в 14:14.
Ответить с цитированием