Thread Problem mit HTML::Parser (4 answers)
Opened by undef at 2010-02-15 16:27

Gast undef
 2010-02-15 16:27
#133008 #133008
Hallo zusammen,

ich habe ein Verständnisproblem mit dem Modul HTML::Parser. Ich möchte gerne aus einer HTML Datei überall den Text, welcher zwischen zwei Tags steht entfernen.

Habe mir Testweise folgende HTML-Datei gebastelt:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
      1 <html>
2 <head>
3 <title>Dummy...</title>
4 </head>
5 <body>
6 <p>Nr.1 to parse</p>
7 <a href=/dev/null>Bla</a>
8 <p>blablub</p>
9 </body>
10 </html>


Hieraus soll er mir immer das zwischen <p> und </p> parsen und dann ausgeben.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Data::Dumper;
6 use HTML::Parser;
7
8 my $p = HTML::Parser->new( api_version => 3, start_h => [\&start, "tagname,self"],);
9 my @results;
10
11 sub start {
12 my $tagname = shift;
13 my $self = shift;
14
15 $self->handler( text => sub { my $text = shift; print "$text\n"; }, "dtext");
16 }
17
18 $p->report_tags("p");
19 $p->parse_file("index.html");


Ich suche nur nach tags, welche <p> sind und rufe dann den text handler auf, welcher mir dann aber mehr ausgibt, als nur den text, bis zum </p>. Ich habe leider keine Ahnung, wie ich dem Modul sage, das er nur bis zum </p> arbeiten soll. Der End Handler könnte evtl. irgendwie dafür eingebunden werden aber ich hab leider keine Ahnung wie?!

Vielen Dank schon mal für eure Hilfe!

Viele Grüße

//Mod-Edit Crian: Zweiten Codeblock geschlossen.
Last edited: 2010-02-15 16:31:18 +0100 (CET)

View full thread Problem mit HTML::Parser