Парсинг крипто-новостей: агрегатор данных из RSS и API

Крипто-рынок реагирует на новости быстрее, чем tradfi: от публикации статьи о регуляторных действиях до движения цены — иногда секунды. Для трейдинговых систем, мониторинга рисков или sentiment-анализа нужен структурированный поток новостей с минимальной latency. Мы — блокчейн-инженеры с 5+ летним о

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1451
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1270
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1011

Крипто-рынок реагирует на новости быстрее, чем tradfi: от публикации статьи о регуляторных действиях до движения цены — иногда секунды. Для трейдинговых систем, мониторинга рисков или sentiment-анализа нужен структурированный поток новостей с минимальной latency. Мы — блокчейн-инженеры с 5+ летним опытом в production — берём на себя организацию такого потока под ключ. За время нашей работы мы реализовали 7 агрегаторов для фондов и трейдеров, сократив среднюю задержку до 3 секунд.

Почему latency критична?

Задержка в 30 секунд может стоить тысяч долларов при арбитраже импульсных стратегий. Один из наших клиентов потерял около $500 на одной сделке из-за устаревших данных — после перехода на наш pipeline latency упала с 40 до 2 секунд. Источники новостей различаются по скорости: RSS-фиды CoinDesk обновляются каждые 5–10 минут, CryptoPanic API — в реальном времени, парсинг HTML добавляет ещё 10–30 секунд. Мы проектируем pipeline так, чтобы новость попадала в вашу систему с минимальной задержкой и гарантированной доставкой.

Какие источники использовать и как?

Сравнение трёх подходов:

Метод Скорость Надёжность Сложность Примеры
RSS/Atom фиды Средняя Высокая Низкая CoinDesk, CoinTelegraph, The Block
Official API Высокая Высокая Средняя CryptoPanic, Messari, Santiment
HTML парсинг Низкая Низкая Высокая Blockworks, новости бирж

RSS/Atom фиды (самое надёжное)

CoinDesk, Cointelegraph, The Block, Decrypt — все имеют RSS. Это официальный, стабильный канал:

import Parser from "rss-parser" const parser = new Parser({ customFields: { item: [["media:content", "media", { keepArray: false }]], }, }) const feeds: Record<string, string> = { coindesk: "https://www.coindesk.com/arc/outboundfeeds/rss/", cointelegraph: "https://cointelegraph.com/rss", theblock: "https://www.theblock.co/rss.xml", decrypt: "https://decrypt.co/feed", } async function fetchFeed(source: string, url: string): Promise<NewsItem[]> { const feed = await parser.parseURL(url) return feed.items.map((item) => ({ source, title: item.title ?? "", url: item.link ?? "", publishedAt: new Date(item.pubDate ?? ""), summary: item.contentSnippet ?? "", guid: item.guid ?? item.link ?? "", })) } 

Polling каждые 5 минут — разумный баланс между freshness и нагрузкой на источник. Дедупликация по guid.

Official APIs

CryptoPanic API — агрегатор новостей с sentiment scoring:

GET https://cryptopanic.com/api/v1/posts/?auth_token={key}&currencies=BTC,ETH&kind=news 

Отдаёт структурированные данные с bullish/bearish голосами сообщества. Messari API — качественные новости с asset-тегами:

GET https://data.messari.io/api/v1/news?page=1&limit=50 

Santiment — новости + on-chain данные + social metrics в одном API.

HTML парсинг (когда API нет)

Для источников без RSS — cheerio (Node.js) или BeautifulSoup (Python). Хрупкий подход: любое изменение разметки ломает парсер. Для критичных источников — мониторинг успешности парсинга и быстрый alert при падении extraction rate ниже 95%.

import * as cheerio from "cheerio" async function scrapeBlockworks(html: string): Promise<NewsItem[]> { const $ = cheerio.load(html) return $("article.post-card").map((_, el) => ({ title: $(el).find("h2.post-title").text().trim(), url: $(el).find("a").attr("href") ?? "", publishedAt: new Date($(el).find("time").attr("datetime") ?? ""), summary: $(el).find("p.excerpt").text().trim(), })).get() } 

Как дедуплицировать новости эффективно?

Дедупликация критична — одна новость может появиться в нескольких источниках. Мы используем двухуровневый подход: сначала точное совпадение по external_id (GUID от RSS), затем fuzzy match по заголовку (косинусная близость с порогом 0.85). Это отсекает 99% дублей. Для хранения используем PostgreSQL:

CREATE TABLE news_items ( id BIGSERIAL PRIMARY KEY, source VARCHAR(50) NOT NULL, external_id VARCHAR(255) NOT NULL, title TEXT NOT NULL, url TEXT NOT NULL, published_at TIMESTAMPTZ NOT NULL, summary TEXT, raw_content TEXT, tags TEXT[], UNIQUE (source, external_id) ); CREATE INDEX idx_news_published ON news_items (published_at DESC); CREATE INDEX idx_news_tags ON news_items USING GIN (tags); 

Asset tagging — определяем какие криптоактивы упомянуты в новости по списку тикеров и названий. Простой regex-based подход даёт 80–90% точности для основных активов. Для сложных случаев используем NLP-модель с точностью 95%.

Что важно в production

Мониторинг freshness: если последняя новость от источника старше 30 минут — алерт. RSS может зависнуть без явной ошибки. Extraction rate — процент успешно распарсенных элементов: снижение ниже 90% — критический алерт. Robots.txt и rate limiting: уважать правила источника, не генерировать избыточную нагрузку. Jitter между запросами (не ровные интервалы). User-Agent: идентифицировать себя корректно. Некоторые источники блокируют headless browser user-agents.

Как настроить парсинг новостей: пошаговый план

  1. Анализ источников и выбор подходящих методов (RSS, API, HTML).
  2. Проектирование схемы данных и pipeline.
  3. Реализация модулей с unit-тестами.
  4. Настройка дедупликации и asset tagging.
  5. Развёртывание в Docker/Kubernetes с мониторингом.
  6. Документация и интеграция с клиентской системой.

Сравнение инструментов для sentiment-анализа

Инструмент Тип Точность Скорость
CryptoPanic голосование community-based 70–80% реальное время
Santiment social trends on-chain + social 85–90% 5-10 мин
Vader / TextBlob lexicon-based 75–85% миллисекунды
FinBERT NLP-модель 90–95% секунды

Что входит в работу

  • Проектирование архитектуры сбора данных (схема данных, выбор источников, балансировка нагрузки)
  • Реализация модулей парсинга (RSS, API, HTML) с unit-тестами и интеграционными тестами
  • Настройка дедупликации и asset tagging
  • Развёртывание в Docker/Kubernetes с мониторингом и алертингом
  • Документация API доступа к данным и инструкция по добавлению новых источников
  • Гарантия поддержки после запуска: чиним парсер при изменении разметки в течение 24 часов

Реалистичный срок для агрегатора 10–15 источников с API + хранением: 2–3 недели. Получите консультацию — оценим ваш проект бесплатно. Закажите оценку — мы подберём оптимальную архитектуру под ваш бюджет и требования.