212 lines
7.3 KiB
Markdown
212 lines
7.3 KiB
Markdown
# 🔍 Morele.net Parser
|
||
|
||
Профессиональный парсер для автоматического сбора товаров с сайта morele.net с переводом на украинский язык и генерацией фида для Prom.ua.
|
||
|
||
## 🚀 Возможности
|
||
|
||
- **Автоматический парсинг товаров** из указанных категорий
|
||
- **Перевод на украинский язык** с кешированием
|
||
- **Загрузка и оптимизация изображений**
|
||
- **Генерация YML фида** для Prom.ua
|
||
- **Простая веб-админка** для управления
|
||
- **Модульная архитектура** для лёгкого расширения
|
||
- **Поддержка нескольких переводчиков** (Google Translate, DeepL, LibreTranslate)
|
||
- **Уведомления в Telegram**
|
||
|
||
## 📋 Требования
|
||
|
||
- Python 3.8+
|
||
- SQLite (по умолчанию) или MySQL
|
||
- Доступ к интернету
|
||
- API ключи для переводчиков (опционально)
|
||
|
||
## 🛠 Установка
|
||
|
||
1. **Клонируйте проект или создайте структуру папок:**
|
||
|
||
```
|
||
morele_parser/
|
||
├── main.py
|
||
├── config.py
|
||
├── requirements.txt
|
||
├── config.yaml (создается автоматически)
|
||
├── modules/
|
||
│ ├── __init__.py
|
||
│ ├── parser.py
|
||
│ ├── translator.py
|
||
│ ├── image_downloader.py
|
||
│ ├── feed_generator.py
|
||
│ ├── storage.py
|
||
│ └── admin.py
|
||
├── data/
|
||
├── images/
|
||
├── feeds/
|
||
└── logs/
|
||
```
|
||
|
||
2. **Установите зависимости:**
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
3. **Создайте файл конфигурации:**
|
||
|
||
При первом запуске файл `config.yaml` создастся автоматически с настройками по умолчанию.
|
||
|
||
## ⚙️ Настройка
|
||
|
||
Отредактируйте файл `config.yaml`:
|
||
|
||
```yaml
|
||
# Основные настройки перевода
|
||
translation:
|
||
service: 'google' # google, deepl, libretranslate
|
||
google:
|
||
api_key: '' # Можно оставить пустым для бесплатной версии
|
||
|
||
# Настройки фида
|
||
feed:
|
||
shop_name: 'Ваш магазин'
|
||
company: 'Ваша компания'
|
||
images_base_url: 'https://yoursite.com/' # URL для изображений
|
||
margin_percent: 10 # Наценка в процентах
|
||
|
||
# Уведомления в Telegram (опционально)
|
||
telegram:
|
||
enabled: true
|
||
bot_token: 'YOUR_BOT_TOKEN'
|
||
chat_id: 'YOUR_CHAT_ID'
|
||
```
|
||
|
||
## 🎯 Использование
|
||
|
||
### Запуск веб-админки
|
||
|
||
```bash
|
||
python main.py --admin
|
||
```
|
||
|
||
Откройте http://127.0.0.1:5000 в браузере.
|
||
|
||
### Добавление категорий
|
||
|
||
1. Откройте админ-панель
|
||
2. Перейдите в раздел "Категории"
|
||
3. Добавьте URL категорий с morele.net
|
||
|
||
Пример URL категории:
|
||
```
|
||
https://www.morele.net/kategoria/laptopy-421/
|
||
```
|
||
|
||
### Запуск парсинга
|
||
|
||
```bash
|
||
# Разовый запуск
|
||
python main.py --parse
|
||
|
||
# Генерация только фида
|
||
python main.py --generate-feed
|
||
```
|
||
|
||
### Настройка автоматического запуска (cron)
|
||
|
||
Добавьте в crontab для ежедневного запуска в 02:00:
|
||
|
||
```bash
|
||
0 2 * * * /usr/bin/python3 /path/to/morele_parser/main.py --parse
|
||
```
|
||
|
||
## 📊 Структура данных
|
||
|
||
Парсер собирает для каждого товара:
|
||
|
||
- Название (оригинал + перевод)
|
||
- Цену в PLN
|
||
- Описание (оригинал + перевод)
|
||
- Характеристики (оригинал + перевод)
|
||
- Категорию
|
||
- Наличие
|
||
- Изображения (скачивает локально)
|
||
- Бренд, модель, артикул
|
||
- Ссылку на товар
|
||
|
||
## 🔄 YML фид для Prom.ua
|
||
|
||
Парсер автоматически генерирует YML фид с:
|
||
|
||
- Переведёнными названиями и описаниями
|
||
- Ценами в UAH (с актуальным курсом + наценкой)
|
||
- Локальными изображениями
|
||
- Всеми характеристиками
|
||
- Правильными категориями
|
||
|
||
Файл фида: `feeds/prom_feed.yml`
|
||
|
||
## 🔧 Расширение функциональности
|
||
|
||
### Добавление нового переводчика
|
||
|
||
1. Создайте класс, наследующий от `TranslationProvider`
|
||
2. Реализуйте метод `translate()`
|
||
3. Добавьте в `TranslationService._init_provider()`
|
||
|
||
### Добавление новых полей товара
|
||
|
||
1. Обновите `MoreleParser._parse_product_page()`
|
||
2. Добавьте поля в схему БД в `StorageManager._init_sqlite()`
|
||
3. Обновите `FeedGenerator._create_offer()` при необходимости
|
||
|
||
## 📝 Логирование
|
||
|
||
Логи сохраняются в:
|
||
- `logs/parser.log` - основные логи
|
||
- База данных - статистика парсинга
|
||
- Telegram - уведомления о результатах
|
||
|
||
## ⚠️ Важные моменты
|
||
|
||
1. **Соблюдайте robots.txt** и не перегружайте сервер запросами
|
||
2. **Используйте VPN** если необходимо для доступа к API переводчиков
|
||
3. **Настройте паузы** между запросами в конфигурации
|
||
4. **Регулярно обновляйте** курсы валют
|
||
5. **Проверяйте качество** переводов и корректируйте при необходимости
|
||
|
||
## 🐛 Решение проблем
|
||
|
||
### Ошибки перевода
|
||
- Проверьте API ключи в config.yaml
|
||
- Убедитесь в наличии интернет-соединения
|
||
- Попробуйте другой сервис перевода
|
||
|
||
### Ошибки парсинга
|
||
- Проверьте доступность morele.net
|
||
- Обновите User-Agent в конфигурации
|
||
- Увеличьте паузы между запросами
|
||
|
||
### Проблемы с изображениями
|
||
- Проверьте свободное место на диске
|
||
- Убедитесь в правильности базового URL для изображений
|
||
- Проверьте права доступа к папке images/
|
||
|
||
## 📞 Поддержка
|
||
|
||
При возникновении проблем:
|
||
|
||
1. Проверьте логи в `logs/parser.log`
|
||
2. Убедитесь в правильности конфигурации
|
||
3. Проверьте доступность внешних сервисов
|
||
4. Обновите зависимости: `pip install -r requirements.txt --upgrade`
|
||
|
||
## 📄 Лицензия
|
||
|
||
Проект предназначен для образовательных целей. При использовании соблюдайте:
|
||
- Условия использования morele.net
|
||
- Лимиты API переводчиков
|
||
- Законодательство о парсинге данных
|
||
|
||
---
|
||
|
||
**Удачного парсинга! 🚀**
|