firefeed-scraper

0

Описание

Вебскраппер контента FireFeed на базе Scrapy

https://firefeed.net/landing/scraper

Языки

  • Python100%
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

  1. Fork the project
  2. Create your feature branch (
    git checkout -b feature/AmazingFeature
    )
  3. Commit your changes (
    git commit -m 'Add some AmazingFeature'
    )
  4. Push to the branch (
    git push origin feature/AmazingFeature
    )
  5. Open a Pull Request

Поддержка

При возникновении проблем:

  1. Проверьте логи в
    logs/
  2. Убедитесь в корректности конфигурации
  3. Проверьте соединение с базой данных
  4. Создайте issue с подробным описанием проблемы