Files
morele_scraper/README.md
2025-06-18 21:22:55 +03:00

212 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔍 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 переводчиков
- Законодательство о парсинге данных
---
**Удачного парсинга! 🚀**