Pular para conteúdo

Estudo: RSS de Notícias

O que é

RSS é a sigla para Really Simple Syndication — em português, Sindicalização Realmente Simples. É um formato padrão baseado em XML criado para distribuir conteúdo da web de forma estruturada e automática.

Na prática, o RSS funciona como um canal de distribuição que sites e portais de notícias mantêm atualizado automaticamente. Cada vez que uma nova publicação é feita, ela é adicionada a um arquivo RSS acessível por uma URL fixa. Qualquer sistema que conheça essa URL pode ler as publicações mais recentes sem precisar acessar o site manualmente.

O formato foi criado no final dos anos 1990 e se tornou um padrão amplamente adotado por portais de notícias, blogs, podcasts e outros tipos de conteúdo digital. Hoje, a maioria dos grandes veículos de comunicação ainda mantém feeds RSS ativos, mesmo que pouco divulgados.


Como funciona

Um feed RSS é um arquivo XML hospedado em uma URL fixa pelo próprio site. Esse arquivo é atualizado automaticamente pelo sistema do veículo a cada nova publicação. Qualquer programa ou serviço que acesse essa URL recebe os dados das publicações mais recentes em formato estruturado — sem anúncios, sem menus, sem elementos visuais da página. Apenas o conteúdo.

A estrutura de um feed RSS é composta por um canal (channel) que contém uma lista de itens (item). Cada item representa uma publicação e carrega informações como título, resumo, link para a matéria completa e data de publicação.

Exemplo real de como um item RSS se parece:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Segurança DF — Metrópoles</title>
    <link>https://www.metropoles.com/distrito-federal/seguranca-df</link>
    <description>Notícias de segurança pública no Distrito Federal</description>

    <item>
      <title>Homem é preso após roubo a mão armada em Taguatinga</title>
      <description>
        A PMDF deteve o suspeito na QNL 8 após denúncia de moradores da região.
        Ele foi encaminhado à delegacia e autuado em flagrante.
      </description>
      <link>https://www.metropoles.com/noticia/homem-preso-roubo-taguatinga</link>
      <pubDate>Fri, 22 May 2026 14:30:00 GMT</pubDate>
    </item>

  </channel>
</rss>

Por que o RSS é útil para sistemas

Do ponto de vista de um desenvolvedor, o RSS resolve um problema prático: como coletar dados de um site externo sem precisar fazer scraping — ou seja, sem precisar interpretar o HTML da página, que muda frequentemente e quebra automações.

O RSS oferece:

  • Estrutura previsível — os dados sempre chegam no mesmo formato, com os mesmos campos
  • Atualização automática — o feed é atualizado pelo próprio site sempre que há nova publicação
  • Acesso gratuito e público — não exige autenticação nem cadastro na maioria dos casos
  • Leveza — o arquivo XML é pequeno e rápido de baixar, mesmo em grande volume

Isso faz do RSS uma fonte de dados confiável para sistemas que precisam monitorar publicações de forma contínua e automatizada.


Como consumir RSS em Python

A biblioteca feedparser é o padrão para leitura de feeds RSS em Python. Ela interpreta o XML automaticamente e entrega os dados como dicionários Python, sem necessidade de parsing manual.

Instalação:

pip install feedparser

Leitura básica de um feed:

import feedparser

feed = feedparser.parse("https://www.metropoles.com/distrito-federal/seguranca-df/feed")

print(f"Canal: {feed.feed.title}")
print(f"Total de itens: {len(feed.entries)}\n")

for item in feed.entries:
    print(f"Título: {item.title}")
    print(f"Resumo: {item.summary}")
    print(f"Link: {item.link}")
    print(f"Data: {item.published}")
    print("---")

Saída esperada:

Canal: Segurança DF — Metrópoles
Total de itens: 20

Título: Homem é preso após roubo a mão armada em Taguatinga
Resumo: A PMDF deteve o suspeito na QNL 8 após denúncia de moradores...
Link: https://www.metropoles.com/noticia/...
Data: Fri, 22 May 2026 14:30:00 GMT
---

O que o RSS entrega e o que não entrega

É importante entender os limites do que um feed RSS fornece para não criar expectativas erradas sobre os dados disponíveis.

O que o RSS entrega:

  • Título da notícia
  • Resumo ou trecho inicial do texto
  • Link para a matéria completa no site
  • Data e hora de publicação
  • Autor (quando o veículo inclui essa informação)
  • Categoria ou tags (em alguns feeds)

O que o RSS não entrega:

  • O corpo completo da matéria — apenas o resumo
  • Localização geográfica estruturada — a localidade, quando presente, está escrita dentro do texto em linguagem natural
  • Imagens ou mídias — apenas referências a elas, quando o feed as inclui
  • Dados em tempo real — o feed é atualizado periodicamente, não instantaneamente

RSS versus scraping

Uma dúvida comum é: por que usar RSS em vez de fazer scraping direto no site para obter mais informações, como o texto completo da matéria?

RSS Scraping
Legalidade Público e permitido Depende dos termos de uso do site
Estabilidade Formato fixo e previsível Quebra quando o layout do site muda
Manutenção Nenhuma Requer atualização constante
Conteúdo disponível Título, resumo e metadados Potencialmente o conteúdo completo
Bloqueio Não ocorre Sites podem bloquear IPs de scrapers

Para a maioria dos casos de uso que envolvem monitoramento de notícias, o RSS é a escolha mais estável, segura e sustentável a longo prazo.


Coleta periódica automatizada

Um feed RSS não envia notificações — é preciso consultá-lo ativamente em intervalos regulares para verificar se há novos itens. Esse processo é chamado de polling.

Em aplicações Python com FastAPI, a coleta periódica pode ser implementada com a biblioteca APScheduler, que permite agendar a execução de funções em intervalos definidos sem depender de serviços externos:

from apscheduler.schedulers.asyncio import AsyncIOScheduler
import feedparser

scheduler = AsyncIOScheduler()

async def coletar_feeds():
    feeds = [
        "https://www.metropoles.com/distrito-federal/seguranca-df/feed",
        "https://www.correiobraziliense.com.br/cidades-df/feed",
    ]
    for url in feeds:
        feed = feedparser.parse(url)
        for item in feed.entries:
            # processar cada item
            print(item.title)

scheduler.add_job(coletar_feeds, "interval", hours=1)
scheduler.start()

Com isso, a coleta acontece automaticamente a cada hora, sem intervenção manual.