Thread 3 Fragen: Trefferliste umstrukturieren, mit gefunden Links weiterarbeiten + wie kann ich nur Teile eines Treffers anzeigen?
(47 answers)
Opened by vitopetre at 2010-04-11 23:27 2010-04-12T23:26:13 vitopetre Es st nicht falsch sich mit Regulären ausdrücken auseinander zu setzten, die kann man an sehr vielen Stellen gebrauchen. 2010-04-12T23:26:13 vitopetre Wir verbieten dir nichts, wir warnen dich nur sehr ausdrücklich davor. Wenn du offen Auges in deinen Untergang läufst halten wir dich davon nicht ab. Wenn du bittest helfen wir dir sogar dabei. ;-) 2010-04-12T23:26:13 vitopetre Kann sein. Ich hatte immer wenig Probleme damit (Außer mit Englisch) 2010-04-12T23:26:13 vitopetre 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #!/usr/bin/perl use strict; use warnings; use HTML::TreeBuilder; my $html_data=<<'HTML'; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <meta name="DOI" content="10.1045/march2010-kucsma" /> <meta name="description" content="D-Lib Magazine" /> <meta name="keywords" content="D-Lib Magazine, Digital Libraries, Digital Library Research" /> <link rel="metadata" href="03kucsma.meta.xml" /> <link href="../../../style/style1.css" rel="stylesheet" type="text/css" /> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> <title>Using Omeka to Build Digital Collections: The METRO Case Study</title> </head> <body></body> </html> HTML my $html = HTML::TreeBuilder->new(); $html->parse($html_data); my $doi; # wir suchen nach einem "TAG" und der soll "meta" lauten # wir gehen alle gefunden tags durch for my $meta ( $html->look_down( _tag => 'meta' ) ) { # ist das Attribut "name" gesetzt? next if(! $meta->attr('name')); # ist der inhalt von "name" "DOI"? next if( $meta->attr('name') ne 'DOI'); # ist das Attribut "content" gesetzt? next if(! $meta->attr('content')); # gefunden $doi=$meta; last; } if($doi) { # etwas wurde gefunden # Attribut "content" ausgeben print $doi->attr('content')."\n"; } $html->delete(); oder mit "eingebettetem" Code: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #!/usr/bin/perl use strict; use warnings; use HTML::TreeBuilder; my $html_data=<<'HTML'; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <meta name="DOI" content="10.1045/march2010-kucsma" /> <meta name="description" content="D-Lib Magazine" /> <meta name="keywords" content="D-Lib Magazine, Digital Libraries, Digital Library Research" /> <link rel="metadata" href="03kucsma.meta.xml" /> <link href="../../../style/style1.css" rel="stylesheet" type="text/css" /> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> <title>Using Omeka to Build Digital Collections: The METRO Case Study</title> </head> <body></body> </html> HTML my $html = HTML::TreeBuilder->new(); $html->parse($html_data); my $doi = $html->look_down( # wir suchen nach einem "TAG" # und der soll "meta" lauten _tag => 'meta', # führe die den Code aus wenn der Tag "meta" ist: # Wenn 1 zurückgeliefert wird haben wir was wir wollen sub { # ist das Attribut "name" gesetzt? return 0 if(! $_[0]->attr('name')); # ist der inhalt von "name" "DOI"? return 0 if( $_[0]->attr('name') ne 'DOI'); # ist das Attribut "content" gesetzt? return 0 if(! $_[0]->attr('content')); # gefunden return 1; }); if($doi) { # etwas wurde gefunden # Attribut "content" ausgeben print $doi->attr('content')."\n"; } $html->delete(); 2010-04-12T23:26:13 vitopetre Nichts außer das ich es schon benutzt habe, es eine gute Erklärung hat und, meiner Meinung nach, recht Robust ist. Last edited: 2010-04-13 02:27:08 +0200 (CEST) |