Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Бесконечная прокрутка (в twitter, vk и подобных)
-
В twitter, vk и на многих других сайтах при прокрутке страницы вниз отсутствует кнопка перехода на следующую страницу, при достижении конца страницы через несколько секунд подгружается следующая страница и так далее.
Как в BAS можно реализовать эту пауза, для подгрузки следующей страницы?
В режиме "Запись" прокрутка происходит медленно, успевают подгрузится следующие страницы и нельзя словить элемент, чтобы установить команду "Ждать полной загрузки".
-
@servasw45 привет - используй в конце действий цикла - действие спать выстави паузу - проверь ее на практике
вот тебе пример
0_1479989811254_test_for_vk.xml -
@servasw45 Чтобы ждать пока загрузится страница используйте действие Ждать полной загрузки. Это грубый вариант, но работает везде.
Самый быстрый вариант - Очистить кэшированные данные + Ждать Загрузки Url. Но нужно смотреть урл для каждого сайта отдельно. -
Turutur, спасибо! Увидел твой ответ и последовал твоей рекомендации. После долгих экспериментов написал такой скрипт для считывания новостей с твиттера и записи их в файл:

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

То есть, сначала проработать первую страницу, затем прокрутить на вторую страницу, считать все со второй, перейти на третью и т.д.
Только второй вариант (на самом деле был первым моим экспериментом) странно работал.На первой странице размещено и считывается 19 сообщений. Затем включалась прокрутка через FOR и добавлялось еще 19 сообщений. А считывание начиналось с первой страницы по вторую, то есть 19+19 сообщений. На третьем витке цикла FOR прибавляется еще 19 страниц, а считывание начинается снова с первого и всего получается 19+19+19 сообщений.
В общем, эта бесконечная прокрутка - какое-то больное место. В программе Visual Web Ripper, припоминаю, тоже были сложности с таким типом перелистывания страниц.
В BAS после команды Прокрутка надежнее всего использовать Ждать полной загрузки. Но как заставить скрипт продолжать обработку со второй страницы, а не начинать с начала... ? Есть необходимость автоматизировать кое что на web.crowdfireapp.com, а там тоже везде эта прокрутка используется.
Уважаемый support, могли бы Вы придумать какую то функцию, чтобы программа BAS сам находила внизу этот подгружающийся элемент кода и цеплялась за него, как за метку или идентификатор следующей страницы. Потому что после этой бесконечной прокрутки получается одна сплошная страница, только длиннее. Я даже не представляю какие кэшированные данные нужно удалять...
Вот мой скрипт:
0_1480036828172_twitter-parser-news.xmlМожет кто-то усовершенствует или предложит лучший вариант.
-
Но как заставить скрипт продолжать обработку со второй страницы, а не начинать с начала... ?
Сохранять количество постов в переменную и начинать цикл с этой переменной.
Либо обрабатывать данные только после прокрутки на несколько страниц.
Либо получать через кеш результат запроса и обрабатывать его.Уважаемый support, могли бы Вы придумать какую то функцию, чтобы программа BAS сам находила внизу этот подгружающийся элемент кода и цеплялась за него, как за метку или идентификатор следующей страницы.
Попробуйте одно из решений выше.
Я даже не представляю какие кэшированные данные нужно удалять...
Действие, которое я предложил(Очистить кэшированные данные) не получает никаких параметров, его нужно просто вызвать.