Задача
Для сервиса по поиску недвижимости нужно постоянно собирать данные с сайтов конкурентов, чтобы предлагать пользователям актуальную информацию.
Нужно было разработать микросервис на Django, который собирал бы квартиры, жилые комплексы и планировки с сайта-конкурента.
Характеристики проекта
Продолжительность - 1.5 месяца
Бюджет - 4 000 $
Команда - 1 человек
Особенности проекта
1. Собранную информацию нужно “очистить”, чтобы не был заметен факт парсинга
2. Сайт-донор имеет необычную структуру: у сущностей нет сквозных идентификаторов, информация представлена на трех языках, а объем информации на разных языках может отличаться
3. В сайт встроена защита от парсинга
Решение
Мы разработали Django приложение, которое периодически обходит сайт-донор и обновляет данные. Так как сайт очень большой, парсинг был сегментирован по сущностям. Каждым сегментом можно управлять через админ-панель:
Очень много контента на сайте спрятано за интерактивными элементами: попапы, карусели и ссылки на внешние ресурсы. Чтобы решить эту проблему мы использовали Selenium – инструмент для автоматизированного управления браузерами. С его помощью мы эмулировали действия пользователя на сайте и доставали скрытый контент. Использование selenium так же решило проблему с защитой от парсинга сайта - при наличии кликов по странице программа не определялась как робот.
Собранные данные проходили обработку через два дополнительных сервиса: рерайтер и переводчик. Так как контент на сайте-доноре отличается в зависимости языка, возникают ситуации, когда поле в объекте заполнено только на одном языке. После парсинга мы проводим перекрестную проверку между языковыми версиям и, если это возможно, заполняем пробелы в одном языке с помощью контента из другого, переводя текст в нужный язык.
После этого, с помощью нейросети, переписывались чувствительные к авторскому праву тексты. Например, описание от продавца. Для рерайтинга был использован внешний сервис из маркетплейса RapidAPI
Внедрение
Для удобного использования, мы сделали несколько улучшений в админ панель:
Добавили множество фильтров и колонок:
Сделали кастомный экран с настройками:
И подготовили подробные гайды по развертыванию сервиса в инфраструктуре клиента.
Итоги
Проект был сделан точно в срок и передан клиенту. Микросервис постоянно работает в ИТ инфраструктуре заказчика и обновляет данные о недвижимости. В дальнейшем мы будем создавать подобные сервисы и для других источников.