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

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

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

Часті запитання

Останні роботи

  • 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 тижні. Отримайте консультацію — оцінимо ваш проєкт безкоштовно. Замовте оцінку — ми підберемо оптимальну архітектуру під ваш бюджет та вимоги.