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