Клиентский проект
AtomPk Grabber - выгрузка списка товаров в CSV по требованию

Технологии
Услуги
- →Анализ структуры сайта и разметка полей для сбора
- →Разработка граббера на Python с BeautifulSoup
- →Выгрузка собранного списка товаров в CSV
- →Упаковка в исполняемый файл для пользователя без технического бэкграунда
Результаты
- ✓Исполняемый файл, установка Python не требуется
- ✓CSV со списком товаров, пересобираемый при каждом запуске
- ✓Повторяемый процесс сбора, который партнёр запускает сам
Задача
Партнёр работал со списком товаров, опубликованным на сайте, и ему регулярно нужен был этот список в CSV. Собирали вручную: долго, легко ошибиться и невозможно повторить одинаково. Каталог при этом меняется, так что речь шла не про разовую выгрузку, а про работу, которая возвращается каждый раз.
Рассмотренные варианты
- Собирать дальше руками - отклонено. Объём работы растёт вместе с каталогом, и при каждом обновлении всё начинается заново.
- Python-скрипт, запускаемый из терминала - отклонено. Работать будет, но между пользователем и CSV встают установка Python и командная строка.
- Тот же скрипт, скомпилированный в исполняемый файл - выбрано. Логика та же, но запускается двойным кликом на машине, где никаких инструментов разработчика нет.
Решение
Сделать граббер на Python с разбором через BeautifulSoup и отдать его скомпилированным исполняемым файлом, а не исходником. Решающим было то, кто им пользуется: человек, которому нужен CSV, - не тот, кто будет поднимать окружение Python, поэтому формат поставки весил не меньше, чем сам парсинг.

Реализация
Граббер запрашивает страницы каталога, разбирает разметку через BeautifulSoup, вытаскивает поля товаров из структуры страницы и пишет их в CSV. Повторный запуск заново обходит сайт, поэтому свежий файл отражает текущее состояние каталога, а не подлатанную старую копию.
Демо
Проход граббера от запуска до готового CSV.
Результат
Сбор списка перестал быть ручной работой. Партнёр запускает исполняемый файл, когда нужен CSV, и получает одинаковый результат каждый раз - без разработчика в процессе и без терминала.
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.
Записаться на 30-минутный звонок