Как используют роботов?
Ведение баз данных Web
Построение "зеркал"
Поиск информации в WWW
Другие области применения роботов
Некоторые правила разработки роботов для WWW

Одним из главных компонентов распределенных информационно-поисковых систем Internet являются программы сканирования информационных ресурсов сети (spiders, robots и т.п.). Эти программы денно и нощно просматривают в автоматическом режиме страницу за страницей "Всемирную паутину" и другие распределенные системы Internet, доставляя во входные файлы программ индексирования информационных ресурсов полные тексты страниц или их компоненты: заголовки, гипертекстовые ссылки, комментарии, названия программ и т.п. Оперативность работы этих программ во многом определяет качество поиска. Но "паучки" используются и для решения других, не менее интересных и важных задач, например сканирования "паутины".

Впервые пристальное внимание к программам сканирования было обращено после того, как одна из них, а именно WWW Worm, стала победителем первого конкурса "Лучший на Сети" в 1994 году в номинации "лучшее навигационное средство". Подробное описание этой программы можно найти по адресу: www.cs.colorado.edu/home/ mcbryan/WWWW.html.

Сейчас в сети насчитывается около сотни широко используемых роботов, а об их общем количестве можно только догадываться. Каждая информационная служба World Wide Web считает хорошим тоном завести парочку роботов для разного рода работ по обслуживанию своих пользователей. Наиболее полный список программ сканирования сети можно найти в каталоге WebCrawler (http://info.webcrawler.com/mak/projects/robots/acti ve.html).

Как используют роботов?

Роботы занимаются не только просмотром и копированием страниц для программ индексирования - их функции гораздо шире. В своем фундаментальном обзоре "Robots in the Web: thread or treat?" Мартэйн Костер (Martijn Koster), автор знаменитой программы ALIWEB, указывает на четыре основные области применения программ этого типа: ведение наборов страниц World Wide Web (Website), создание "зеркал", поиск информационных ресурсов и комбинированное использование. Любопытно, что ALIWEB также был выдвинут на конкурс в 1994 году, но не вошел в четверку лучших навигационных средств, однако во всех современных обзорах по роботам эта программа обязательно присутствует и с ней сравнивают даже коммерческих роботов, которые используются информационными службами Web.

Ведение баз данных Web

Под ведением наборов страниц World Wide Web понимается примерно то же самое, что и под ведением баз данных, хотя существует и ряд отличий. Практически все базы данных (для WWW это скорее "website") имеют ссылки на станицы в других базах данных WWW. Надо заметить, что местоположение этих страниц довольно часто меняется, а это приводит к отказам при запросе соответствующего информационного ресурса. Конечно, существуют группы Usenet типа comp.infosystems.www.providers или comp.infosystems.www.misc, где администраторы баз данных сообщают об изменении местоположения страниц. Другой способ - это перенаправление запросов; это делают практически все новые серверы. Однако перенаправление порождает просто излишний поток сообщений между клиентами и серверами, что также не очень хорошо. Для решения этой задачи и существуют роботы, которые проверяют правильность ссылок и сообщают администратору системы, где установлена ссылка, если ресурс переместился и требуется поправить ссылку. Типичным роботом этого класса является MOMSpider.

Другая задача, связанная с ведением базы данных Web, - это верификация самих HTML-документов. Здесь различают два типа роботов: удаленные и локальные. Удаленный робот - это программа, проверяющая страницы автора гипертекста по его запросу. Программа обычно проверяет не только правильность самого текста, написанного на языке HTML, но и правильность проставленных гипертекстовых ссылок. Локальные программы обычно используют для тестирования целостности локальной базы данных Web как совокупности страниц с установленными между ними гипертекстовыми связями. Такой робот обычно не выходит за пределы базы данных, управляемой сервером или виртуальным сервером. Типичным примером такого робота является WebLinker, который применяется в совокупности с программами конвертирования.

Построение "зеркал"

"Зеркало" - это копия набора страниц Web. Сами страницы разрабатываются и, разделенные множеством шлюзов и серверов, размещаются на сети за тридевять земель от того места, где размещается "зеркало". Делается это по различным соображениям, самым распространенным из которых является сокращение времени доступа к часто используемому ресурсу. Понятно, что вручную такую работу делать не очень интересно и робот будет здесь очень кстати, поэтому и число роботов, позволяющих делать "зеркала", сегодня очень велико - это и HTMLgobble, и tarSpider, и GetURL и многие другие. Следует заметить, что "зеркало" должно соответствовать текущему состоянию оригинала, а это значит, робот следует запускать постоянно, через некоторые интервалы времени. Однако сегодня "зеркала" становятся все менее популярны. Серьезную конкуренцию им оказывают кэширующие серверы, которые фактически ведут динамическое "зеркало", сохраняя в своем буфере те страницы, к которым пользователи данного сервера обращаются чаще всего. Такие серверы применяются сейчас большинством информационных служб Web, в том числе и у нас. Реально, по архитектуре обслуживания пользователей, Web все больше становится похожей на Usenet.

Поиск информации в WWW

Роботов, которые так или иначе связаны с поиском информации на сети, можно разделить на два больших класса: подготавливающие информационные массивы для индексирования с целью дальнейшего использования в информационно-поисковых системах Web и выполняющие поиск информации в сети для конкретного пользователя. Первый процесс принято называть термином "Resource discovery" (буквально - обнаружение источников), а второй давно известен как "Information retrieval" (информационный поиск). Процедура поиска источников заключается в том, что робот сканирует сеть от страницы к странице, следуя за гипертекстовыми ссылками, и передает их на компьютер, где эти страницы подготавливаются для загрузки в базу данных индекса информационно поисковой системы. Разные роботы позволяют использовать как различные типы документов при поиске ресурсов, так и различные части этих документов. Например, при доступе к странице по методу GET, согласно протоколу HTTP, программа получит только заголовок HTML-документа, из которого можно выбрать для индексирования либо поле "TITLE", либо, если таковое имеется, "KEYWORDS". Нетекстовые документы могут быть проиндексированы согласно идентификаторам гипертекстовых ссылок.

Если при обнаружении источников пользователь работает со вторичными данными (поиск проводится в индексе), то при использовании поисковых роботов никаких индексов не требуется. Робот сам проверяет наличие или отсутствие ключевых слов в документе и решает, соответствует ли он запросу или нет. Естественно, что такой поиск требует гораздо большего времени и поэтому охватывает гораздо меньше источников.

Большинство (если не все) информационно-поисковых служб используют роботов первого типа: Lycos, OpenText, ALIWEB и т.п. Но если требуется сравнить результаты прямого поиска с поиском в архивах служб ИПС, или архивы этих служб не устраивают пользователя по каким-либо причинам, то можно попробовать Fish Search или Aspider.

Следует отметить, что существуют не только универсальные средства поиска и коллекционирования информации, но и специализированные. Лет десять назад многие увлеклись созданием проблемно-ориентированных баз данных на основе существующих универсальных массивов. Сегодня эта тенденция начинает распространяться и на ресурсы Internet. В частности, уже существует робот для сбора и последующего индексирования материалов по математике и математической статистике - Peregrinator или робот, оперирующий только страницами серверов, расположенных на Японских островах.

Другие области применения роботов

Роботы применяются и для других целей, например: одним из старейших направлений в теории гипертекстовых систем, а также одним из первых применений этих систем является автоматическое реферирование и составление обзоров. Робот Memex, созданный Ваневаром Бушем - отцом идеи гипертекста, - предназначался именно для создания обзоров. Среди различных роботов имеется также робот Archinophilia, создающий рефераты размером 10 Кбайт на основе просмотра страниц Web.

Самый первый робот, появившийся в World Wide Web был предназначен для учета скорости роста самой "Паутины" - Wanderer, который просто подсчитывал количество серверов HTTP, установленных в Internet. Сегодня практически все популярные роботы поиска ресурсов в том или ином виде ведут статистику и публикуют ее на своих домашних страницах.

Некоторые правила разработки роботов для WWW

Надо отметить, что роботы - это далеко не безобидные программы. Активность не в меру настырного робота может стать причиной прерывания функционирования сервера или его перегрузки. Обилие программ этого типа привело к появлению документа "Рекомендации для разработчиков роботов" (Guidelines for Robot Writers, http://info.webcrawler. com/mak/projects/robots/guide lines.html). В этом документе определены как "правила хорошего тона" при запуске робота в сеть, так и принципы его разработки.

Прежде чем запускать робота в сеть, следует позаботиться о том, чтобы сервер распознавал робота - для этой цели используется поле User-agent в заголовке сообщения HTTP. Кроме того, следует также применять поле From из того же заголовка, чтобы сообщить адрес лица, запустившего робот. В группе Usenet comp.infosystems.www.provider следует объявить о своих намерениях по поводу запуска собственного робота. При запуске сервера надо уведомить своего администратора системы о том, что ваша программа "пошла прогуляться" по сети, и, самое главное, необходимо сначала проверить работу робота в локальном режиме.

Кроме того, роботам рекомендуется "не бегать, а прогуливаться": слишком частое обращение к одному и тому же серверу может повлиять на его производительность при обслуживании "нормальных" клиентов. Следует также очень аккуратно подходить к проверке типов URL, чтобы программа не зацикливалась на каком-нибудь скрипте или повторно просматривала все внутренние ссылки уже обработанных страниц. Существуют там и другие не менее интересные и полезные рекомендации.


Павел Храмцов - руководитель группы РНЦ "Курчатовский Институт". С ним можно связаться по телефону (095) 196-9124 или по электронной почте: paul@kiae.su.