16:17 Алгоритм ожидания события |
Рассмотрим один из главнейших алгоритмов при программировании ботов - "Алгоритм ожидания события". Попробуем разобраться что это такое и создадим универсальный код, который будет работать везде и всегда, как код для поиска рисунка на экране компьютера. "Алгоритм ожидания события"- что это?
Мы часто сталкиваемся с машинными процессами - это может быть перезагрузка страницы, подзагрузка кеша для воспроизведения видео, загрузка игры при клике на соответствующую клавишу в меню, процесс открытия картинки... Все эти процессы требуют времени и величину этого времени, часто, очень сложно просчитать.Нашей задачей будет отследить время выполнения машинного процесса и произвести следующие действия, если процесс закончился. В скриптах, которые мы использовали ранее для серфинга сайтов,был применен следующий подход к процессам ожидания - мы опытным путем определяли среднее время для просмотра страницы, добавляли несколько секунд (для верности) и в программе указывали сколько секунд программа бот должна подождать после клика на виджет: часть кода для серфинга сайтов. Два процесса просмотр сайта и ввод капчи заданы просто кодом ожидания - WAIT(20). start: // начало программы poisc("seo2.bmp") // подпрограмма поиска категории start2: WAIT(20) // время для просмотра сайта SOUND("blip2.wav") Как мы видим, этот способ прост, часто очень надёжен, но при этом, "слеп" и зачастую затягивает время исполнения программы. Для простоты объяснения возьмём код для серфинга seo-сайтов из прошлого видео. Для некоторых сайтов процесс просмотра сайтов есть величина постоянная(например, для profitcentr - это 20сек), а для других от 5- до 50 сек. как для сайта WMRFast.com. Как же нам простым путем отследить время отведенное на просмотр? Создадим скрипт на примере кода для сайта WMRFast.com. После клика на оплачиваемую ссылку нам открывается новое окно для просмотра сайта и появляется надпись Ждите __ сек , по истечении указанного времени эта надпись исчезнет и нам надо будет отгадать капчу. Надпись Ждите и будем отслеживать (картинку этой надписи). Смысл состоит в следующем: задаем малый промежуток времени ( 2с.) и после проверяем есть ли на странице рисунок надписи Ждите. Если надпись есть - ждем еще 2с., и снова проверяем и так по кругу.После проверки есть ли рисунок на странице и нахождения его - переменной an прибавляем 1 и проверяем не прывышает ли значение этой переменной 30 (что соответствует 60 сек ожидания исчезновения рисунка). Если ожидание превысило 60сек - выходим из цикла(что то не так) и ереходим к следующим действиям. Если рисунок исчезнет в период до 60 сек цикл ожидания автоматически закончиться по условию if_picture_in(0,0,$_xmax,$_ymax,"kpW.bmp")
GOTO(ancor) // переход на начало проверки Ждите con: // метка выхода Код универсален и применим для любых ожиданий , когда существует уникальный рисунок процесса и он исчезает после его окончания. Можно изменить время проверки WAIT(2) как уменьшить так и увеличить. Как встраивается код в программе для сёрфинга смотри на странице сайта - тут.
Часто бывает, что нужно отслеживать машинный процесс по появлению заданной картинки WAIT(2) con: Стоит добавить, что аналогичные операции делает "параллельный поток" , но о его работе всегда можно найти информацию в открытых источниках.
|
|
Всего комментариев: 0 | |