User since
2006-11-21
17
Artikel
BenutzerIn
Hi,
ich habe folgendes Problem:
ich möchte eine HTML Seite in einen Tree Parsen und danach dann die Elemente des Baumes untersuchen und bestimmte Tags ausgeben.
Problem:
bin scheinbar zu blöd um die CPAN Beschreibung für HTML::Element zu blicken!
Prinzipielles Vorgehen:
Ich erzeuge einen neuen Baum:
$tree = HTML::TreeBuilder->new();
Parse dann die unter $datei angegebene Datei:
$tree->parse_file($datei);
so weit so gut, jetzt möchte ich nach bestimmten Elementen suchen:
@elements = $element->find('a', 'img');
can't call method "find" on udefined value
dann halt mal mit nem Konstruktor für element:
$element = HTML::Element->new('a' );
jetzt hab ich ein Element mit dem Tag <a> aber sonst nix!?
Kann mir da jemand weiterhelfen?
Das kann doch nicht sein, dass ich mir durch einen Konstruktor ein Element definieren muss? Oder?!
Danke schon mal im Voraus
User since
2003-08-04
14371
Artikel
ModeratorIn
So klappt das:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
use strict;
use warnings;
use HTML::TreeBuilder;
use Data::Dumper;
use HTML::Element;
my $html = qq~<html><body><h1>Test</h1><a href="..">Link</a></body>~;
my $tree = HTML::TreeBuilder->new();
$tree->parse($html);
my @elements = $tree->find('a');
for my $link(@elements){
print $link->as_text(),"\n";
}
Du muss das
find auf den Baum ausführen...
User since
2006-11-21
17
Artikel
BenutzerIn
Ach so... und das use HTML::Element brauch ich dann nur um die ganzen Element-funktionen direkt auf den Tree anweden zu können?
User since
2003-08-07
2921
Artikel
BenutzerIn
use HTML::Element sort dafür, dass die Funktionalität des Moduls in deinem Programm zur Verfügung gestellt wird.
User since
2006-11-21
17
Artikel
BenutzerIn
Super Leute! Vielen Dank für die guten und schnellen Antworten!