Python-скрейпер и система сбора данных

Заказчик
Mykola
Параметры проекта
Вариант сотрудничестваОдноразовый проект
РазделРазработка программ
Предоплатабез предоплат
Способы оплатыНаличные, Банковский перевод
Приём заявокот сегодня, 07:22 до 2026-09-02
Описание проекта
Нам нужна производственная система веб-скрейпинга, которая по расписанию раз в сутки собирает структурированные данные с 5-8 сайтов и складывает их в вид, пригодный для аналитики. Речь не про скрипт на один прогон, а про сервис, который работает без присмотра каждый день, переживает изменения вёрстки на источниках, вежливо снижает нагрузку по требованию сайта и не падает целиком, если сломался один из целевых ресурсов. Часть источников — обычный статический HTML, часть — тяжёлые SPA на JavaScript, поэтому краулер должен уверенно работать и с теми, и с другими.
Не менее важно то, что происходит после загрузки страницы. Сырой HTML нужно превращать в проверенные и очищенные от дублей записи, а цены, даты и телефоны — приводить к единым форматам ещё до попадания в базу. Хранить имеет смысл только новое или изменившееся, поэтому нужна инкрементальная логика. Сверх этого нам важна операционная прозрачность: дашборд с успешностью запусков и объёмами, уведомления при сбоях и аномалиях в данных, а также воспроизводимый деплой, который можно поднять с нуля без устных легенд.
Конкретные целевые сайты конфиденциальны и передаются по NDA после согласования условий. В отклике напишите, с какими антибот-защитами вы уже сталкивались и как удерживали парсер стабильным во времени. Полный объём работ ниже.
1. Архитектура скрейпера
— Scrapy + ротация прокси и пула User-Agent
— Playwright/Selenium для JS-сайтов
— Обход CAPTCHA (2captcha / anti-captcha)
— Rate limiting, соблюдение robots.txt
2. Пайплайн данных
— HTML в структурированный JSON
— Валидация и дедупликация
— Нормализация цен, дат, телефонов
— Хранение в PostgreSQL с проектированием схемы
— Инкрементальные обновления (только новые/изменённые записи)
3. Мониторинг и эксплуатация
— Дашборд: успешность запусков, количество записей, ошибки
— Уведомления в Slack/email при сбоях
— Деплой через Docker Compose
— Cron-расписание с логикой повторов
Целевые сайты
— Конфиденциально (NDA) — детали после соглашения
— Смесь статических и SPA-сайтов
Результат
— Исходный код с тестами
— Docker Compose конфигурация
— Миграции схемы БД
— Runbook и настройка мониторинга
Не менее важно то, что происходит после загрузки страницы. Сырой HTML нужно превращать в проверенные и очищенные от дублей записи, а цены, даты и телефоны — приводить к единым форматам ещё до попадания в базу. Хранить имеет смысл только новое или изменившееся, поэтому нужна инкрементальная логика. Сверх этого нам важна операционная прозрачность: дашборд с успешностью запусков и объёмами, уведомления при сбоях и аномалиях в данных, а также воспроизводимый деплой, который можно поднять с нуля без устных легенд.
Конкретные целевые сайты конфиденциальны и передаются по NDA после согласования условий. В отклике напишите, с какими антибот-защитами вы уже сталкивались и как удерживали парсер стабильным во времени. Полный объём работ ниже.
1. Архитектура скрейпера
— Scrapy + ротация прокси и пула User-Agent
— Playwright/Selenium для JS-сайтов
— Обход CAPTCHA (2captcha / anti-captcha)
— Rate limiting, соблюдение robots.txt
2. Пайплайн данных
— HTML в структурированный JSON
— Валидация и дедупликация
— Нормализация цен, дат, телефонов
— Хранение в PostgreSQL с проектированием схемы
— Инкрементальные обновления (только новые/изменённые записи)
3. Мониторинг и эксплуатация
— Дашборд: успешность запусков, количество записей, ошибки
— Уведомления в Slack/email при сбоях
— Деплой через Docker Compose
— Cron-расписание с логикой повторов
Целевые сайты
— Конфиденциально (NDA) — детали после соглашения
— Смесь статических и SPA-сайтов
Результат
— Исходный код с тестами
— Docker Compose конфигурация
— Миграции схемы БД
— Runbook и настройка мониторинга