Voilà quelques lignes de codaz merl, qui permettent tres simplement de récupérer des flux rss pour par exemple les afficher sur un site, dans une socket d'un bot irc, dans un statusline screen :) ou whatever.

1/ Installer LWP::Simple et XML::Simple

Afin de parser les flux RSS, on va se servir de deux modules Perl, très “simple” d'utilisation.

  • Sous FreeBSD, les ports sont disponibles, pour les installer :
% cd /usr/ports/textproc/p5-LWP-Simple
% sudo make install clean
% cd /usr/ports/textproc/p5-XML-Simple
% sudo make install clean
  • Sous debian, les packages sont disponibles, pour les installer:
% sudo apt-get install libxml-simple-perl libwww-perl
  • Via cpan :
% sudo cpan
% cpan> install LWP::Simple ou % cpan -i LWP::Simple
% cpan> install XML::Simple ou % cpan -i XML::Simple

2/ Exploiter les flux AIRAISSESESSE

Ici, nous allons exploiter les syndications des advisories FreeBSD, et nous en afficherons qu'un nombre prédéfinis :

#!/usr/bin/perl -w
#
 
use strict;
use warnings;
 
use LWP::Simple;
use XML::Simple;
 
my $rss = "http://www.freebsd.org/security/advisories.rdf";
my $syndication_number = 10;
my $xml = XML::Simple->new(SuppressEmpty => 1);
my $feeds = $xml->XMLin(get($rss));
 
#
# parse rss xml structure
# <channel>
#   <title>blabla</title>
#   <link>http://blabla</link>
#   <description>blabla</description>
# </channel>
#
# <item>
#   <title>blabla</title>
#   <link>http://blabla<link>
# </item>
#
 
print "$feeds->{'channel'}->{'title'} $feeds->{'channel'}->{'link'} $feeds->{'channel'}->{'description'} \n\n";
 
for(my $i=1; $i < $syndication_number ; $i++) {
        foreach my $feed ($feeds->{'item'}->[$i]) {
                print "$i - $feed->{'title'} $feed->{'link'}\n";
        }
}

Je vous laisse le soin d'aller plus loin en vous référant aux documentations suivantes :

Enjoy the AIRESSESSE life lutin

codaz/perl/parser_des_flux_rss_en_perl.txt · Last modified: 2012/11/24 20:10 by sbz