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

В этой статье объясняется, что такое веб-краулер, по какому циклу он обходит сеть, чем он отличается от скрейпера (эти два термина используются как синонимы, хотя не должны), для каких реальных задач люди используют краулеры, с какими известными краулерами вы уже встречались, сами того не зная, и где управляемый сервис оказывается нужен, когда любительский краулер превращается в систему, которая должна работать каждый день.

Что такое веб-краулер?

Веб-краулер, это программа, которая систематически обходит интернет, скачивая страницы и переходя по найденным на них ссылкам для обнаружения новых страниц. Ему задаётся один или несколько начальных адресов; он получает каждый из них, читает страницу в поисках гиперссылок и добавляет эти ссылки в список ещё не посещённых. Повторяя этот цикл, краулер разворачивает одну начальную страницу в тысячи, а затем миллионы страниц. Краулеры также называют пауками (spiders), паукообразными ботами (spider bots), роботами (robots) или просто ботами.

Интернет хорошо поддаётся такому подходу из-за своего устройства. Страницы связаны гиперссылками, поэтому весь интернет ведёт себя как огромный граф, где каждая страница, узел, а каждая ссылка, ребро. Краулер обходит этот граф. Он использует структуру ссылок для перемещения от страницы к странице, не зная заранее, где находится каждая страница. Большинство краулеров скачивают копию каждой посещённой страницы и хранят её локально, формируя репозиторий, который другая система, например, поисковый индекс, обрабатывает впоследствии.

Репозиторий и есть цель. Краулер редко делает что-то умное со страницей в момент её получения. Его задача, широта охвата: достичь как можно большей части цели, сохранить результаты и передать их дальше. То, что происходит потом: индексирование для поиска, извлечение полей, обучение модели, отдельный этап, выполняемый на хранящихся копиях.

Как работает веб-краулер

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

Начальные URL

Каждый обход начинается с одного или нескольких начальных URL: адресов, которые вы передаёте краулеру в качестве отправной точки. Для обхода сайта это может быть главная страница. Для целенаправленного обхода, страница категории или карта сайта. Начальные адреса определяют, что сможет охватить обход, поскольку краулер способен обнаруживать только те страницы, до которых можно добраться, переходя по ссылкам от места начала.

Очередь (frontier)

Очередь, это список дел краулера: набор URL, которые он обнаружил, но ещё не получил. Начальные URL попадают в очередь первыми. Далее каждая новая ссылка, найденная краулером, добавляется в очередь, и краулер продолжает извлекать следующий URL из очереди до тех пор, пока она не опустеет. Порядок, в котором URL покидают очередь (в ширину, по приоритету, по свежести), это одно из главных различий между игрушечным краулером и серьёзным.

Загрузка

Краулер берёт URL из очереди и загружает страницу по этому адресу: тот же HTTP-запрос, который выполняет браузер, когда вы переходите по ссылке. Необработанный ответ, обычно HTML, возвращается и хранится для следующих двух шагов. Именно здесь настоящий краулер должен вести себя прилично: делать паузы между запросами, соблюдать правила файла robots.txt сайта и не перегружать один сервер.

Разбор и извлечение ссылок

После загрузки страницы краулер разбирает HTML и извлекает каждую гиперссылку на ней. Эти ссылки, топливо для всего остального обхода. Именно этот шаг превращает одну страницу в дерево страниц, и именно так краулер обнаруживает внутреннюю структуру сайта и внешние сайты, на которые он ссылается. Поисковый краулер также читает здесь контент страницы для последующей индексации.

Переход по ссылкам и повтор

Каждая вновь обнаруженная ссылка добавляется обратно в очередь, и краулер возвращается к шагу загрузки со следующим URL. Взять из очереди, загрузить, разобрать, добавить новые ссылки, повторить. Цикл продолжается до тех пор, пока очередь не опустеет или не будет достигнуто условие остановки (ограничение по числу страниц, глубине, бюджету времени). На большой цели краулер таким образом может обходить миллионы страниц в день.

Дедупликация

Без ещё одного шага этот цикл никогда не закончится. В интернете полно страниц, ссылающихся друг на друга, поэтому один и тот же URL появляется снова и снова. Прежде чем добавить ссылку в очередь, краулер проверяет, была ли она уже посещена или загружена. Если да, ссылка отбрасывается. Эта дедупликация не даёт краулеру повторно загружать один и тот же контент и ходить по кругу, поэтому системы обхода хранят записи обо всём посещённом.

Весь цикл в одной строке

Заполнить очередь начальными URL, взять URL, загрузить страницу, разобрать ссылки, отбросить уже встречавшиеся, добавить остальные в очередь и повторять до её опустения. Всё остальное, что делает производственный краулер (вежливость, планирование, масштаб), построено поверх этого базового цикла.

Цикл обхода. Краулер начинает с начальных URL, загружает каждую страницу, разбирает её для получения данных и новых ссылок, и добавляет эти ссылки обратно в очередь. Тот же цикл «загрузить, разобрать, поставить в очередь» повторяется до опустения очереди или достижения лимита.

Краулер против скрейпера: важное различие

«Веб-краулер» и «веб-скрейпер» используются так, будто это один и тот же инструмент. Они связаны, но выполняют разные задачи, и их путаница приводит к созданию не того, что нужно. Коротко: краулер обнаруживает и загружает страницы, скрейпер извлекает конкретные данные со страницы.

Краулер нацелен на охват. Направьте его на сайт, и он обходит граф ссылок, загружая страницы и переходя по ссылкам для поиска новых, создавая широкую копию всего, чего может достичь. Его не обязательно интересует содержимое конкретной страницы, помимо ссылок, необходимых для продолжения обхода. Скрейпер нацелен на извлечение. Дайте ему страницу, и он достанет нужные вам поля (цену, название товара, отзыв, номер телефона) и вернёт их в виде структурированных данных.

Параметр Веб-краулер Веб-скрейпер
Основная задача Обнаружение и загрузка страниц Извлечение конкретных данных со страницы
Движется по Ссылкам (переходит по ним для поиска новых страниц) Целевой странице и нужным полям
Результат Набор страниц или репозиторий Структурированные записи (цена, название, отзыв)
Охват Широкий: целый сайт или интернет Узкий: данные на выбранных страницах
Классическое применение Индексирование поисковыми системами Мониторинг цен, списки потенциальных клиентов, датасеты

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

Варианты использования веб-краулеров

Теперь аналитика данных лежит в основе целых отраслей, и краулер, это то, как значительная часть этих данных собирается в масштабе. Медиа, электронная коммерция и ритейл построили стратегии на публичных веб-данных. Вот задачи, в которых скрейпинг и краулинг появляются чаще всего.

Поисковые системы и индексирование

Это изначальный вариант использования и по сей день наиболее крупный. Поисковые системы непрерывно запускают краулеры для обнаружения новых страниц и повторной проверки известных, копирования контента и передачи его индексатору, чтобы на запрос можно было ответить за миллисекунды. Без краулеров у поисковых систем не было бы ничего для поиска. Каждый сайт, который хочет быть найден, по сути просит хорошо его проиндексировать.

Ценовая и рыночная разведка

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

SEO и аудит сайтов

SEO-инструменты обходят ваш собственный сайт (и сайты конкурентов) так, как это делала бы поисковая система, а затем сообщают о найденном: битые ссылки, отсутствующие заголовки, дублирующийся контент, потерянные страницы, структура внутренних ссылок и внешние домены, ссылающиеся на вас. Поскольку краулер обнаруживает страницы по ссылкам, он естественным образом выявляет проблемы с индексируемостью и доступностью для краулеров, именно то, что нужно аудиту. Чистая структура внутренних ссылок помогает как поисковому краулеру, так и вашему инструменту аудита добраться до каждой страницы.

Исследования и создание датасетов

Исследователи, аналитики и команды машинного обучения используют краулеры для сборки больших датасетов: новостных архивов, публичных записей, академических страниц, корпусов товаров, многоязычных текстов. Определяющая черта, широта охвата множества источников, и краулер, единственный практичный способ собрать такой объём. Поскольку большая часть мировой информации неструктурирована, а объём данных в интернете растёт каждый год, краулер, способный доставлять и хранить исходные страницы, является начальным этапом почти каждого крупного проекта с данными, включая корпусы, лежащие в основе современных AI-моделей.

Лидогенерация и конкурентная разведка

Отделы продаж и маркетинга обходят публичные каталоги и объявления для поиска потенциальных клиентов в масштабе, а также обходят сайты конкурентов и платформы отзывов для отслеживания товаров, позиционирования и настроений покупателей. Делать это вручную не масштабируется; краулер собирает и компилирует те же данные за долю времени, оставляя анализ людям.

Crawlbase Crawling API

Когда краулер должен работать каждый день против реальных сайтов, сложная часть перестаёт быть самим циклом и становится задачей не попасть в блок: ротация IP, рендеринг JavaScript-страниц и обход антибот-защиты. Crawling API справляется со всем этим за единой конечной точкой, чтобы ваш краулер отправлял URL и получал страницу обратно, а не CAPTCHA. Для больших асинхронных задач асинхронный Crawler ставит ваши URL в очередь и отправляет результаты в ваш колбэк по мере завершения.

Примеры веб-краулеров

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

  • Googlebot, краулер Google и наиболее активный в интернете.
  • Bingbot, краулер Microsoft Bing.
  • DuckDuckBot, используемый поисковой системой DuckDuckGo, ориентированной на приватность.
  • Baidu Spider, который обходит сеть для Baidu, доминирующей поисковой системы в Китае.
  • Yandex Bot, краулер российского Yandex.
  • Crawlbase, управляемый сервис краулинга, который выполняет цикл обхода и загрузки для вас применительно к любому сайту.

Первые пять существуют для создания публичного поискового индекса. Последний относится к другой категории: вместо того чтобы обходить интернет для собственного индекса, он предоставляет вам инфраструктуру краулинга, чтобы вы могли собирать нужные вам страницы для своих целей.

Где вписывается управляемый краулинг

Написать базовый цикл легко. Надёжно запускать его против современных веб-сайтов, нет, и именно в этом разрыве большинство проектов краулеров заходят в тупик. Как только вы направляете самодельный краулер на реальные цели, появляются проблемы, не связанные с алгоритмом: страницы, которые отображают контент только с JavaScript, сайты, ограничивающие или блокирующие единственный IP после серии запросов, CAPTCHA и антибот-системы, настроенные на распознавание автоматического трафика. Решение этих проблем требует поддержки пулов прокси, парка безголовых браузеров, логики повторных попыток и обходных методов обнаружения, ни одно из которых не является теми данными, которые вам на самом деле нужны.

Управляемый сервис краулинга сворачивает все эти расходы на обслуживание в одну конечную точку. Вы передаёте ему URL, и он выполняет неприятные части: ротирует выходной IP по большому пулу, рендерит JavaScript, когда страница это требует, повторяет попытки при сбоях и обходит антибот-защиту, после чего возвращает страницу. Ваш краулер сохраняет логику, специфичную для вас: очередь, правила дедупликации, что делать с каждой страницей, и перекладывает на сервис ту часть, которая ломается. Для целей с интенсивным JavaScript конкретно см. как обходить JavaScript-сайты, а для обхода блокировок, скрейпинг без блокировок.

Паттерн ниже, это всё взаимодействие: отправьте URL в Crawling API и получите обратно отрендеренный HTML с уже выполненными ротацией и обработкой блокировок.

bash
# Send one URL, get the fetched page back.
# IP rotation and block handling happen server-side.
curl "https://api.crawlbase.com/?token=_TOKEN_&url=https%3A%2F%2Fexample.com"

Для очень больших обходов, где вы не хотите держать соединение открытым для каждой страницы, асинхронный Crawler принимает пакеты URL, загружает их в фоновом режиме и отправляет каждый результат на ваш вебхук по мере завершения, это правильная форма для обхода, который работает часами или днями. Чтобы углубиться в создание такого обхода с использованием управляемого краулера, см. извлечение данных с Crawlbase Crawler.

Итоги

Ключевые выводы

  • Краулер обходит граф ссылок. Он загружает страницу, переходит по её ссылкам для поиска новых страниц и сохраняет копии для последующего этапа, например индексирования.
  • Базовый цикл невелик. Начальные URL попадают в очередь; загрузить, разобрать ссылки, провести дедупликацию, добавить новые обратно, повторять до опустения очереди.
  • Краулер и скрейпер, не одно и то же. Краулер обнаруживает и загружает страницы; скрейпер извлекает конкретные поля. Большинство конвейеров обходит для поиска URL и скрейпит для превращения их в данные.
  • Краулинг питает реальные системы. Поисковое индексирование, ценовая и рыночная разведка, SEO-аудиты, исследовательские датасеты и лидогенерация, всё это работает на обходе страниц.
  • Масштаб, а не алгоритм, вот в чём сложность. Рендеринг, ротация IP и антибот-обработка, вот где самодельные краулеры заходят в тупик, именно с этим и справляется управляемый сервис краулинга.

Часто задаваемые вопросы

Что такое веб-краулер простыми словами?

Веб-краулер, это программа, которая автоматически просматривает интернет. Вы даёте ей начальную страницу, она загружает её, находит на ней ссылки и тоже их посещает, повторяя этот процесс для обнаружения и копирования всё большего числа страниц. Поисковые системы используют краулеры для поиска страниц к индексированию.

В чём разница между веб-краулером и веб-скрейпером?

Краулер обнаруживает и загружает страницы, переходя по ссылкам; скрейпер извлекает конкретные данные (например, цены или названия) со страницы. Они часто работают вместе: краулер находит URL, а скрейпер извлекает из каждого из них структурированные данные. Краулинг, это охват, скрейпинг, это извлечение.

Что такое начальные URL и очередь (frontier)?

Начальные URL, это начальные адреса, которые вы даёте краулеру. Очередь, это набор URL, которые краулер обнаружил, но ещё не загрузил. Начальные URL попадают в очередь первыми, затем каждая новая ссылка, найденная краулером, добавляется туда, и краулер продолжает извлекать URL из очереди до тех пор, пока она не опустеет.

Зачем краулеру нужна дедупликация?

Потому что в интернете полно страниц, которые ссылаются друг на друга, и один и тот же URL продолжает появляться по мере выполнения обхода. Дедупликация проверяет, был ли URL уже обнаружен, прежде чем добавлять его в очередь, что не позволяет краулеру снова и снова загружать одну и ту же страницу и ходить по кругу.

Законен ли веб-краулинг?

Обход публичных веб-страниц широко практикуется, но должен выполняться ответственно: соблюдайте условия использования каждого сайта и его правила файла robots.txt, придерживайтесь публично доступных данных и поддерживайте разумную частоту запросов, чтобы не перегружать сервер. Правила различаются в зависимости от сайта и юрисдикции, поэтому перед масштабным обходом ознакомьтесь с условиями конкретной цели.

Нужно ли мне создавать собственный краулер?

Для небольшой или разовой задачи простой самодельный краулер вполне подойдёт. В масштабе сложность смещается от цикла обхода к тому, чтобы не попасть в блок: рендеринг JavaScript, ротация IP и антибот-защита. Управляемый сервис вроде Crawling API или асинхронного Crawler берёт эти части на себя, чтобы вы поддерживали только логику, специфичную для вашего проекта.

Начать создавать

Обходите любой сайт в масштабе, без борьбы с инфраструктурой.

Crawlbase берёт на себя прокси, отпечатки и CAPTCHA, чтобы ваша команда выпускала конвейеры данных вместо поддержки обвязки краулинга. 1 000 запросов бесплатно, без карты.

Самообслуживание · Звонок отдела продаж не требуется · Доступны корпоративные объёмы краулинга