first commit
This commit is contained in:
211
README.md
Normal file
211
README.md
Normal 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 переводчиков
|
||||
- Законодательство о парсинге данных
|
||||
|
||||
---
|
||||
|
||||
**Удачного парсинга! 🚀**
|
||||
Reference in New Issue
Block a user