Schrift
[thread]7406[/thread]

HTML:: Parser: Probleme

Leser: 1


<< >> 7 Einträge, 1 Seite
steinwolf
 2005-10-26 19:48
#59422 #59422
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
Hi,

ich versuche gerade mit dem Parsermodul zurecht zu kommen. Gelingt mir aber nicht. Wenn das Tag title gefunden wurde, soll die Funktion get_title den Titel ausgeben.

Meine Fehlermeldung lautet:
Use of uninitialized value in line ....

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!perl -w

#use strict;
#use warnings;
use HTML::Parser;

my @links;
my $string = qq~<title>Hallo das ist ein Titel</title><a href="/test1.htm">linktext1</a> Ein anderer Text
<a href="url2">linktext2</a> text~;

my $p = HTML::Parser->new();
$p->handler(start => \&start_handler,"tagname,attr,self");
$p->parse($string);


sub start_handler{
return if(shift eq 'ccc');
#print my $tagname = shift;
my ($class) = shift->{class};
my $self = shift;

if($class eq 'title') { $self->handler(text => \&get_title, "dtext"); }
elsif($class eq 'a') { $self->handler(text => \&get_a, "dtext"); }
else { $self->handler(end => sub{ },"dtext"); }


#$self->handler(end => sub{push(@tests,[$class,$text]) if($tagname eq 'title')},"tagname");
}

sub get_title()
{
my ($test ) = @_;
print $test;
}

sub get_a()
{
#$self->handler(end => sub{push(@links,[$class,$text]) if($tagname eq 'a')},"tagname");
#foreach my $link(@links){
# print "Linktext: ",$link->[1],"\tURL: ",$link->[0],"\n";
#}
}



mfg
steinwolf
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
betterworld
 2005-10-26 19:57
#59423 #59423
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Hmm, ich glaube, du hast "attr" und "tagname" verwechselt. In $class steht ja "attr", aber Du erwartest "tagname".

Den Teil mit "ccc" verstehe ich auch nicht...

Quote
Use of uninitialized value in line ....
Welche Zeile ist denn "..."?\n\n

<!--EDIT|betterworld|1130342382-->
steinwolf
 2005-10-26 20:04
#59424 #59424
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
Ja das cc ist nur schwachsinn..


edit:
habs jetzt

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sub start_handler{

my $class = shift;
#my ($class) = shift->{class};
my $attr = shift;
my $self = shift;

if($class eq 'title') {
$self->handler(text => \&get_title, "text");
#$self->handler(end => sub{ },"dtext");
}
elsif($class eq 'a') {
$self->handler(text => \&get_a, "dtext");
}
else { }

#$self->handler(end => sub{push(@tests,[$class,$text]) if($tagname eq 'title')},"tagname");
}

sub get_title()
{
print $title = shift;
}
\n\n

<!--EDIT|steinwolf|1130342877-->
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
pktm
 2005-10-27 16:26
#59425 #59425
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Kennst du HTML::Tokeparser?
http://www.intergastro-service.de (mein erstes CMS :) )
steinwolf
 2005-10-27 17:34
#59426 #59426
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
Nee, kenn ich nicht. Ist der schneller??
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
pktm
 2005-10-27 19:52
#59427 #59427
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Uhm, wie das mit der Schnelligkeit ist weis ich nicht, aber ich finde die Bedienung davon besser. Ist vielleicht aber auch geschmackssache. Schau mal rein: http://search.cpan.org/author....rser.pm
http://www.intergastro-service.de (mein erstes CMS :) )
ptk
 2005-10-28 01:44
#59428 #59428
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Am einfachsten zu bedienen finde ich HTML::TreeBuilder, HTML::Tree und HTML::Element.
<< >> 7 Einträge, 1 Seite



View all threads created 2005-10-26 19:48.