Veréis, estoy intentando aprender a utilizar el módulo HTML::Parser, para seleccionar únicamente unas etiquetas de un fichero XHTML.
Tal y como me habían contado el funcionamiento de este módulo, hay que indicarle un "evento" para que se fije en él.
Mi intención, sería obtener el texto contenido entre las etiquetas <h1>, </h1>, <p> y </p> del texto que descargo según el siguiente código.
Using perl Syntax Highlighting
#!/usr/bin/perl
use XML::Simple;
use Data::Dumper;
use HTML::Parse;
use HTML::FormatText;
use strict;
my $articulo;
my $formatText;
my $seleccion;
my @array;
`wget http://meneame.net/story/86-directores- ... contenidos -O articuloDePrueba`;
$articulo = `cat articuloDePrueba`;
$formatText = HTML::FormatText->new->format(parse_html($articulo));
$seleccion = HTML::Parser->new( api_version => 3,
#start_h => [\&start, "tagname, attr"],
start_h => [\&start, "h1, text"],
end_h => [\&end, "p"],
marked_sections => 1,
);
# $seleccion = HTML::Parser->new(api_version => 3,
# handlers => { text => [\@array, "event,text"],
# comment => [\@array, "event,text"],
# });
open F, ">PRUEBA";
print F "$seleccion";
foreach $seleccion (@array){
print F "$seleccion";
}
close F;
use XML::Simple;
use Data::Dumper;
use HTML::Parse;
use HTML::FormatText;
use strict;
my $articulo;
my $formatText;
my $seleccion;
my @array;
`wget http://meneame.net/story/86-directores- ... contenidos -O articuloDePrueba`;
$articulo = `cat articuloDePrueba`;
$formatText = HTML::FormatText->new->format(parse_html($articulo));
$seleccion = HTML::Parser->new( api_version => 3,
#start_h => [\&start, "tagname, attr"],
start_h => [\&start, "h1, text"],
end_h => [\&end, "p"],
marked_sections => 1,
);
# $seleccion = HTML::Parser->new(api_version => 3,
# handlers => { text => [\@array, "event,text"],
# comment => [\@array, "event,text"],
# });
open F, ">PRUEBA";
print F "$seleccion";
foreach $seleccion (@array){
print F "$seleccion";
}
close F;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
El código aún tiene resquicios de varios intentos que he realizado, tristemente, sin resultados satisfactorios.
¿Podríais darme alguna idea de cómo actuar con este módulo?
Gracias por vuestro tiempo y atención, recibid un cordial salud, Aitor.