RSS è uno dei modi più sottovalutati e, allo stesso tempo, più comodi per ottenere dati dai siti web. Mentre tutti discutono di scraping «complesso», tra JavaScript e captcha da aggirare, migliaia di risorse consegnano tranquillamente i loro contenuti sotto forma di XML pulito e strutturato. Basta sapere dove cercare e come leggerlo.
In questo articolo vedremo che cos’è RSS, a cosa serve il suo parsing, come trovare i feed sui siti e come implementarne la lettura in diversi linguaggi di programmazione.
Che cos’è RSS e perché è così comodo da analizzare
RSS (Really Simple Syndication) è un formato XML standardizzato in cui un sito pubblica l’elenco dei suoi contenuti recenti: titoli, link, brevi descrizioni, date di pubblicazione e, a volte, il testo completo e gli allegati. Accanto esiste un formato simile, Atom: risolve lo stesso problema e si distingue solo per dettagli di markup.
La differenza chiave tra RSS e il normale parsing di HTML è che la struttura del feed è prevedibile e stabile. Non devi aggrapparti a classi CSS che cambieranno al prossimo redesign. I campi sono gli stessi ovunque:
title: il titolo;link: il link al contenuto;descriptionosummary: la breve descrizione;pubDateoupdated: la data di pubblicazione;guidoid: l’identificatore univoco della voce.
Questo rende RSS il punto d’ingresso ideale quando il sito mette a disposizione un feed del genere.
A cosa serve il parsing di RSS
Gli scenari d’uso sono tanti, e non tutti evidenti:
Aggregatori di notizie e contenuti. Il caso più classico: riunire in un unico posto le pubblicazioni di decine di fonti. Così funzionano i feed reader, le rassegne tematiche e i media di nicchia.
Monitoraggio di menzioni e tendenze. Seguire la comparsa di parole chiave (il nome dell’azienda, del brand o di una persona) nei feed di testate e blog quasi in tempo reale, senza ritardi né giri manuali per i siti.
Alimentazione dei contenuti e automazione. Pubblicazione automatica sui social e nei canali Telegram, aggiornamento di vetrine, preparazione di piani editoriali: tutto questo si può costruire sui dati freschi dei feed.
Intelligence competitiva. Molte aziende tengono blog con RSS. Iscrivendoti in modo programmatico, sei il primo a sapere di release, articoli e annunci.
Dati per analisi e ML. I feed RSS sono una fonte economica e pulita di testi per addestrare modelli, analizzare il sentiment, raggruppare i temi e costruire grafi di notizie.
Notifiche. Avvisi personali su nuove offerte di lavoro, annunci, post nei forum, aggiornamenti della documentazione.
Il vantaggio principale rispetto allo scraping dell’HTML: velocità di sviluppo, stabilità e carico ridotto, sia per te sia per la fonte.
Come trovare siti e feed RSS
Molti siti pubblicano un RSS ma non mettono il pulsante in bella vista. Ecco i metodi che funzionano per trovare il feed.
1. Il meta tag nel codice HTML della pagina
I siti configurati correttamente dichiarano il feed nell’<head>:
<link rel="alternate" type="application/rss+xml" title="RSS" href="/feed.xml">
<link rel="alternate" type="application/atom+xml" title="Atom" href="/atom.xml">Basta aprire il codice sorgente della pagina (Ctrl+U) e cercare application/rss+xml o application/atom+xml. Lo stesso tag si può estrarre in modo programmatico per il rilevamento automatico dei feed.
2. Percorsi URL tipici
Una parte enorme dei feed vive su percorsi prevedibili. Vale la pena controllarli uno per uno:
/rss
/rss.xml
/feed
/feed.xml
/feeds
/atom.xml
/index.xml
/rss/all.xmlConviene inoltre conoscere le piattaforme più diffuse:
- WordPress:
/feed/,/?feed=rss2; per una categoria:/category/nome/feed/; - Blogger:
/feeds/posts/default; - YouTube:
https://www.youtube.com/feeds/videos.xml?channel_id=ID_DEL_CANALE; - Reddit: a qualsiasi sezione si può aggiungere
.rss, ad esempio/r/programming.rss; - Substack / Medium:
/feed.
3. Operatori di ricerca e servizi
Nel motore di ricerca aiutano query come site:example.com rss o inurl:feed site:example.com. Esistono anche servizi di rilevamento dei feed (ad esempio RSS.app o Feedly) che trovano da soli i feed disponibili a partire dall’indirizzo del sito. E se un feed ufficiale non esiste affatto, alcuni strumenti generano un RSS dalle normali pagine HTML: ma questo è già più vicino allo scraping classico.
Esempi di implementazione in vari linguaggi
Qui sotto trovi esempi minimi e funzionanti di lettura di un feed. Ovunque si usano librerie collaudate, che analizzano da sole sia RSS sia Atom e ti risparmiano il mal di testa delle diverse versioni dello standard.
Python
La libreria feedparser è lo standard di fatto dell’ecosistema Python.
# pip install feedparser
import feedparser
feed = feedparser.parse("https://example.com/feed.xml")
print(f"Fonte: {feed.feed.get('title', 'senza titolo')}")
for entry in feed.entries:
print("—" * 40)
print("Titolo: ", entry.get("title"))
print("Link: ", entry.get("link"))
print("Data: ", entry.get("published", "sconosciuta"))
print("Sommario:", entry.get("summary", "")[:200])feedparser normalizza i campi da sé, quindi entry.title ed entry.link sono disponibili a prescindere che si tratti di RSS o di Atom.
JavaScript / Node.js
Il pacchetto rss-parser lavora comodamente con async/await.
// npm install rss-parser
import Parser from "rss-parser";
const parser = new Parser();
async function readFeed(url) {
const feed = await parser.parseURL(url);
console.log(`Fonte: ${feed.title}`);
feed.items.forEach((item) => {
console.log("—".repeat(40));
console.log("Titolo:", item.title);
console.log("Link: ", item.link);
console.log("Data: ", item.pubDate);
});
}
readFeed("https://example.com/feed.xml").catch(console.error);PHP
In PHP esiste la libreria SimplePie, ma per i compiti di base basta il SimpleXML integrato.
<?php
// Variante senza dipendenze: il SimpleXML integrato
$feed = simplexml_load_file("https://example.com/feed.xml");
echo "Fonte: " . $feed->channel->title . PHP_EOL;
foreach ($feed->channel->item as $item) {
echo str_repeat("—", 40) . PHP_EOL;
echo "Titolo: " . $item->title . PHP_EOL;
echo "Link: " . $item->link . PHP_EOL;
echo "Data: " . $item->pubDate . PHP_EOL;
}Per la produzione è meglio prendere SimplePie (composer require simplepie/simplepie): ha la cache, gestisce anche Atom e regge bene l’XML «sporco».
Go
Nell’ecosistema Go è popolare gofeed, che capisce entrambi i formati.
// go get github.com/mmcdole/gofeed
package main
import (
"fmt"
"github.com/mmcdole/gofeed"
)
func main() {
fp := gofeed.NewParser()
feed, err := fp.ParseURL("https://example.com/feed.xml")
if err != nil {
panic(err)
}
fmt.Println("Fonte:", feed.Title)
for _, item := range feed.Items {
fmt.Println("————————————————")
fmt.Println("Titolo:", item.Title)
fmt.Println("Link: ", item.Link)
fmt.Println("Data: ", item.Published)
}
}Ruby
La gem feedjira risolve il compito con pochissimo codice.
# gem install feedjira
require "feedjira"
require "httparty"
xml = HTTParty.get("https://example.com/feed.xml").body
feed = Feedjira.parse(xml)
puts "Fonte: #{feed.title}"
feed.entries.each do |entry|
puts "—" * 40
puts "Titolo: #{entry.title}"
puts "Link: #{entry.url}"
puts "Data: #{entry.published}"
endInsidie da tenere a mente
Il parsing di RSS è semplice, ma nel lavoro reale emergono alcune sfumature:
- Deduplicazione. La stessa voce arriva nel feed più volte. Conserva i
guid/idgià elaborati per non duplicare i contenuti. - Contenuto incompleto. Spesso il feed consegna solo l’anteprima, non il testo completo. In quel caso dovrai scaricare anche la pagina del link e analizzarla.
- Codifiche e XML «sporco». Non tutti i feed sono validi. Le buone librerie perdonano gli errori; i parser fatti in casa, no.
- Frequenza di interrogazione. Non martellare il feed ogni secondo. Rispetta le intestazioni
ETageLast-Modified, per non scaricare sempre le stesse cose e non farti bloccare. - Limiti del feed. Di solito un RSS consegna solo le ultime 10–50 voci. Lo storico non si raccoglie così: serve un archivio, oppure un monitoraggio continuo con accumulo.
- Scala. Quando le fonti diventano centinaia, spuntano lo scheduler, le code, il monitoraggio dei feed «caduti» e lo storage. Un semplice script si trasforma in una vera infrastruttura.
Quando conviene affidarsi ai professionisti
Leggere un feed è questione di cinque minuti. Mettere in piedi un flusso stabile di notizie da centinaia di fonti, ricondurre formati eterogenei a una struttura unica e garantire deduplicazione, recupero del testo completo, pulizia e funzionamento ininterrotto 24/7 è invece una vera sfida ingegneristica.
Se ti serve il risultato pronto, e non la manutenzione di una pipeline di scraping tutta tua, dai un’occhiata al nostro servizio di estrazione di articoli di stampa. Ci occupiamo noi di trovare e collegare le fonti (compresi i siti senza un RSS visibile), normalizzare i dati, filtrarli per i tuoi temi e le tue parole chiave e consegnarti un flusso di notizie pulito e strutturato nel formato che preferisci: via API, con esportazioni o con integrazione diretta nel tuo sistema. Tu ricevi i dati pronti; della routine di feed, codifiche e fonti instabili ci occupiamo noi.
RSS resta uno dei modi più efficienti di ottenere dati là dove è disponibile: struttura prevedibile, carico basso e sviluppo rapido. Comincia cercando i feed dei siti che ti interessano, prova gli esempi qui sopra nel tuo linguaggio: e quando il compito supererà i limiti di uno script, sai già a chi rivolgerti.