Скрапинг, парсинг и краулинг — в чём отличия?

Скрапинг, парсинг и краулинг: разбираем, чем отличаются эти процессы, как они связаны и почему термины постоянно путают.

КP
Команда Parsing.agency
Сбор данных под задачи бизнеса
Опубликовано: 5 мая 2025

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

Если совсем коротко:

  • Краулингнаходит страницы (ходит по ссылкам).
  • Скрапингзабирает нужные данные со страницы.
  • Парсингразбирает сырой текст/разметку в удобную структуру.

Парсинг (parsing)

Парсинг — это разбор данных по определённым правилам и превращение их из «сырого» вида в структурированный.

Слово пришло из computer science, где парсер — это компонент, который читает последовательность символов (например, исходный код программы, JSON, XML или HTML) и строит из неё структуру, понятную машине: дерево, объект, набор полей.

Простой пример. У нас есть строка HTML:

html
<div class="price">1 299 ₽</div>

Парсер превращает это в дерево элементов (DOM), по которому можно «ходить» и спрашивать: «дай мне содержимое элемента с классом price». На выходе мы получаем уже не строку символов, а понятное значение 1 299 ₽, из которого дальше можно вытащить число 1299.

Важно: парсинг сам по себе ничего не скачивает из интернета. Он работает с уже имеющимся текстом. Распарсить можно локальный файл, ответ API или строку, которую вам прислали в сообщении. Парсинг — это про структуру, а не про источник.


Скрапинг (scraping)

Скрапинг (web scraping) — это извлечение конкретных данных с веб-страниц.

Скрапер делает две вещи:

  1. Скачивает страницу (отправляет HTTP-запрос и получает HTML).
  2. Достаёт из неё нужные данные — цены, заголовки, контакты, отзывы.

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

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


Краулинг (crawling)

Краулинг — это систематический обход страниц по ссылкам.

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

Самый известный пример краулеров — поисковые системы. Боты Google и Яндекса постоянно обходят интернет, чтобы знать, какие страницы вообще существуют, и проиндексировать их.

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


Как всё связано

Удобнее всего представить это как конвейер:

Конвейер сбора данных: краулинг находит страницы обходом по ссылкам, скрапинг загружает HTML и достаёт нужные данные, парсинг разбирает их в структуру — дерево и готовые поля

  • Краулинг отвечает на вопрос «какие страницы обрабатывать?»
  • Скрапинг«что с этих страниц забрать?»
  • Парсинг«как превратить разметку в данные?»

Можно делать парсинг без скрапинга (разобрать готовый файл). Можно делать скрапинг без полноценного краулинга (когда список страниц уже известен). А краулинг почти всегда идёт в связке со скрапингом — иначе обход страниц бессмысленен.


Про терминологию: почему в русском «парсинг» — это часто про скрапинг

Здесь кроется главная путаница русскоязычной сферы.

В английском языке разделение довольно чёткое: процесс сбора данных с сайтов называют web scraping, а parsing — это именно технический разбор разметки. В русском же языке исторически прижилось слово «парсинг» как общее название для всего процесса сбора данных с сайтов. Говорят «парсинг сайтов», «спарсить каталог», «написать парсер для маркетплейса» — и почти всегда имеют в виду именно скрапинг.

Почему так вышло? Слово «парсинг» появилось в русскоязычной среде разработчиков раньше и звучало привычнее, его подхватили на форумах и в статьях, и оно «склеилось» со всей задачей целиком. «Скрапинг» же пришёл позже и до сих пор многим кажется менее понятным.

Но строго говоря, это не совсем точно. Парсинг — это лишь один из этапов скрапинга, а именно разбор уже скачанной разметки. Когда человек говорит «я парсю сайт», на самом деле он:

  1. скачивает страницы (это ближе к скрапингу/краулингу),
  2. достаёт нужные данные (скрапинг),
  3. и только внутри второго шага реально парсит HTML.

То есть народное «парсинг» описывает весь процесс, хотя технический термин покрывает только его маленькую часть. Это не ошибка в бытовом смысле — язык живёт своими правилами, и в разговоре вас прекрасно поймут. Но если вы читаете англоязычную документацию или общаетесь с зарубежными коллегами, держите в голове: их parsing ≠ наш «парсинг», а ваш «парсинг сайта» по смыслу — это их scraping.


Проблемы парсинга

Парсинг кажется простым, пока разметка аккуратная. На практике мешает следующее.

  • «Битый» HTML. Браузеры очень снисходительны: они отображают страницу, даже если теги не закрыты или вложены неправильно. Парсеру же приходится как-то угадывать структуру, и результат может оказаться неожиданным.
  • Изменчивая структура. Вы написали правило «бери цену из элемента с классом price», а сайт через месяц переименовал класс — и всё ломается. Парсинг, завязанный на конкретную вёрстку, очень хрупок.
  • Динамический контент. Многие сайты подгружают данные уже после загрузки страницы, через JavaScript. В исходном HTML нужных данных просто нет — парсить нечего, пока страницу не «отрендерить» в настоящем браузере.
  • Кодировки. Неправильно определённая кодировка превращает текст в «кракозябры», и числа/буквы вытаскиваются с ошибками.
  • Неоднозначность. Иногда одинаково размечены разные по смыслу данные, и без дополнительных правил их сложно различить.

Проблемы скрапинга

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

  • Защита от ботов. Сайты используют CAPTCHA, ограничение частоты запросов (rate limiting), блокировку по IP, анализ поведения. Слишком активный скрапер быстро ловит бан.
  • JavaScript-сайты. Если данные подгружаются скриптами, обычного запроса мало — нужен «безголовый» браузер (headless browser), который реально выполнит JS. Это сильно медленнее и тяжелее.
  • Хрупкость и поддержка. Сайт меняет вёрстку — скрапер ломается. Любой скрапер требует постоянного сопровождения, это не «написал и забыл».
  • Ловушки (honeypots). Иногда на страницы специально добавляют невидимые для человека ссылки или поля. Человек их не замечает, а бот переходит по ним — и выдаёт себя.
  • Правовые и этические вопросы. Условия использования сайта (ToS), авторские права, персональные данные, нагрузка на чужие серверы. Технически возможное далеко не всегда допустимо юридически — это всегда стоит проверять отдельно.
  • robots.txt. Файл, в котором сайт указывает, что можно и что нельзя обходить ботам. Его уважают как минимум из вежливости (а часто и по юридическим/этическим соображениям).

Проблемы краулинга

У краулинга свои, особенные сложности — они возникают именно из-за того, что бот сам решает, по каким ссылкам идти, и масштаб может стать огромным.

Зацикливание и «ловушки для краулеров»

Это, пожалуй, самая характерная проблема краулинга.

  • Циклы по ссылкам. Страница A ссылается на B, B ссылается на C, а C снова на A. Если краулер не помнит, где уже был, он будет бесконечно ходить по кругу. Базовое решение — вести список уже посещённых адресов (URL) и не заходить туда повторно.
  • Бесконечные «ловушки» (crawler traps). Хуже простых циклов те случаи, где сайт генерирует бесконечно новые адреса. Классические примеры:
  • Календарь. Виджет с кнопкой «следующий месяц» может вести в бесконечность: краулер будет кликать «вперёд» в 2099-й год и дальше.
  • Бесконечные фильтры и сортировки. Каждое сочетание параметров в адресе (?sort=price&color=red&page=2…) выглядит как новая страница, хотя контент почти тот же. Комбинаций — астрономически много.
  • Идентификаторы сессий в адресе. Если сайт подставляет в URL уникальный session id, то одна и та же страница каждый раз выглядит как новая, и список «посещённых» не спасает — адреса-то разные.
  • Дубликаты страниц. Один и тот же контент доступен по нескольким адресам (со слешем и без, с www и без, с разными параметрами). Без нормализации адресов краулер тратит силы на одно и то же по много раз.

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

Масштаб и вежливость

  • Объём. Интернет (и даже один крупный сайт) огромен. Нужно решать, что обходить в первую очередь (приоритизация), и не пытаться скачать всё подряд.
  • Нагрузка на сервер. Слишком частые запросы могут «положить» чужой сайт. Поэтому вводят задержки между запросами (crawl delay) и ограничивают параллельность — это называют «вежливым» краулингом.
  • Свежесть данных. Страницы меняются. Приходится решать, как часто возвращаться и перепроверять уже обойдённое, чтобы данные не устаревали.
  • Невидимые страницы. Часть контента не достижима простым переходом по ссылкам (за формами, за авторизацией, в «глубоком вебе») — туда краулер сам по себе не попадёт.

Короткое резюме

Процесс Что делает Главный вопрос Типичная боль
Краулинг Обходит страницы по ссылкам «Какие страницы обрабатывать?» Зацикливание, ловушки, масштаб, нагрузка
Скрапинг Скачивает страницу и достаёт данные «Что забрать со страницы?» Защита от ботов, JS-сайты, хрупкость, право
Парсинг Разбирает разметку в структуру «Как превратить HTML в данные?» «Битый» HTML, изменчивая вёрстка, кодировки

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