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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="98%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="0%"><img src="../images/spacer.gif" width="5" height="22" alt="" /></td>
<td width="50%"><b>Unternehmen:</b></td>
<td width="0%"><img src="../images/spacer.gif" width="5" height="22" alt="" /></td>
<td width="50%"><b>Konzern:</b></td>
<td width="0%"><img src="../images/spacer.gif" width="5" height="22" alt="" /></td>
</tr>
<tr>
<td width="0%"><img src="../images/spacer.gif" width="5" height="22" alt="" /></td>
<td width="50%">Hinz und Kunz AG</td>
<td width="0%"><img src="../images/spacer.gif" width="5" height="22" alt="" /></td>
<td width="50%"></td>
<td width="0%"><img src="../images/spacer.gif" width="5" height="22" alt="" /></td>
</tr>
</table>
</td>
</tr>
<tr id="showUnternehmen187_Content" style="display:none">
<td valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="White">
<tr>
<td bgcolor="#CCCCCC" class="HeaderShadow"><img src="../images/spacer.gif" width="10" height="5"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="White">
<tr>
<td height="26" width="0%"><img src="../images/spacer.gif" width="10" height="5" alt="" /></td>
<td height="26" width="100%" valign="middle">
<b>Branche:</b>
</td>
<td height="26" width="0%"><img src="../images/spacer.gif" width="5" height="5"></td>
</tr>
<tr>
<td height="26" width="0%">
<img src="../images/spacer.gif" width="10" height="5" alt="" />
</td>
<td height="26" width="0%">
Baugewerbe<br />
</td>
<td height="26" width="0%">
<img src="../images/spacer.gif" width="5" height="5"/>
</td>
</tr>
<tr>
<td height="26" width="0%">
<img src="../images/spacer.gif" width="10" height="5" alt="" />
</td>
<td height="26" width="100%" valign="middle">
<b>Position:</b>
</td>
<td height="26" width="0%">
<img src="../images/spacer.gif" width="5" height="5" />
</td>
</tr>
<tr>
<td height="26" width="0%">
<img src="../images/spacer.gif" width="10" height="5" alt="" />
</td>
<td height="26" width="0%">
<table width="100%">
<tr>
<td>
</td>
<td valign="top">
<table>
<tbody>
<tr>
<td style="width:175px" colspan="3">
<b>Zeitraum</b>
</td>
<td style="width:175px">
<b>Position</b>
</td>
</tr>
<tr>
<td>
03.2010
</td>
<td> - </td>
<td>
bis Heute
</td>
<td>
Geschaftsführerin
</td>
</tr>
</tbody>
</table>
</td>
<td valign="top">
<table>
<tbody>
<tr>
<td style="min-width: 150px;">
<b>Tätigkeitsbereiche</b>
</td>
</tr>
<tr>
<td style="min-width: 150px;">
Management / Geschäftsführung<br />
<br />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</td>
<td height="26" width="0%"><img src="../images/spacer.gif" width="5" height="5"></td>
</tr>
</table>
</td></tr>
</table>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$i=0;
for ($x=0;$x<30;$x++) { $Arbeit[$x]=""; }
while ($daten =~ /<div id="ctl00_ContentPlaceHolderText_objPageUnternehmen" class="rmpHiddenView">(.*)<\/div>/sg) {
$tmp = $1;
$tmp =~ s/<.*?>//g;
print $tmp;
if ($tmp =~ /([A-Za-z0-9 öäü.&;-]+)/s) {
$Arbeit[$i] = $1;
$i++;
}
}
1 2 3 4 5 6
foreach my $tab ($tree->look_down(_tag => "table")) { # alle Tabellen next if $tab->as_text; # Inhalt? => weiter $tab->delete; # kein Text => löschen } # alle <td width="0%" ...> löschen $_->delete foreach $tree->look_down(_tag => "td", width => "0%");
Guest janusIdealerweise werden Daten, die maschinenlesbar sein sollen, auch in einer maschinenlesbaren Datei != HTML bereitgestellt bzw, als Response gesendet. HTML parsen -- schön und gut, aber die Zweckbestimung von HTML ist die Darstellung im Browser und wenn sich der Designer mal vertippt hat greift auch der Parser ins Leere.
2016-11-30T14:11:16 clmsGuest janusIdealerweise werden Daten, die maschinenlesbar sein sollen, auch in einer maschinenlesbaren Datei != HTML bereitgestellt bzw, als Response gesendet. HTML parsen -- schön und gut, aber die Zweckbestimung von HTML ist die Darstellung im Browser und wenn sich der Designer mal vertippt hat greift auch der Parser ins Leere.
Wenn - wie im konkreten Fall - die Daten aus einer Datenbank kommen, wäre ein direkter Zugriff auf diese Datenbank theoretisch die einfachste Lösung.
In der Praxis hat man aber sehr häufig den Fall, dass direkter Zugriff auf die Datenbank oder auch nur eine Änderung des Programms, das die Datenbank ausliest, nicht möglich ist. Sei es, dass das ein Third-Party-Tool ist, sei es das einfach "Never touch a running system" gilt.
Der ohnehin vorhandene Log-File oder HTML-Report sind dann oft die einzigen zugänglichen Datenquellen. Der HTML-Report ist in solchen Fällen maschinenlesbar. Er ist zumindest rudimentär strukturiert und Dein Argument "wenn sich der Designer mal vertippt" läuft ins Leere. Da gibt es keinen Designer, der sich vertippen könnte. Das Ding ist automatisch erstellt.
Guest janusEin HTML-Template ist i.d.R. Handarbeit.
Guest janusAber wenn HTML ohnehin automatisch erstellt wird, dürfte es kein Problem sein, die Daten auch anderweitig zu senden.