Каждый раз, когда вы что-то ищете в Google, Bing или DuckDuckGo и за доли секунды получаете ранжированный список страниц, вы видите результат работы, проделанной задолго до ввода запроса. Программа-краулер обошла веб заблаговременно, прочитала страницы, прошла по их ссылкам и передала найденное в индекс. Строка поиска кажется мгновенной лишь потому, что краулер выполнил медленную часть работы первым.
В этом руководстве объясняется, что такое программа-краулер, какова её реальная функция и как работает её основной цикл: начальные URL, очередь страниц для посещения, получение, разбор, извлечение новых ссылок и повторение. Далее рассматривается, для чего краулеры применяются помимо поиска, чем краулер отличается от скрейпера, почему важны вежливость и robots.txt и когда управляемый сервис обхода подходит лучше всего, если вам нужно запустить собственный краулер.
Что такое программа-краулер?
Веб-краулер, иногда называемый пауком или ботом, это программа, которая автоматически и организованно просматривает веб. Она начинает с одной или нескольких известных страниц, читает их, переходит по найденным ссылкам и продолжает двигаться, накапливая карту того, что существует в сети. Поисковые системы запускают краулеры почти непрерывно, чтобы в момент ввода запроса уже был готовый список релевантных страниц для ранжирования и возврата.
Классический образ для понимания, библиотекарь в огромной неупорядоченной библиотеке. Чтобы сделать каждую книгу доступной для поиска, библиотекарь обходит стеллажи, читает название и краткое содержание, делает пометки о теме каждой книги и записывает всё на карточки, чтобы другие могли быстро найти нужную. Краулер делает то же самое для веба, только стеллажи никогда не заканчиваются, а новые книги появляются каждую секунду. Он читает страницу, фиксирует её содержание, записывает, куда ведут её ссылки, и переходит к страницам, на которые указывают эти ссылки.
Масштаб трудно переоценить. Никто точно не знает, какая часть публичного веба обойдена и проиндексирована, и общий объём постоянно растёт, поскольку каждый день публикуются огромные объёмы нового контента. Работа никогда не завершается, поэтому краулер проектируется как бесконечный цикл, а не задача с окончанием.
Как работает веб-краулер?
За всем масштабом скрывается простой цикл, повторяемый миллионы раз. Как только вы можете назвать его шаги, всё остальное по теме встаёт на свои места.
1. Начало с начальных URL
Краулер начинает с затравки: одного URL или списка известных URL для первоначального посещения. Это точки входа. Из одной хорошо связанной затравки краулер в итоге может достичь огромной части веба, просто следуя ссылкам вовне.
2. Получение страницы
Краулер запрашивает страницу с веб-сервера, на котором она размещена, точно так же, как браузер делает это при посещении сайта. Сервер отвечает содержимым страницы, и теперь у краулера есть исходный материал для работы.
3. Разбор и извлечение ссылок
Краулер читает страницу, фиксирует текст и метаданные, важные для индексации, и извлекает все гиперссылки, которые она содержит. Эти ссылки, нити, ведущие к следующим страницам.
4. Добавление новых ссылок во фронтир
Вновь обнаруженные ссылки помещаются в очередь страниц, ожидающих посещения, её часто называют фронтиром. Краулер не посещает их все сразу и не в случайном порядке; он работает через очередь в соответствии с правилами о том, какие страницы важнее и как часто их следует переобходить.
5. Повторение
Краулер берёт следующий URL из фронтира и запускает цикл снова: получить, разобрать, извлечь, поставить в очередь. Поскольку каждая новая страница, как правило, содержит ещё больше ссылок, фронтир постоянно пополняется, и цикл продолжается. Разные поисковые системы взвешивают эти шаги с собственной проприетарной логикой, поэтому два краулера будут вести себя немного по-разному, но конечная цель одна: загрузить и проиндексировать контент со всего веба.
Краулер не может переходить по каждой ссылке бесконечно, поэтому делает выборы. Страница, на которую ссылаются многие другие страницы и которая привлекает много посетителей, сигнализирует об авторитетности и высоком качестве контента, поэтому краулер считает её достойной индексации и повторного посещения. Краулер также должен решать, как часто возвращаться на страницу для проверки обновлений: постоянно меняющийся контент требует более частых посещений, чем страница, которая редко изменяется.
От обхода к поисковому индексу
Обход собирает страницы; индексация организует их так, чтобы по ним можно было искать. Индекс работает как база данных, содержащая записи о том, через какие слова можно найти тот или иной контент, так что при выполнении запроса движок не перечитывает весь веб. Он ищет слова в индексе и возвращает наиболее релевантные совпадения.
Индексация фокусируется на тексте страницы и её метаданных. Большинство поисковых систем добавляют слова страницы в индекс, хотя некоторые пропускают очень распространённые слова. Google, например, исторически не индексирует такие слова, как «a», «an» и «the», поскольку они встречаются почти везде и мало что добавляют к поиску. В результате создаётся структура, превращающая миллиарды обойдённых страниц в нечто, по чему можно делать запросы за миллисекунды.
Как краулеры решают, что посещать: robots.txt
Перед обходом сайта хорошо настроенный краулер проверяет протокол исключения роботов, обычно это файл robots.txt, размещённый в корне сайта. Этот текстовый файл сообщает ботам, какие части сайта они могут обходить, а какие ссылки следует оставить в покое. Краулер, уважающий robots.txt, читает эти инструкции на каждом сайте и следует им, это одно из главных отличий хорошего бота от плохого.
Для чего используется веб-краулер?
Поиск, наиболее известное применение краулера, но далеко не единственное. Тот же цикл получения, разбора и перехода по ссылкам лежит в основе широкого круга задач, если направить его на нужные страницы и сохранять полученные данные.
Поисковая индексация
Это исходное назначение. Краулеры поисковых систем непрерывно обходят публичный веб, чтобы всегда был свежий индекс для ранжирования запросов. Без обхода поисковой системе нечего было бы искать. Это применение существует с конца 1990-х годов и остаётся основой того, как люди находят информацию в интернете.
SEO-аудиты
Поскольку поисковая видимость зависит от того, может ли краулер прочитать ваш сайт и как именно, владельцы сайтов запускают собственные краулеры для аудита сайта так, как это сделал бы Google. Обход выявляет битые ссылки, страницы, заблокированные robots.txt, дублирующийся контент, отсутствующие метаданные и потерянные страницы без входящих ссылок. Поисковая оптимизация, это практика подготовки контента для качественной индексации, а обход, способ убедиться, что страница действительно доступна. Страница, которую ни один паук не обходит, не может быть проиндексирована, а страница без индексации никогда не появится в результатах поиска, именно поэтому владельцы аудируют собственную доступность для краулеров, а не оставляют это на волю случая.
Мониторинг цен и рынков
Компании направляют краулеры на каталоги конкурентов и маркетплейсы, чтобы отслеживать цены, остатки и изменения товаров с течением времени. Запущенный по расписанию, краулер превращает разрозненные публичные листинги в структурированный поток данных, питающий ценовую стратегию и рыночный анализ. Это одна из наиболее распространённых коммерческих причин, по которым компании строят собственные краулеры, а не полагаются на общую поисковую систему.
Веб-архивирование
Архивы используют краулеры для создания снимков страниц в определённый момент времени, сохраняя контент, который в противном случае изменится или исчезнет. Краулер посещает страницу, сохраняет её содержимое и движется дальше, формируя исторические записи, к которым впоследствии могут обращаться исследователи и широкая публика.
Обучающие данные для ИИ
Современные модели машинного обучения обучаются на больших коллекциях текста и другого контента, собранного из публичного веба. Краулеры формируют эти коллекции, обходя страницы в масштабе и сохраняя найденное. По мере роста спроса на продукты, управляемые данными, это стало одной из наиболее быстро растущих причин для запуска краулера наряду с давно существующими аналитикой и задачами мониторинга.
В основе всего этого лежит одна движущая сила: организации всё больше стремятся принимать решения на основе данных, а публичный веб является их крупнейшим источником. Инструменты, способные собирать и систематизировать эту информацию в масштабе, делают возможным всё остальное. Даже несмотря на то, что несколько доминирующих поисковых систем, Google, Bing, Baidu и Yandex, уже обходят веб, компании всё равно строят собственные краулеры, когда нуждаются в конкретных данных, по конкретному расписанию, в форме, которую общая поисковая система им не даст.
Веб-краулер vs веб-скрейпер: в чём разница?
Эти термины часто используются как взаимозаменяемые, но между ними есть реальное различие, которое стоит чётко понимать.
Задача веб-краулера, обнаруживать и картировать: он сканирует страницы и широко следует ссылкам, каталогизируя то, что существует на сайте или во всём вебе. Представьте его рисующим карту. Задача веб-скрейпера, извлекать: он нацеливается на конкретные страницы и вытаскивает из них конкретные значения, такие как цены, названия или контактные данные. Представьте его использующим лупу на карте, которую нарисовал краулер.
В традиционном конвейере эти два компонента работают последовательно. Краулер составляет карту существующих страниц, а скрейпер затем извлекает нужные поля из этих страниц. Обход широк и непрерывен, следует за ссылками куда угодно; скрейпинг узок и целенаправлен, идёт за известными страницами или известным сайтом. В повседневном использовании граница размылась, и «скрейпер» стал более распространённым словом по мере того, как всё больше компаний извлекают веб-данные для бизнес-нужд, тогда как «краулер» по-прежнему ассоциируется именно с активностью поисковых систем. Приведённая ниже таблица суммирует это различие.
| Dimension | Web crawler | Web scraper |
|---|---|---|
| Primary goal | Обнаружение и индексация страниц | Извлечение конкретных данных со страниц |
| Scope | Широкий обход, переходит по ссылкам между сайтами | Узкий обход, нацелен на известные страницы |
| Output | Карта или индекс того, что существует | Структурированные поля, которые вы запросили |
| Typical run | Continuous, open-ended | Целевой обход, часто разовый или по расписанию |
| Classic association | Search engines | Извлечение бизнес-данных |
Если вы хотите углубиться в сторону обнаружения, это введение о том, что такое веб-краулер, с примерами использования расширяет те же идеи, а обзор техник и фреймворков веб-краулинга рассматривает, как краулеры строятся на практике.
С какими трудностями сталкивается программа-краулер?
Запускать краулер сложнее, чем предполагает простой цикл, как только вы работаете в сколь-нибудь реальном масштабе. Несколько повторяющихся проблем определяют, как проектируются промышленные краулеры.
Поддержание актуальности индекса
Сайты меняются постоянно, а динамические страницы могут меняться при каждом посещении. Данные, собранные краулером вчера, могут уже устареть сегодня. Чтобы результаты оставались актуальными, краулер должен повторно посещать страницы и решать, какие из них посещать чаще всего, не тратя усилий на повторный обход редко меняющихся страниц.
Ловушки краулеров
Некоторые сайты создают бесконечные структуры ссылок, иногда намеренно, заманивая краулер в бесконечный цикл запросов страниц. Эти ловушки тратят время и ресурсы краулера, поэтому хорошо спроектированный краулер нуждается в ограничениях и обнаружении циклов, чтобы не зависнуть.
Пропускная способность сети
Загрузка большого числа нерелевантных страниц или слишком агрессивный повторный обход потребляют значительную пропускную способность и нагружают как краулер, так и посещаемые серверы. Эффективные краулеры расставляют приоритеты, расходуя мощности на важные страницы.
Дублирующийся контент
Один и тот же контент часто доступен по множеству URL, что затрудняет выбор нужной версии. Поисковые системы решают это, выбирая единственную каноническую версию почти одинаковых страниц для отображения в результатах, вместо того чтобы индексировать каждую копию.
Вежливый обход: robots.txt и ограничения скорости
Краулер создаёт запросы, на которые веб-сервер должен отвечать, как и любой посетитель. Слишком много и слишком быстро, и вы можете увеличить расходы на полосу пропускания сайта или перегрузить его серверы. У владельцев сайтов могут быть страницы, которые они просто не хотят видеть в обходе: внутренние страницы результатов поиска, автоматически генерируемые страницы, полезные только одному пользователю, или нелистинговые посадочные страницы кампаний, которые они предпочли бы держать подальше от поисковых систем. Владельцы сигнализируют об этих пожеланиях тегом «noindex» или правилом «disallow» в robots.txt, и ответственный краулер их учитывает.
Разница между хорошим и плохим ботом определяется именно этой сдержанностью. Скрейпер, созданный для захвата контента без разрешения, может игнорировать нагрузку, которую создаёт на сервер, тогда как краулеры крупных поисковых систем соблюдают robots.txt и регулируют темп запросов, чтобы не перегружать посещаемые сайты. Три практики удерживают краулер на правильной стороне этой линии.
Соблюдение скорости обхода
Сайты могут указывать, какой интенсивности обхода они готовы терпеть в заданном окне, фактически ограничение скорости посещений. Хороший краулер остаётся ниже этого лимита, чтобы не перегружать сервер, так же как вы соблюдаете правила дорожного движения для поддержания потока.
Соблюдение robots.txt
Рассматривайте robots.txt как карту мест, куда вам разрешено ходить. Читайте его на каждом сайте и обходите только разрешённые разделы. Следование этим инструкциям, самый чёткий признак хорошо настроенного краулера.
Ответственная ротация IP-адресов
Сайты следят за автоматическим трафиком и могут оспаривать или блокировать посетителей, выглядящих нечеловекообразно, иногда с помощью CAPTCHA. Краулеры, которым необходимо собирать публичные данные в масштабе, распределяют свои запросы по ротирующимся IP-адресам, чтобы выглядеть как обычный трафик, а не как одна машина, бьющая в сайт. При ответственном использовании в сочетании с уважением к ограничениям скорости и robots.txt это не позволяет легитимному краулеру быть принятым за атаку.
Для более глубокого понимания того, как оставаться в рамках при масштабном обходе, полезно изучить то, как поисковые системы обнаруживают скрейперы, поскольку те же сигналы применимы к любому автоматическому клиенту.
Построить краулер, который ведёт себя вежливо, ротирует IP, рендерит JavaScript и обходит CAPTCHA, это большая часть работы, и ни одна из этих задач не даёт вам нужных данных. Crawlbase Crawling API обрабатывает всё это за один запрос: вы называете страницу, и он возвращает содержимое, так что вы можете сосредоточиться на логике обхода и на том, что делать с результатами. Вы получаете до 20 000 бесплатных запросов.
Наиболее активные веб-краулеры в интернете
Большая часть трафика обхода в публичном вебе исходит от небольшого набора хорошо известных ботов, связанных с крупными поисковыми системами. Эти имена вы увидите в собственных журналах сервера:
- Googlebot (Google), который фактически работает как два краулера, Googlebot Desktop и Googlebot Mobile, для настольного и мобильного поиска.
- Bingbot (Bing от Microsoft).
- Yandex Bot (Яндекс, российская поисковая система).
- Baidu Spider (Baidu, китайская поисковая система).
- Amazonbot (Amazon), используемый для идентификации веб-контента и обнаружения обратных ссылок.
- DuckDuckBot (DuckDuckGo).
- Exabot (Exalead, французская поисковая система).
- Yahoo! Slurp (Yahoo).
Помимо них, существует множество менее известных пауков, одни связаны с поисковыми системами, другие нет. Различение хороших краулеров от вредоносных ботов, реальная проблема для владельцев сайтов: плохие боты могут снижать производительность, крашить серверы или красть данные, поэтому цель управления ботами, пропускать хорошие краулеры, фильтруя вредоносный трафик, а не блокировать всё автоматическое подряд.
Создание собственного веб-краулера
Если общая поисковая система не даёт вам нужных данных в нужном расписании, создать собственный краулер, разумный путь. Цикл тот же, что описан выше: затравка, получение, разбор, извлечение ссылок, повторение, с фронтиром для управления очередью и правилами вежливости. Выбор языка за вами. Многие команды начинают на Python, другие строят краулеры на Java или других языках в зависимости от своего стека.
Если вам нужна конкретная отправная точка, вы можете создать краулер на Python или воспользоваться проработанным примером, показывающим, как построить веб-краулер на Java. В любом случае ожидайте, что большая часть инженерных усилий пойдёт не на сам цикл обхода, а на сопутствующие задачи: рендеринг JavaScript-тяжёлых страниц, ротацию IP-адресов, обработку CAPTCHA, повторные попытки при ошибках и соблюдение ограничений каждого сайта. Именно эту часть управляемый сервис обхода предназначен снять с ваших плеч, оставляя вам логику принятия решений о том, что обходить и что сохранять.
Ключевые выводы
- Краулер автоматически картирует веб. Он начинает с начальных URL, получает страницы, следует их ссылкам и повторяет, строя индекс существующего, а не просто читая одну страницу.
- Цикл, это весь движок. Затравка, получение, разбор, извлечение ссылок во фронтир, повторение. Каждый краулер, каким бы большим он ни был, строится на этом единственном цикле.
- Один движок служит многим целям. Тот же цикл обхода питает индексацию поиска, SEO-аудиты, мониторинг цен и рынков, веб-архивирование и сбор обучающих данных для ИИ.
- Обход обнаруживает, скрейпинг извлекает. Краулер составляет карту существующих страниц; скрейпер вытаскивает конкретные поля из известных страниц. Они часто работают последовательно.
- Вежливость не обсуждается. Хороший краулер соблюдает robots.txt, остаётся ниже скорости обхода и распределяет запросы, чтобы никогда не перегружать посещаемые сайты.
Часто задаваемые вопросы
Каково назначение программы-краулера?
Назначение веб-краулера, автоматически просматривать веб, обнаруживать страницы по ссылкам и собирать их содержимое для индексации или использования в других целях. Поисковые системы используют краулеры для построения индекса, по которому они ранжируют запросы, однако тот же механизм питает также SEO-аудиты, мониторинг цен, веб-архивирование и сбор обучающих данных для ИИ.
Как работает веб-краулер?
Краулер начинает с одного или нескольких начальных URL, получает каждую страницу, разбирает её и извлекает содержащиеся в ней гиперссылки. Эти ссылки помещаются в очередь, называемую фронтиром, и краулер работает через неё, получая и разбирая каждую новую страницу и добавляя найденные ссылки. Цикл повторяется непрерывно, именно так одна отправная точка может привести к охвату огромной части веба.
В чём разница между веб-краулером и веб-скрейпером?
Веб-краулер широко обнаруживает и картирует страницы, следуя ссылкам, тогда как веб-скрейпер извлекает конкретные данные из известных страниц. Обход посвящён исследованию и каталогизации существующего; скрейпинг, извлечению целевых значений из этого каталога. В традиционном конвейере краулер сначала картирует страницы, а скрейпер извлекает из них данные, хотя сегодня эти термины нередко используются как взаимозаменяемые.
Обязаны ли веб-краулеры соблюдать robots.txt?
Авторитетные краулеры, в том числе от крупных поисковых систем, читают robots.txt каждого сайта и обходят только разрешённые разделы. Этот файл, стандартный способ, которым сайт сообщает ботам, куда им можно и нельзя ходить. Его соблюдение вместе со скоростью обхода сайта, то, что отличает хорошо настроенный краулер от плохого бота, даже если ничто физически не заставляет плохо написанный краулер следовать этим правилам.
Зачем компании строить собственный веб-краулер?
Компании строят краулеры, когда общая поисковая система не даёт им конкретных нужных данных в нужной форме и по нужному расписанию. Типичные причины: мониторинг цен конкурентов, отслеживание рыночных и товарных изменений, аудит собственного сайта для SEO, архивирование контента и сборка наборов данных для аналитики или машинного обучения.
Законно ли запускать веб-краулер?
Обход публичных страниц широко практикуется, но вы несёте ответственность за то, как вы это делаете. Придерживайтесь публичных данных, читайте и соблюдайте условия обслуживания и robots.txt каждого сайта, честно идентифицируйте запросы и поддерживайте разумную скорость запросов, чтобы не нагружать чужие серверы. Управляемый сервис обхода поможет вам оставаться вежливым, регулируя и распределяя запросы, но суждение о том, что собирать, остаётся за вами.
Обходите любой сайт в масштабе, без борьбы с инфраструктурой.
Crawlbase берёт на себя прокси, отпечатки и CAPTCHA, чтобы ваша команда выпускала конвейеры данных вместо поддержки обвязки краулинга. 1 000 запросов бесплатно, без карты.
