Клиент — агентство зарубежной недвижимости. Объекты публиковались на 4 застройщикских сайтах; менеджеры вручную копировали в AmoCRM — 20–30 мин на объект, ошибки в цене и метражe.
Задача: Python-парсер — обход catalog pages → извлечение параметров (цена, м², комнаты, район, фото URLs) → нормализация → create/update lead в AmoCRM по external_id. Расписание + diff «новый / изменилась цена».
Реализация:
• configurable spiders per developer site (selectors in YAML);
• download images optional → S3, link in CRM;
• normalize currency, area units, phone format;
• AmoCRM API: duplicate check by external_id;
• log: created / updated / skipped / error;
• Telegram alert on parser failure or captcha;
• polite crawling: delay, session, retry.
Стек: Python 3.11, Scrapy или requests+BS4, PostgreSQL staging, AmoCRM API, S3, Docker cron. Приёмка: 100 objects sync, field accuracy vs manual audit.
Итог: объект в CRM за минуты; менеджеры работают с лидами, не с копипастой. NDA: агентство не публикуется.