Основные компоненты поискового робота
Поисковый робот, или краулер, действует как автоматический браузер. Обычный человек открывает сайт через Chrome или Яндекс Браузер, кликает мышкой по ссылкам и читает статьи. Робот делает то же самое, но программно и со скоростью в тысячи страниц за секунду.
Архитектура поисковой системы делится на несколько взаимосвязанных модулей, каждый из которых выполняет строгую задачу:
- Планировщик адресов хранит очередь ссылок, определяет приоритеты обхода и решает, какую страницу нужно посетить в первую очередь.
- Модуль загрузки отправляет HTTP-запросы на веб-серверы, получает HTML-код страниц и следит за кодами ответа вроде 200 OK или 404 Not Found.
- Парсер разбирает полученный HTML-код, отделяет служебные теги от чистого текста, выделяет заголовки, картинки и вытаскивает все встреченные гиперссылки.
- Менеджер ссылок фильтрует найденные адреса, отсекает дубликаты, проверяет правила доступности и отправляет новые ссылки обратно в планировщик.
- Хранилище сохраняет скачанные копии страниц в сыром или упакованном виде для передачи в модуль индексации.
Пошаговый цикл обхода страниц
Каждый поисковый робот работает в бесконечном цикле. Цикл начинается со списка проверенных адресов, так называемых семян обхода. Чаще всего это крупные каталоги, авторитетные порталы или адреса, которые владельцы сайтов сами передают через сервис Яндекс Вебмастер.
Робот берет первый URL из очереди и связывается с веб-сервером сайта. Перед скачиванием страницы робот обязательно читает служебный файл robots.txt, расположенный в корне сайта. Если владелец сайта запретил просмотр раздела командой Disallow, робот разворачивается и не скачивает закрытые данные.
Если доступ разрешен, робот загружает HTML-разметку. Затем синтаксический анализатор находит все ссылки внутри тегов с атрибутом href. Каждую ссылку робот нормализует, переводя относительные пути в полные адреса с протоколом и доменом. Новые ссылки попадают в очередь на будущий обход, а скачанный текст отправляется дальше по конвейеру.
Семейство роботов Яндекса
У Яндекса работает не одна универсальная программа, а целая группа специализированных роботов. Каждый из них решает конкретную задачу, представляясь веб-серверу собственным сетевым именем User-Agent.
- Основной индексирующий робот YandexBot загружает большинство публичных страниц сайтов и собирает текстовую информацию.
- Быстрый робот посещает новостные порталы, блоги и информационные ленты каждые несколько минут для мгновенного добавления горячих новостей.
- Медиароботы YandexImages и YandexVideo специализируются на анализе картинок, видеофайлов и метаданных к медиаконтенту.
- Робот YandexFavicons скачивает только маленькие значки сайтов, которые затем отображаются рядом с заголовками в результатах выдачи.
- Мониторинговый робот проверяет доступность сайтов для сервиса рекламы и Яндекс Метрики, чтобы вовремя заметить сбой на сервере.
От сырого текста к обратному индексу
Сам по себе робот ничего не ищет в момент ввода запроса пользователем. Задача робота заканчивается, когда он передал страницу индексатору. Индексатор берет слова со страницы, приводит их к начальной форме и строит обратный индекс.
Обратный индекс устроен точно так же, как предметный указатель в конце учебника по информатике. Вместо того чтобы листать всю книгу ради слова алгоритм, читатель открывает алфавитный указатель на букву А и сразу видит список страниц. Поисковик строит гигантскую базу данных, где каждому слову сопоставлен список документов, в которых оно встретилось.
Правила приличия для поискового робота
Если робот начнет отправлять тысячи запросов в секунду к одному маленькому сайту, сервер этого сайта перегрузится и перестанет открываться у обычных посетителей. Это явление похоже на сетевую атаку типа «отказ в обслуживании».
По этой причине алгоритмы Яндекса соблюдают баланс скорости. Робот замеряет время ответа сервера. Если сервер отвечает медленно, пауза между запросами автоматически увеличивается. Кроме того, владельцы сайтов могут прямо указывать допустимую частоту визитов с помощью директивы Crawl-delay.
Частые вопросы
Как запретить роботу Яндекса заходить на сайт?
Для этого создают текстовый файл robots.txt в корневой папке сайта и прописывают в нем строку User-agent: Yandex, а строкой ниже добавляют команду Disallow: /. Робот прочитает эту команду при очередном визите и пропустит закрытые страницы.
Как быстро робот находит новую страницу?
Срок обнаружения колеблется от нескольких минут до нескольких дней. Быстрее всего робот находит страницу, если на нее ведет ссылка с популярного посещаемого ресурса или если веб-мастер отправил адрес напрямую через инструмент переобхода в Яндекс Вебмастере.
Зачем современным поисковым роботам нужен полноценный движок браузера?
Многие сайты создаются с помощью языка JavaScript, где текст страницы формируется скриптами уже после загрузки базового кода. Простой робот видит пустой HTML, поэтому поисковым системам приходится использовать виртуальный браузер для сборки и отображения динамических элементов.
Что происходит, если ссылка ведет на несуществующую страницу?
Сервер возвращает ошибку с кодом 404 Not Found. Робот фиксирует этот код, вычеркивает адрес из очереди обхода, а если страница уже была сохранена ранее, через некоторое время удаляет ее из поисковой базы.