Thread Mojo (o.ä.) Tabellenspalten zusammenführen/Mappen? (8 answers)
Opened by Ionit at 2014-10-02 12:47

GwenDragon
 2014-10-02 17:15
#177644 #177644
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Nicht sehr elegant gelöst (weil Mojo::DOM keine Textknoten als Siblings einlesen will oder ich zu dusselig bin), aber es klappt:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/perl

use strict;
use warnings;

use 5.010;
use Mojo::DOM;

my $html = <<'HTML';
<table>
<tbody>
<tr>
<td>
<div>
Alter:
<br>
Wohnort:
<br>
Haarfarbe:
<br>
Figur:
<br>
Gewicht:
<br>
</div>
</td>

<td>
<div>
28 Jahre
<br>
Berlin
<br>
blond
<br>
schlank
<br>
54 kg
<br>
</div>
</td>

</tr>
</tbody>
</table>
HTML

my $dom = Mojo::DOM->new($html);

my ( %data_row, @keys, @val );

$dom->find('table tr td div')->each(
    sub {
        my $s = $_->content;
        $s =~ s/[\r\n]//g;
        my @data = split m|\s*<br>\s*|, $s;
        if ( $s =~ /:/ ) {
            @keys = grep /:/, @data;
        }
        else {
            @val = grep { !/:/ } @data;
        }
        @data_row{@keys} = (@val) if @keys;
    }
);

say "$_ $data_row{$_}" for @keys;

=comment 

ergibt
Alter: 28 Jahre
Wohnort: Berlin
Haarfarbe: blond
Figur: schlank
Gewicht: 54 kg

Last edited: 2014-10-02 17:16:33 +0200 (CEST)

View full thread Mojo (o.ä.) Tabellenspalten zusammenführen/Mappen?