Un po di XSL per processare un feed di Google News
Pubblicato da Davide, giovedì 18 dicembre 2008 1 Commento »
L’obiettivo è visualizzare con una trasformazione XSL il contenuto di un feed generato da Google News per una determinata parola la chiave. Come esempio ho lanciato la ricerca di tutte le notizie riguardanti “Obama” e questo è l’url del feed prodotto:
http://news.google.it/news?hl=it&ned=it&q=obama&ie=UTF-8&nolr=1&output=rss
Come noto, un feed RSS è un documento XML. La formattazione è classica:
<?xml version=”1.0″ encoding=”UTF-8″?>
<rss version=”2.0″>
<channel>
<generator>NFE/1.0</generator>
<title>obama – Google News</title>
<link>http://news.google.it/news?hl=it&ned=it&q=obama&ie=UTF-8</link>
<language>it</language>
<webMaster>news-feedback@google.com</webMaster>
<copyright>©2008 Google</copyright>
<pubDate>Mon, 15 Dec 2008 14:34:32 GMT</pubDate>
<lastBuildDate>Mon, 15 Dec 2008 14:34:32 GMT</lastBuildDate>
<image>
<title>obama – Google News</title>
<url>http://news.google.com/intl/it_it/images/news_res.gif</url>
<link>http://news.google.it/</link>
</image>
<item>
<title>USA: OBAMA ANNUNCIA OGGI NOMINE ENERGIA E AMBIENTE – La Repubblica</title>
<link>http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.repubblica.it/news/ired/ultimora/esteri/rep_esteri_n_3455881.html&cid=1263615727&ei=92pGScbgOJmmwAGz5pzbDg&usg=AFQjCNF0go8PkbUwHKLk9BaKdp8dFCS0hg</link>
<guid isPermaLink=”false”>tag:news.google.com,2005:cluster=http://www.repubblica.it/news/ired/ultimora/esteri/rep_esteri_n_3455881.html</guid>
<pubDate>Mon, 15 Dec 2008 07:37:02 GMT</pubDate>
<description><table border=0 width= valign=top cellpadding=2 cellspacing=7><tr><td width=80 align=center valign=top><font style=”font-size:85%;font-family:arial,sans-serif”><a href=”http://news.google.it/news/url?sa=T&ct=it/0i-0&fd=R&url=http://www.instablog.org/ultime/35898.html&cid=1263615727&ei=92pGScbgOJmmwAGz5pzbDg&usg=AFQjCNFqys_EXXw7Kh4xa96o32AB49JHvw”><img src=http://news.google.it/news?imgefp=ve3DuBkpQiwJ&imgurl=www.instablog.org/blogpress/art/ultimora/obama.jpg width=80 height=51 alt=”” border=1><br><font size=-2>The Instablog</font></a></font></td><td valign=top class=j><font style=”font-size:85%;font-family:arial,sans-serif”><br><div style=”padding-top:0.8em;”><img alt=”” height=”1″ width=”1″></div><div class=lh><a href=”http://news.google.it/news/url?sa=T&ct=it/0-0&fd=R&url=http://www.repubblica.it/news/ired/ultimora/esteri/rep_esteri_n_3455881.html&cid=1263615727&ei=92pGScbgOJmmwAGz5pzbDg&usg=AFQjCNF0go8PkbUwHKLk9BaKdp8dFCS0hg”>USA: <b>OBAMA</b> ANNUNCIA OGGI NOMINE ENERGIA E AMBIENTE</a><br><font size=-1><font color=#6f6f6f>La Repubblica -</font> <nobr>6 ore fa</nobr></font><br><font size=-1>Il presidente eletto, Barack <b>Obama</b>, annuncera’ oggi le nomine del segretario al Dipartimento Energia e dello ‘zar’ per l’Ambiente. Gli annunci, che verranno <b>…</b></font><br><font size=-1><a href=”http://news.google.it/news/url?sa=T&ct=it/0-1&fd=R&url=http://notizie.alice.it/notizie/esteri/2008/12_dicembre/15/usa_obama_incontra_oggi_staff_difesa_e_annuncia_nomine_ambiente,17232675.html&cid=1263615727&ei=92pGScbgOJmmwAGz5pzbDg&usg=AFQjCNHg4RwSRzsrR_uvMvcY3h-S38meRg”>Usa/ <b>Obama</b> incontra oggi staff difesa e annuncia nomine ambiente</a> <font size=-1 color=#6f6f6f><nobr>Virgilio Notizie</nobr></font></font><br><font size=-1><a href=”http://news.google.it/news/url?sa=T&ct=it/0-2&fd=R&url=http://www.agenziami.it/ultime/9415/USA%2BObama%2Bpronte%2Ble%2Bnomine%2Bper%2Bl%2Bambiente/&cid=1263615727&ei=92pGScbgOJmmwAGz5pzbDg&usg=AFQjCNGniMEyAO4lJg5HiWJCKROXee8p_g”>USA. <b>Obama</b>, pronte le nomine per l’ambiente</a> <font size=-1 color=#6f6f6f><nobr>(ami) Agenzia Multimediale Italiana</nobr></font></font><br><font size=-1><a href=”http://news.google.it/news/url?sa=T&ct=it/0-3&fd=R&url=http://www.instablog.org/ultime/36309.html&cid=1263615727&ei=92pGScbgOJmmwAGz5pzbDg&usg=AFQjCNF64d7ozOXQdd8tBoaRDHWfPlBfsg”><b>Obama</b>: nomine ambiente, oggi gli annunci ufficiali</a> <font size=-1 color=#6f6f6f><nobr>The Instablog</nobr></font></font><br><font class=p size=-1><a class=p href=http://news.google.it/news?hl=it&ned=it&ie=UTF-8&ncl=1263615727><nobr>e altri 4 articoli simili</nobr></a></font></div></font></td></tr></table></description>
</item>
[...]
</channel>
</rss>
Si può formattare a dovere con un po’ di XSL per pubblicare ad esempio i titoli, rendendoli cliccabili con un link diretto all’articolo (quello contenuto nel tag <link>).
<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
<xsl:template match=”/rss”>
<html>
<head>
<!–<link href=”style.css” rel=”stylesheet” type=”text/css” />–></head>
<body>
<div id=”logo” style=”border-bottom: 1px solid #ccc; margin-bottom: 5px; font-size: 1.2em; font-weight: bold;”>
<xsl:element name=”a”>
<xsl:attribute name=”href”>
<xsl:value-of select=”channel/link” />
</xsl:attribute>
<xsl:value-of select=”channel/title” />
</xsl:element>
</div>
<div class=”Snippet”>
<ul style=”list-style: none; margin: 0; padding:0″>
<xsl:for-each select=”channel/item”>
<li>
<xsl:element name=”a”>
<xsl:attribute name=”href”>
<xsl:value-of select=”link”/>
</xsl:attribute>
<xsl:value-of select=”title”/>
</xsl:element>
<br/>
<small style=”color: #ccc; text-align: right”><xsl:value-of select=”pubDate” /></small>
</li>
</xsl:for-each>
</ul>
</div>
<div id=”footer” style=”display: none;”>
<xsl:value-of select=”channel/copyright” />
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Per semplificare un po’ ho aggiunto qualche regola CSS direttamente in linea, ma nulla vieta di creare un foglio esterno (ho commentato la porzione di codice che richiamerebbe un foglio di stile).
L’unica vera scocciatura di Google News è che non offre un feed pulito, ma all’interno del tag <description> inserisce codice html e questo può dare problemi in fase di parsing XML.
Per chi volesse approfondire l’argomento un buon punto di partenza è questo. Buona lettura.
1 Commento »
Puoi lasciare un tuo commento, oppure fare un trackback dal tuo sito.
Lascia il tuo commento
1
Ischia - Pubblicato il 22 02 2009 alle 04:27
Devo provare come dici tu perche’ ci sto perdendo l’anima qua vicino