Смена менеджера у конкурента, и ваши клиенты два месяца видели цены ниже ваших, пока вы узнали об этом из оттока.
Я привыкла за годы в аудите смотреть на любую ручную выгрузку как на ошибку ожидания: человек, который копирует цифры из чужих каталогов руками, устаёт раньше, чем рынок меняет цены.
Парсинг сайтов эту ошибку снимает, если собрать его по схеме и заранее закрыть риски. Разбираю обе части: как устроен конвейер и что проверить до запуска.
Спрос на тему устойчивый: на 01.10.2026 в поиске Дзена по запросу "парсинг сайтов" нашлось 20 материалов, охват набрали 5, у самого читаемого 25754 просмотра при дочитываниях. Цифры скромные, и это как раз повод: материала мало, а задача у рынка вечная.
Из чего состоит парсинг цен
Внутри любого парсера одна и та же последовательность, и понимание её важнее выбора языка.
Сначала вы описываете, какие страницы обходить и по какому расписанию, потом скрипт загружает HTML, потом извлекает цену по селектору или шаблону в разметке, потом проверяет и записывает результат, и только в конце что-то кому-то сообщает.
Люди обычно пишут сам обход и бросают на середине, потому что самая ценная часть находится после записи: алерт, который превращает таблицу в решение.

Скрипт пишут на Python с библиотеками запросов и разбора HTML, это стандарт индустрии. Отказ от обхода руками важен по причине усталости: ручная выгрузка делается до первого отпуска того, кто её делал, дальше таблица тихо стареет.
Расписание и вежливость к источнику
Частота обхода следует за скоростью изменения цен у конкурентов. Если каталог обновляется раз в сутки, обход чаще раза в день избыточен: вы нагружаете чужой сервер и поднимаете свой риск блокировки, не получая ни одного нового числа.
Между запросами ставят паузы, разные сайты разносят по времени, и весь обход ведёт журнал: дата, адрес страницы, код ответа, найденная цена.
Журнал это ваша страховка. Без него вы не отличите "цена не менялась" от "страница приходила пустая, и скрипт записывал старое значение". Разницу между этими двумя состояниями не видит никто, пока однажды не выяснится, что две недели решений принимались по протухшим данным.
Правовая граница: что можно, что нет
Развилка простая, если смотреть на два условия подряд. Первое: данные открыты для любого посетителя или лежат за логином и закрыты от индексации в robots.txt. Второе: есть ли в данных персональная информация.
Публичные цены с витрин собирают свободно, персональные данные и закрытые разделы не трогают без согласия владельца, потому что ответственность наступает по закону о персональных данных, и она серьёзнее любой выгоды от мониторинга.

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

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

Куда приходят алерты
Скрипт пишет в чат бота, и команда видит изменение цены сразу по мере поступления событий. Для Telegram это официальный бот-интерфейс, для MAX своя документация для разработчиков на dev.max.ru: там описано, как создать бота и отправлять сообщения через официальный интерфейс.
Алерт приходит с адресом страницы, старой и новой ценой и временем обнаружения, чтобы решение можно было принять, не открывая таблицу.
Алерт приходит с адресом страницы, старой и новой ценой и временем обнаружения, чтобы решение можно было принять, не открывая таблицу.
Чек-лист рисков перед запуском парсинга
Этот чек-лист я прогоняю перед любым обходом, и он одинаково работает для одного сайта и для двадцати. Каждый пункт проверяемый: на него можно ответить "да" или "нет", и каждое "нет" означает, что запуск откладывается.

- Все источники открыты без логина, и в их robots.txt нет запрета на обход нужных страниц: проверено сегодня, не "как помню".
- В собираемых данных нет персональной информации: отзывы с именами, профили продавцов и контакты в обход не попадают.
- Условия использования каждого источника прочитаны целиком, и прямого запрета на автоматический сбор нет.
- Расписания по разным сайтам разнесены по времени, между запросами к одному сайту стоит пауза.
- Каждый запрос пишется в журнал: дата, адрес, код ответа, найденная цена.
- Цена, не менявшаяся дольше типичного срока для этого товара, помечается в отчёте так же, как ошибка запроса.
- У каждого критичного источника есть запасной: второй сайт с той же ценой или ручная проверка по расписанию.
- Ошибка любого шага отправляет алерт, тишину скрипт не умеет: проверено на специально сломанном селекторе.
- Селекторы цен вынесены в отдельный конфиг, и смена вёрстки лечится правкой одной строки без пересборки скрипта.
- Первый обход запускается вручную с полным журналом, и только после чистого прогона ставится в расписание.
Мы в PROMAREN собираем такие конвейеры под ключ, от выбора источников до алертов в чат: интеграции и автоматизация сбора данных. Нам самим невыгодно брать плохой проект, поэтому до контракта мы прогоняем тот же чек-лист по вашим источникам, и если источник закрыт, говорим об этом первым.
Частые вопросы про парсинг цен
Законно ли делать парсинг сайтов для мониторинга цен?
Публичные цены с открытых витрин собирать допустимо, потому что это обезличенная информация, доступная любому посетителю сайта. Ограничения начинаются там, где данные лежат за логином, закрыты от индексации или содержат персональную информацию: такие страницы без согласия владельца не обходят, и никакая бизнес-цель этого не перекрывает.
Как часто нужно обходить страницы конкурентов?
Частоту задаёт скорость изменения цен: если каталог конкурента обновляется раз в сутки, обход чаще раза в день даёт мусорную нагрузку и повышает риск блокировки. Паузы между запросами и разнос расписаний по сайтам держат нагрузку на каждый источник низкой, а ценность данных не снижают.
Почему цены в таблице не меняются неделями?
Это признак тихой блокировки: сайт отдаёт код успеха, но прикрытые данные, и скрипт послушно записывает старое значение. Лечится журналом с кодами ответов и правилом, по которому застывшая цена помечается так же громко, как ошибка запроса.
Куда отправлять алерты об изменении цен?
В чат бота, который команда и так читает: скрипт пишет сообщение с адресом страницы, старой и новой ценой. Для Telegram и MAX есть официальные интерфейсы для ботов, и отправка через них занимает в скрипте несколько строк.
Что проверить прямо сегодня
Если парсинга у вас ещё нет, начните с одного источника и пяти товаров: опишите страницы, запустите один обход вручную и посмотрите на журнал.
Если парсинг уже работает, откройте таблицу и найдите самую длинную серию одинаковых цен, потом сверьте две из них с сайтом руками: это самая дешёвая проверка на тихую блокировку, и она занимает десять минут.
Что вы мониторите сейчас: цены конкурентов, наличие товара или ставки подрядчиков? Напишите, и я разберу схему под ваш случай.
Новые разборы выходят в моём канале: t.me/promaren.
Автоматизация воронок продаж
Лид от комментария до оплаты без ручного менеджера, запуск за 10–14 дней
Первоисточники
Частые вопросы
Законно ли делать парсинг сайтов для мониторинга цен?
Публичные цены с открытых витрин собирать допустимо, потому что это обезличенная информация, доступная любому посетителю сайта.
Как часто нужно обходить страницы конкурентов?
Частоту задаёт скорость изменения цен: если каталог конкурента обновляется раз в сутки, обход чаще раза в день даёт мусорную нагрузку и повышает риск блокировки. Паузы между запросами и разнос расписаний по сайтам держат нагрузку на каждый источник низкой, а ценность данных не снижают.
Почему цены в таблице не меняются неделями?
Это признак тихой блокировки: сайт отдаёт код успеха, но прикрытые данные, и скрипт послушно записывает старое значение. Лечится журналом с кодами ответов и правилом, по которому застывшая цена помечается так же громко, как ошибка запроса.
Куда отправлять алерты об изменении цен?
В чат бота, который команда и так читает: скрипт пишет сообщение с адресом страницы, старой и новой ценой. Для Telegram и MAX есть официальные интерфейсы для ботов, и отправка через них занимает в скрипте несколько строк.

Марина Погодина, основатель PROMAREN
17 лет в ИТ и управлении технологическими рисками, из них 14 лет в аудите ИТ и внутреннем контроле. Более 60 аудитов ИТ и информационной безопасности.






