use Mosche;
Mittels dem Modul LWP::Simple lese ich den Inhalt einer Website (ich möchte letztendlich eine Fussballtabelle aus einer Website herausfilten), jedoch bekomme ich nicht den Inhalt des Bodys herausgelesen, also alles was zwischen <body ...> und </body> steht. Das Problem hierbei ist, dass in dem einleitenden Body-Tag viele Atribute stehe. Ich nutze den regulären Ausdruck .* dafür, aber es wird nichts zurückgeliefert?!
$html =~ m/<body.*>(.*)</body>/si; # Hier ist der Fehler versteckt
Ich gebe dir mal folgenden Quelltext:
<body bgcolor="#456756"><h1>blah</h1></body>
<body .*> macht jetzt auf "<body bgcolor="#456756"><h1>blah</h1>". Es würde hier also reichen, deinen Ausdruck zu so etwas umzuwandeln:
/<body[^>]*>(.*)</body>/
Problem könnte auftreten, wenn in einem Parameter ein '>' auftritt.
Insgesamt ist es annähernd unmöglich, mit Regulären Ausdrücken HTML zu parsen. Nimm dafür einen dedizierten Parser wie HTML::Parser, erhältlich bei CPAN.
use Tschoe qw(Matti);
neues Selftreffen?
http://selfcommunity.teamone.de/foren/community/?t=2241&m=2687
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.