ГлавнаяБлог → Парсер по расписанию

Парсер остатков и цен по расписанию: почему платят не за скрипт, а за надёжность

Скрипт, который забирает остатки поставщика, пишется за день. Живёт он в среднем три месяца — до первого редизайна источника. Вся ценность работы находится в том, кто чинит его на четвёртый месяц и как быстро вы узнаете, что чинить пора.

18 июля 2026 · 8 минут чтения

Заказчику нужен не парсер

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

Разница практическая. Скрипт — это разовый артефакт: написали, запустили, получили файл. Данные с чужого сайта — это поток, который зависит от того, кто вам ничего не обещал. Источник меняет вёрстку, добавляет защиту, переносит каталог, уходит на профилактику. Никто не предупредит.

Ориентир по стоимости владения. Написание парсера — примерно треть суммарных затрат за первый год. Остальное — поддержка, починки при изменениях источника и мониторинг. Если предложение состоит только из первой трети, оставшиеся две вы всё равно оплатите, просто позже и, скорее всего, дороже.

Почему парсеры ломаются

ПричинаКак проявляетсяСложность починки
Изменилась вёрсткаДанные пустые или сдвинулись по колонкамНизкая: 1–4 часа, поправить селекторы
Появилась защита от ботовВместо страницы приходит проверка или капчаСредняя или высокая, иногда нерешаемо без договорённости с источником
Данные отдаются через JavaScriptСтраница загружается, но нужных значений в ней нетСредняя: либо браузерный режим, либо внутренний запрос к API страницы
Сменилась пагинацияСобирается только первая страница, объём тихо упалНизкая, но опасная: без контроля количества строк незаметна
Блокировка по IPРаботало, потом резко перестало отвечатьСредняя: снижение частоты, распределение запросов
Источник недоступенОшибки соединения, таймаутыНе чинится, но должно корректно переживаться и повторяться

Самая коварная строка здесь — пагинация. Остальные ломают процесс громко, а эта тихо: данные приходят, отчёт собирается, просто вместо 4 000 позиций в нём 200. Заметить можно только контролем объёма.

Что отличает скрипт от сервиса

Пять признаков. Без них у вас код, а не работающий процесс.

1. Расписание и автозапуск

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

2. Мониторинг «данные не пришли — сообщи»

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

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

3. История изменений, а не только текущий срез

Перезапись таблицы «последними данными» стирает самое ценное. По истории видно, что позиция уходила в ноль трижды за месяц, что поставщик поднял цену на 8% двумя шагами, что конкурент снижает цену по пятницам. Текущий срез не отвечает ни на один из этих вопросов, а хранение истории стоит примерно ничего.

4. Понятная выгрузка

Результат должен попадать туда, где с ним работают: Google Таблица, Excel, база, загрузка в 1С или МойСклад. Файл в формате, который надо чистить руками перед каждым использованием, экономию не даёт.

5. Обработка частичных сбоев

Из 500 карточек 12 не открылись. Правильное поведение: собрать 488, повторить 12, отметить их отдельно и сообщить. Неправильное — упасть целиком или молча выдать 488 как полный результат.

Уведомления по условию: где на самом деле деньги

Сбор данных сам по себе ценности не создаёт. Её создаёт скорость реакции — то, насколько быстро вы узнали и успели что-то сделать.

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

Правовая и этическая рамка

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

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

Когда парсинг не нужен

Самый недооценённый совет в теме: сначала спросите источник.

У многих поставщиков есть выгрузка, о которой нигде не написано — YML-фид, ссылка на CSV, доступ к API для партнёров, обновляемый прайс по почте. У маркетплейсов и крупных площадок официальный API есть почти всегда. Любой из этих вариантов надёжнее парсинга по всем параметрам: формат стабилен, изменения анонсируются, нагрузка легальна, данные полнее.

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

Сколько это стоит

ЗадачаЦенаСрок
Разовая выгрузка одного источникаот 8 000 ₽1–2 дня
Парсер по расписанию + уведомления по условию25 000 – 60 000 ₽3–10 дней
Мониторинг нескольких источников со сведением в один отчётот 60 000 ₽2–4 недели
Сопровождение: мониторинг, починка при смене вёрсткиот 7 000 ₽/мес

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

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

Вопросы, которые задают чаще всего

Сколько стоит парсер сайта на заказ?

Разовая выгрузка одного источника — от 8 000 ₽. Парсер по расписанию с уведомлениями по условию — 25 000–60 000 ₽ в зависимости от сложности источника. Мониторинг нескольких источников со сведением в один отчёт — от 60 000 ₽. Сопровождение с починкой при смене вёрстки — от 7 000 ₽ в месяц.

Почему парсеры ломаются?

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

Зачем платить за сопровождение парсера?

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

Законно ли парсить сайты?

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

Когда парсинг не нужен?

Когда у источника есть официальный API, YML-фид, партнёрский прайс или выгрузка по запросу. Это надёжнее парсинга по всем параметрам. Первый шаг — написать поставщику и спросить. Это бесплатно и примерно в трети случаев закрывает задачу целиком.

Как часто можно запускать сбор данных?

Для остатков поставщика обычно достаточно 1–4 раз в сутки, для цен конкурентов — раз в день, для объявлений и дефицитных позиций — каждые 10–30 минут. Верхнюю границу задаёт не техника, а корректность: частота должна оставаться сопоставимой с нагрузкой от обычных посетителей, иначе включится блокировка, и это будет обоснованно.

Опишите задачу — назовём цену и срок

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