Разработка парсера цен для Telegram (анализ прайс-листов поставщиков)
Разработать автоматизированное решение для извлечения цен и наименований товаров из текстовых прайс-листов, которые наши поставщики предоставляют через Telegram, и последующего выбора наилучшего предложения по цене.
1. Прием данных:
• Формат прайс-листов: Поставщики предоставляют прайс-листы в виде текстовых сообщений в Telegram. Прайс-листы имеют неструктурированный формат (не являются Excel-таблицами). Формат может варьироваться, но в основном представляет собой текст со списками товаров и ценами.
* Реализовать Telegram-бота, который будет принимать сообщения с прайс-листами.
* Альтернативно, предусмотреть возможность использования Telegram API для получения сообщений.
2. Парсинг данных:
• Технология: Использовать Python в качестве основного языка программирования.
• Регулярные выражения (regex): Использовать regex для поиска и извлечения информации о ценах и наименованиях товаров.
• Структурирование данных: Преобразовать извлеченные данные в структурированный формат (например, JSON или Python словари) для дальнейшей обработки.
• Гибкость: Парсер должен быть достаточно гибким, чтобы обрабатывать различные форматы прайс-листов (с учетом возможных вариаций в разделителях, названиях товаров, форматах цен и т.д.).
• Обработка ошибок: Предусмотреть механизм обработки ошибок в случае, если парсер не сможет извлечь данные из прайс-листа (например, логирование или сообщение об ошибке).
3. Сравнение цен:
• Алгоритм: Разработать алгоритм для сравнения цен на один и тот же товар от разных поставщиков.
• Сопоставление товаров: Предусмотреть механизм для сопоставления товаров, даже если их названия у разных поставщиков немного отличаются.
• Выбор наилучшего предложения: Алгоритм должен выбрать предложение с наименьшей ценой на каждый товар.
4. Вывод результатов:
• Формат: Результаты должны быть представлены в читаемом и понятном формате (например, таблица или список).
• Уведомление: Отправлять результаты (список лучших предложений) в Telegram в виде сообщения (бота или пользователю).
• Возможности:
* Предусмотреть возможность вывода информации о товаре и поставщике.
* Предусмотреть возможность экспорта результатов в файл (например, CSV).
5. Технические требования:
• Язык программирования: Python (версия 3.7 и выше).
• Библиотеки: telebot или python-telegram-bot, requests, re, json (или другие по необходимости).
• Документация: Разработчик должен предоставить документацию по работе с разработанным решением, включая инструкции по развертыванию и использованию.
• Чистый код: Код должен быть чистым, хорошо структурированным и документированным (включая комментарии).
• Масштабируемость: Разработанное решение должно быть масштабируемым, чтобы в будущем можно было добавлять поддержку новых форматов прайс-листов и функциональность.
• Тестирование: Парсер должен быть протестирован на нескольких примерах прайс-листов, чтобы убедиться в его корректной работе.
• Git: Использовать систему контроля версий Git для управления кодом. Дополнительные требования:
• Предусмотреть возможность добавления новых поставщиков.
• Предусмотреть возможность фильтрации товаров по категориям.
• Предусмотреть возможность ручного вмешательства в результаты (если это необходимо).
1. Прием данных:
• Формат прайс-листов: Поставщики предоставляют прайс-листы в виде текстовых сообщений в Telegram. Прайс-листы имеют неструктурированный формат (не являются Excel-таблицами). Формат может варьироваться, но в основном представляет собой текст со списками товаров и ценами.
* Реализовать Telegram-бота, который будет принимать сообщения с прайс-листами.
* Альтернативно, предусмотреть возможность использования Telegram API для получения сообщений.
2. Парсинг данных:
• Технология: Использовать Python в качестве основного языка программирования.
• Регулярные выражения (regex): Использовать regex для поиска и извлечения информации о ценах и наименованиях товаров.
• Структурирование данных: Преобразовать извлеченные данные в структурированный формат (например, JSON или Python словари) для дальнейшей обработки.
• Гибкость: Парсер должен быть достаточно гибким, чтобы обрабатывать различные форматы прайс-листов (с учетом возможных вариаций в разделителях, названиях товаров, форматах цен и т.д.).
• Обработка ошибок: Предусмотреть механизм обработки ошибок в случае, если парсер не сможет извлечь данные из прайс-листа (например, логирование или сообщение об ошибке).
3. Сравнение цен:
• Алгоритм: Разработать алгоритм для сравнения цен на один и тот же товар от разных поставщиков.
• Сопоставление товаров: Предусмотреть механизм для сопоставления товаров, даже если их названия у разных поставщиков немного отличаются.
• Выбор наилучшего предложения: Алгоритм должен выбрать предложение с наименьшей ценой на каждый товар.
4. Вывод результатов:
• Формат: Результаты должны быть представлены в читаемом и понятном формате (например, таблица или список).
• Уведомление: Отправлять результаты (список лучших предложений) в Telegram в виде сообщения (бота или пользователю).
• Возможности:
* Предусмотреть возможность вывода информации о товаре и поставщике.
* Предусмотреть возможность экспорта результатов в файл (например, CSV).
5. Технические требования:
• Язык программирования: Python (версия 3.7 и выше).
• Библиотеки: telebot или python-telegram-bot, requests, re, json (или другие по необходимости).
• Документация: Разработчик должен предоставить документацию по работе с разработанным решением, включая инструкции по развертыванию и использованию.
• Чистый код: Код должен быть чистым, хорошо структурированным и документированным (включая комментарии).
• Масштабируемость: Разработанное решение должно быть масштабируемым, чтобы в будущем можно было добавлять поддержку новых форматов прайс-листов и функциональность.
• Тестирование: Парсер должен быть протестирован на нескольких примерах прайс-листов, чтобы убедиться в его корректной работе.
• Git: Использовать систему контроля версий Git для управления кодом. Дополнительные требования:
• Предусмотреть возможность добавления новых поставщиков.
• Предусмотреть возможность фильтрации товаров по категориям.
• Предусмотреть возможность ручного вмешательства в результаты (если это необходимо).