Thread XML::LibXML Webseite parsen
(5 answers)
Opened by Willy at 2010-04-21 20:06
Hallo, mir ist es gelungen mit XML::LibXML eine XHTML (heise.de) und eine HTML4 Seite (orf.at) zu parsen. Bei der xhtml-Seite ist es mir nur mit XPathContext gelungen und bei der html-Seite nur ohne XPathContext. Funktioniert das Parsen (mit XML::LibXML) von xhtml-Seiten nur mit der Angabe von namespaces und warum braucht es das bei html nicht?
Code (perl): (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 #!/usr/bin/env perl use warnings; use strict; use 5.012; use XML::LibXML; my $parser = XML::LibXML->new; $parser->recover_silently( 1 ); my $doc = $parser->parse_file( 'http://www.heise.de/' ); my $xc = XML::LibXML::XPathContext->new( $doc->getDocumentElement ); $xc->registerNs( 'xmlns', 'http://www.w3.org/1999/xhtml' ); my $nodes = $xc->findnodes( '//xmlns:h2/xmlns:a' ); for my $node ( $nodes->get_nodelist ) { say $_->getName, '=', $_->getValue for $node->attributes; } say "\n----------------------------------------\n"; $doc = $parser->parse_file( 'http://www.orf.at/' ); $nodes = $doc->findnodes( '//frame' ); for my $node ( $nodes->get_nodelist ) { say $_->getName, '=', $_->getValue for $node->attributes; } Last edited: 2010-04-21 20:08:09 +0200 (CEST) |