nechapu HTML::TokeParse ...
Pavel Nejedly
bim na atrey.karlin.mff.cuni.cz
Pátek Říjen 20 13:45:30 MEST 2000
On Fri, Oct 20, 2000 at 12:38:00AM +0200, Rostislav Matl wrote:
#
# Zkousel jsem parsovat HTML, ale porad se mi nedari nejak se dotukat na hodnoty
# atributu. Dokumentace je na me prilis strucna. Mohl by mi nekdo prosim poslat
# priklad skriptu, ktery poznava tagy(vypisuje zacatek i konec) a u tagu <A>
# vypise jeho obsah (mineno URI,atribut HREF) ?
#
# Jak jsem rekl, hlavne netusim, jak se dobrat toho URI.
# Budu velmi vdecen za odpoved.
tak treba takto:
#!/usr/bin/perl
#vypise odkazy ze souboru
use HTML::TokeParser;
my $file=$ARGV[0] || "ex.html";
my $parser=HTML::TokeParser->new($file) or die "smula\n" ;
# vytvoreni tridy parseru
print "Odkazy v ``$file'' (pokud tam teda vubec nejake jsou :)))\n";
while(my $tag= $parser->get_tag('a'))
# cti jen tagy 'A'
{
if($$tag[0] eq 'a' and exists ${$$tag[1]}{'href'})
# zajimaa nas jen starttag a jeste ke vsemu takovy
# ktery ma polozku HREF (*)
{ print " * ${$$tag[1]}{'href'}\n"; }
# vypiseme
}
ted male vysvetleni k te magii s ${$$tag[1]}{href} :
$tag je reference na pole obsahujici
($tagname,$ref_attrs,$ref_attr_order,$text_tagu)
kde $tagname je nazev tagu (je-li uzaviraci, tak je tam /tag),
automaticky se konvertuje na mala pismena
$ref_attrs je reference na hash atribut=> hodnota
$ref_attr_order je ref na pole obsahujici poradi tagu
a $text_tagu je puvodni text tagu, tj, "<a href='xxx.html'>"
z toho jiz plyne onen krasny vyraz :))
Tak doufam, ze Ti to aspon trochu pomohlo :)
Pavel
Další informace o konferenci Perl