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

topeg
 2010-04-13 02:26
#135910 #135910
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2010-04-12T23:26:13 vitopetre
ich hab die letzten Tage versucht mich in Regex einzuarbeiten und hab damit zumindest einigermaßen Fortschritte gemacht

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
jetzt sagt ihr mir ich darf das nicht benutzen und jetzt hab ich wieder keine Ahnung wie ich weiter machen soll.

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
Die CPAN-Seiten sind für einen Anfänger wie mich irgendwie zu kryptisch ich verstehe einfach nicht genau wie ich das umsetzten soll.

Kann sein. Ich hatte immer wenig Probleme damit (Außer mit Englisch)

2010-04-12T23:26:13 vitopetre
Wie sage ich denn z. B. dem Treebuilder, dass ich z. B. aus diesem Stück HTML:
...
z. B. die Keywords oder die DOI ausschneiden will?

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
Warum ist denn der Treebuilder besser als der einfache HTML-Parser oder andere Module wie der Web-Scraper oder Mechanize?

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)

View full thread 3 Fragen: Trefferliste umstrukturieren, mit gefunden Links weiterarbeiten + wie kann ich nur Teile eines Treffers anzeigen?