Доброго времени суток!

Пробую из страницы вот такого типа: <div class=view_text><div class=no_need>NOT NEEDED</div>NEED THIS</div> вытащить текст. Должно получится NOT NEEDEDNEED THIS . В любом случае получается NOT NEEDED

Где я не прав?

Искал "perl parse nested tags", но ничего полезного не нашел...

Скрипт 1:
---------------------------------------------------------------------
#!/usr/bin/perl -w
  use HTML::Parser ();
  sub start_handler
  {
        my $tagname = shift; my $self = shift; my $att = shift;
        if ($att->{'class'}){
                if ($tagname eq "div" && $att->{'class'} eq "view_text") {
                        $self->handler(text => sub { print shift }, "dtext");
                        $self->handler(end  => 
\&stop_handler,"tagname,self,attr");
                }
        }
  }
  sub stop_handler
  {
        my $tagname = shift;
        my $self = shift;
        my $att = shift;
        if ($tagname eq "div"){
                $self->eof;
        }
  }
  my $p = HTML::Parser->new();
  $p->handler( start => \&start_handler, "tagname,self,attr");
  $p->parse_file(shift || die) || die $!;
  print "\n";
---------------------------------------------------------------------
Скрипт 2:
---------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use HTML::TokeParser;
my $p = HTML::TokeParser -> new(shift || die) || die $!;
while (my $token = $p -> get_tag('div')) {
    my $class = $token -> [1]{class} || '';
    if ($class eq 'view_text') {
        my $text = $p -> get_trimmed_text("/div");
        print $text;
    }
}
print "\n";
---------------------------------------------------------------------
Скрипт 3 (тут вроде что-то как надо (->dump), сам текст не выводится)
---------------------------------------------------------------------
#!/usr/bin/perl -w
use HTML::TreeBuilder;
my $tree = HTML::TreeBuilder->new; # empty tree
my $test = HTML::TreeBuilder->new; # empty tree
    $tree->parse_file(shift || die);
        $test = $tree;
        $test = $test->find_by_attribute('class','view_text');
        $test->dump;
        $test->as_HTML;
        $test->as_text;
        $test->as_XML;
      $tree->dump;
      $tree->as_HTML;

<<attachment: denyago.vcf>>

_______________________________________________
smoke-room mailing list
[email protected]
https://lists.altlinux.org/mailman/listinfo/smoke-room

Ответить