DTX: короче как я написал делать не надо, все решается через генераторы. если в них завернуть и везде использовать yield, то очень даже рабочий вариант. можно даже сказать, это один из убийц великой мысли программистов, старающихся защитить свои сайтики от ботов....
DTX: да пока эксперементирую, но выполнить сбор данных из таблицы с пагинацией на неопределенное число страниц я пока не смог, грубо говоря в найтмере ты должен указать сперва все действия, потом запустить исполнение. Если я к примеру точно знаю, что мне придется прочитать 10 страниц, то я без циклов могу выполнить .evaluate(){...}.click(){...} .evaluate(){...}.click(){...} .evaluate(){...}.click(){...}.... .evaluate(){...}.click(){...}.END().THEN(){обработка результата}, но если мне число страниц неизвестно, то я не могу замутить фор/вайл, так как вызов всего этого чудного добра идет в момент.end (вызывать этот метод можно лишь 1 раз). Сейчас правда пробую это обойти, в .evaluate(){ здесь полный доступ к странице, которую парсишь} хочу через coursor = getElementByID('ID'); coursor.click() запустить перелистывание всех страниц, работая как в обычной консоли браузера, но пока не выходит. Оно упорно не желает перелистывать страницы таким способом. Хотя в браузере все кушается на ура.... В целом еще дзен не познан, вот пытаюсь понять хороший ли это парсер или все же с ограничениями.
Николай Антонов, попробовал я ваш "кошмар". Ну да забавно наблюдать асинхронный вызов команд, но как только дело доходит до задачи выбрать неопределенное число страниц (табов по 10 элементов с кнопкой след страница) эта штука затухает. нет возможности выполнять .evaluate(){...}.click(){...} неопределенное число раз через цикл. а посему его хватает ой как не на много....
1 раз взять функцию обертку , которая до и после делает замер, потом одно вычесть из другого и вывести в консоль или алерт, как это сделать написано в учебнике learn.javascript.ru в теме декораторы. Учиться учиться и еще раз учиться.... прав был комуняка....
чет не работает как вы предлагаете, все вызовы после первого .then сразу становятся ошибочными. попробовал пушить с биндом из каждого evaluate, результат такой же undefined. Пока пришел к мысли, что требуется создавать
.on('sample-event', function() {
eventResults = arguments;
})
а потом ipc.send('sample-event', data); в evaluate закидывать, но все равно пока не пришло понимание, как это использовать.
Сергей: такое через копипаст тоже вставить можно, защитить себя можно параллельную модерацию, хотябы новых пользователей. Через парсинг по ключевым словам паразитам и так далее. Но это уже совсем не из темы вопроса.
DTX: ну скажем так, мой товарищ воспользовался этим злом, используя руби по минимуму, а потом просто в пхп экзек внешний код и туда все, что надо отправлял. Есть еще зло под названием гусь парсер, о его работе я пока слышал только в теории, сам не добрался пощупать. Но он на привычном js на стороне сервера. И нужно это лишь в действительности геморойных ситуациях, где надо к примеру без авторизации никуда, а она заумная, защищенная от ботов по самое не хочу. Или надо отправить что-то постом, а там куча динамических проверок через js подгружается и уследить за всеми ими ровно аду дебага чужих пьяных фантазий.
вот именно из-за этих сломай голову моментах проще взять нативный вызов и отправить select серверу.... или у вас задача объединять данные из горы баз разного типа?
я бы даже больше сказал. возможно и резервная копия не поможет, если дыр было полно, они никуда не делись. но в любом случае лазить по всему коду руками в поисках инъекций вредоносного кода, дело неблагодарное.
а зачем???? писать свою службу. слушающую пор, на уровне протокола разбирать все, думать о распределении, параллелизме и тп, и все ради чего? чтобы изобрести свои кастыли , а не заниматься тем, что нужно делать в бекэнде? я конечно может наивно размышляю, но кому это вообще нужно?