firefeed-scraper
Описание
Вебскраппер контента FireFeed на базе Scrapy
Языки
- Python100%
5 месяцев назад
5 месяцев назад
5 месяцев назад
5 месяцев назад
5 месяцев назад
5 месяцев назад
5 месяцев назад
README.md
Firefeed Scraper
Веб-скраппер на базе Scrapy для автоматического сбора новостей с сайтов мировых СМИ (Reuters, BBC). Проект разработан для надежной работы в production-среде с поддержкой мониторинга, логирования и автоматического перезапуска.
Возможности
- Многопоточный парсинг новостей с нескольких источников
- Автоматическое управление скоростью запросов для соблюдения robots.txt
- Batch-обработка данных для оптимизации производительности БД
- Мониторинг производительности и health checks
- Расширенное логирование с ротацией файлов
- Автоматический перезапуск через systemd timer
- Фильтрация дубликатов и старых статей
- Поддержка PostgreSQL с асинхронными соединениями
Требования
- Python 3.8+
- PostgreSQL 12+
- Linux (рекомендуется Ubuntu/Debian)
Установка
1. Подготовка системы
2. Настройка базы данных
3. Установка Python зависимостей
4. Конфигурация
Скопируйте и настройте конфигурационные файлы:
5. Установка systemd сервисов
Конфигурация
config.yaml
Основные настройки проекта:
Мониторинг
Проверка статуса
Health checks
Система автоматически проверяет:
- Доступность сетевых ресурсов
- Соединение с базой данных
- Наличие необходимых директорий
Метрики производительности
- Время выполнения
- Использование памяти
- Скорость обработки запросов
- Статистика по источникам
Управление
Ручной запуск
Управление сервисом
Структура проекта
firefeed_scraper/
├── spiders/ # Паук для парсинга
│ ├── base_spider.py # Базовый класс паука
│ ├── reuters_spider.py # Паук для Reuters
│ └── bbc_spider.py # Паук для BBC
├── middlewares.py # Промежуточное ПО Scrapy
├── pipelines.py # Обработка элементов
├── items.py # Определение элементов данных
├── settings.py # Настройки Scrapy
├── config.py # Загрузка конфигурации
├── database.py # Работа с БД
├── utils.py # Вспомогательные функции
├── logging_config.py # Настройка логирования
├── health_check.py # Проверки здоровья
└── monitoring.py # Мониторинг производительности
systemd/ # Файлы systemd
run_scraper.py # Главный скрипт запуска
config.yaml # Конфигурация проекта
requirements.txt # Python зависимости
scrapy.cfg # Конфигурация Scrapy
README.md # Документация
Безопасность
- Соблюдение robots.txt всех сайтов
- Rate limiting для предотвращения блокировки
- Работа от системного пользователя без shell
- Ограничение ресурсов через systemd
- Логирование всех операций
Производительность
- Асинхронная обработка запросов
- Batch-вставка в базу данных
- Кеширование соединений
- Оптимизированные селекторы CSS/XPath
- Автоматическое управление памятью
Логирование
Логи сохраняются в директорию :logs/
- основные логи работыscraper.log- ошибкиerrors.log- предупрежденияwarnings.log- состояние скраппингаcrawl_state.json
Contributing
- Fork the project
- Create your feature branch (
)git checkout -b feature/AmazingFeature - Commit your changes (
)git commit -m 'Add some AmazingFeature' - Push to the branch (
)git push origin feature/AmazingFeature - Open a Pull Request
Поддержка
При возникновении проблем:
- Проверьте логи в logs/
- Убедитесь в корректности конфигурации
- Проверьте соединение с базой данных
- Создайте issue с подробным описанием проблемы