Парсер и сбор данных: от источника до ленты на сайте
Обновлено: Mon Jul 06 2026 00:00:00 GMT+0000 (Coordinated Universal Time)
Автоматический сбор новостей или данных, обработка через LLM и публикация в PostgreSQL с выводом на Next.js.
Сценарий
Регулярно собирать статьи/RSS/HTML, нормализовать текст, при необходимости суммаризировать через LLM и показывать на сайте — как лента новостей NeiroCursor.
Шаг 1. Источники данных
-
RSS/Atom — предпочтительно (структура, меньше хрупкости).
-
HTML — только с respect к
robots.txtи rate limit. -
Официальные API — лучший вариант, если доступны.
Зафиксируйте список URL и частоту опроса (cron каждые N часов).
Шаг 2. Сборщик (Python)
Напиши asyncio-скрипт: fetch RSS, парсинг entry, dedup по URL hash.
Сохранение в PostgreSQL через SQLAlchemy async.
Поля модели: title, summary, content, source_url, published_at, slug.
Шаг 3. Обработка LLM (опционально)
-
Краткий summary для карточки — один запрос на статью.
-
Кэш по hash контента — не дергать API повторно.
-
Очередь задач (Celery, ARQ или cron + batch).
Шаг 4. API и фронт
-
FastAPI:
GET /api/news,GET /api/news/{slug}. -
Next.js: Server Components +
revalidateили dynamic. -
Admin API для ручной модерации (как на NeiroCursor).
Шаг 5. Эксплуатация
| Задача | Инструмент |
|--------|------------|
| Расписание | cron или systemd timer |
| Логи | без PII, ротация |
| Ошибки | алерт при N fail подряд |
Связанные материалы
Ключевые выводы
Надёжнее парсить RSS/API, чем хрупкий HTML. Dedup по URL, LLM для summary, PostgreSQL + публичный API для фронта.
FAQ
Законно ли парсить сайты?
Соблюдайте robots.txt, условия использования и не перегружайте источники частыми запросами.
Зачем LLM в пайплайне?
Для нормализации текста, summary и тегов — не для копирования чужих статей целиком без прав.
Как часто запускать сбор?
Зависит от источника: от 15 минут для RSS до раз в сутки для тяжёлых страниц.