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