first commit

This commit is contained in:
2025-06-18 21:22:55 +03:00
commit ad4d215f04
22 changed files with 3762 additions and 0 deletions

211
README.md Normal file
View File

@@ -0,0 +1,211 @@
# 🔍 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 переводчиков
- Законодательство о парсинге данных
---
**Удачного парсинга! 🚀**