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