Продолжение заметок "Самонаводящийся спайдер к проблеме автоматического скачивания файла с переменным Web адресом" и "Проблема автоматического скачивания файла с переменным Web адресом".
Для нужд слежения за файлом на удаленном сайте в условиях переменчивости адреса этого файла мы создали робот. Робот состоит из двух частей - спайдера (паук) и скаута (разведчик). При размещении задания на слежение спайдер однократно пробегает по сайту и находит заданный файл и его родительскую страницу. Затем скаут по данным спайдера периодически следит за родительской страницей наблюдаемого файла с целью своевременного обнаружения его изменившегося адреса.
В первой версии спайдер мог захватить лишь адрес, точно соответствующий указанному в задании. Это оказалось очень жестким ограничением и во второй версии было предложено решение о захвате цели на основе пороговой обработки меры близости найденных на родительской странице адресов и заданного адреса. Это позволило включить спайдер в систему на ходу без ручного согласования уже изменившихся адресов. Спайдер показал почти 100%-ную статистику захватов цели, но обнаружились некоторые экзотические ситуации, потребовавшие дальнейшего усовершенствования.
- На сайте, более того, на одной родительской странице ошибочно располагались две или более ссылки на интересующий файл, причем первая из них была просроченной.
- На сайте, более того, на одной родительской странице корректно располагались две ссылки на два интересующих нас файла, учитываемых и наблюдаемых раздельно.
Поскольку самонаводящийся спайдер захватывал первую цель, для которой превышался порог близости, то в обоих названных случаях - продолжая наши аналогии с самонаводящейся ракетой - он "захватывал ложную цель".
В связи с этим в спайдер была добавлена еще одна фаза обработки до принятия решения о захвате. Вместо решения о захвате цели при первом же превышении порога спайдер стал принимать промежуточное решение: "нахожусь на родительской странице". Или, возвращаясь к ракете, "в поле зрения вероятные цели".
После этого спайдер не останавливается, а продолжает просмотр текущей страницы, записывая меры близости всех ссылок с превышением порога близости. Т.е. он предварительно захватывает все цели в поле зрения. Затем он, подобно ракете, выделяет самую яркую цель и выполняет окончательный захват цели, уходя от ложных целей.