HTML::Parser
Matej Kovacic
matej.kovacic at uni-lj.si
Fri Apr 20 10:38:18 CEST 2001
Ziv!
Imam naslednji problem... imam datoteko ki vsebuje vrstice tab-delimited
locene. V predzadnjem, 13-tem polju je celoten HTML tekst. Se pravi preberem
vrstico, jo splittam da dobim ven $fullhtml - se pravi spremenljivko z
celotnim HTML, to pa bi potem rad sparsal.
Torej prestel koliko slik vsebuje HTML dokument, katere linke vsebuje, itd.
Programcek naj bi bil tale spodaj - pa ne dela. Tagsov sploh ne izpise - oz.
so prazni.
Mi lahko kdo pomaga?
Aja, uporabljam knjiznico libwww-perl-5.53.tar.gz, zadeva pa laufa na
Windowz okolju...
#!/usr/bin/perl -w
use HTML::Parser;
use strict;
use diagnostics;
$| = 1;
my $slash = "/";
# print "Content-type: text/html\n\n";
print "Rezultat analize\n================\n\n";
# Get parameter and then retrieve the page
##########################################
BEGIN {
open(FILE,"result.dat") || print "Napaka pri odpiranju DAT datoteke!";
}
END {
close(FILE);
}
print "\nAnaliziram datoteko spletnih strani...\n";
print "\n";
my $count = 1;
while(<FILE>) # analyse file line by line (useful for big files!)
{
my $main_line = $_;
my @line = split(/\t/,$main_line); # delimit the line
# PREBEREM FULLHTML!!!
my $fullhtml = $line[12];
my @tags; # A TOLE JE OK??? Sicer mi zatezi da spodaj ni definiran,ker
uporabljam strict.
my $p=HTML::Parser->new(start_h=>[\@tags,"text"],
end_h=>[\@tags,"text"]);
# Parserju povemo, da nas zanimajo tako start (<>) kot end (</>) tagi, in
da
# naj celoten text taga shrani v polje @tags.
$p->parse($fullhtml);
# Elementi @tags so zdaj polja, ki imajo vsako en element, zato moramo
# @tags se "splosciti".
@tags=map($_=$$_[0], at tags);
print "St. vrstice: $count. TAGI: @tags\n"; #tu bi potem naredil iskanje
samo img tagov, itd...
$count++;
}
print "\nKonec analize.";
lp, Matej
More information about the lugos-prog
mailing list