Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11622[/thread]

aus HTML auslesen (Seite 2)

Leser: 1


<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten
renee
 2008-04-21 16:39
#108648 #108648
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
rioc+2008-04-21 11:12:01--
[...]
das problem ist: 2 der Gesuchten Infos werden gefunden (SerialNumber & Host, beispielsweise), jedoch kommt beim rest die "Use of uninitialized value in split" Meldung, obwohl der split-Parameter richtig ist...


freundliche Grüsse
rioc


Übrigens wäre es ganz praktisch, ein paar Beispieldaten zu sehen...

Und um etwas aus HTML herauszuparsen, sollte man besser Module verwenden, die darauf spezialisiert sind wie z.B. CPAN:HTML::Parser oder CPAN:Web::Scraper
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rioc
 2008-04-21 17:42
#108651 #108651
User since
2008-04-11
15 Artikel
BenutzerIn
[default_avatar]
das HTML-File aus dem Ausgelesen wird ist riesig... es wird vom cfg2HTML tool kreiert.

Bsp. Ausschnitt:
Code: (dl )
1
2
3
4
5
6
7
System Information

The following parameters were set on the configured target:
hostname: markov1
IP address: 10.*.*.11
IP address: 10.*.*.2
IP address: *.*.*.37

(IP Adressen habe ich zensiert, da es sich um vitale und produktive Server IPs handelt)...

nun, im Code mache ich ein grep auf /IP address/ mit anschliessendem split parameter /: /
nun werden die drei hier gezeigten IPs in der Ausgabe aufgelistet, jedoch kommen dann beispielsweise fünf "Use of uninitialized value in concatenation (.) or string" Meldungen, da im HTML (aus dem ausgelesen wird) noch fünf weitere Entitäten mit "IP address" aufgeführt sind, jedoch mit anderer Anzahl spaces dazwischen. (diese weiteren 5 sollen nicht aufgelistet werden).
renee
 2008-04-21 18:14
#108652 #108652
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
rioc+2008-04-21 15:42:02--
das HTML-File aus dem Ausgelesen wird ist riesig... es wird vom cfg2HTML tool kreiert.


Der gezeigte Ausschnitt ist aber kein HTML, sondern eine einfache Textdatei...

Quote
Bsp. Ausschnitt:
Code: (dl )
1
2
3
4
5
6
7
System Information

The following parameters were set on the configured target:
hostname: markov1
IP address: 10.*.*.11
IP address: 10.*.*.2
IP address: *.*.*.37

(IP Adressen habe ich zensiert, da es sich um vitale und produktive Server IPs handelt)...

nun, im Code mache ich ein grep auf /IP address/ mit anschliessendem split parameter /: /
Mach mal besser /:\s+/

Hast Du Dir auch mal angeschaut, ob wirklich das in der Variablen (die Du aufteilst) steht was Du denkst?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rioc
 2008-04-21 18:27
#108653 #108653
User since
2008-04-11
15 Artikel
BenutzerIn
[default_avatar]
ja, in dem Ausschnitt ist gerade nur Text, welches in HTML Tags eingeklemmt ist...
also es werden keine HTML elemente ausgelesen, sondern nur der darin enthaltene Text...

jo, das mit /:\s+/ ist schon gut, jedoch brauche ich nur die 3 IPs welche mit genau der Anzahl an Spaces getrennt ist... die restlichen sind DNS und Gateway IPs welche nicht aufgenommen werden sollen...
kann ich dies hier irgendwie dazu limitieren nur die drei IPs auszugeben, oder müsste ich das lediglich in eine for schleiffe packen welche drei mal durchläuft?
renee
 2008-04-21 18:37
#108654 #108654
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Stehen die DNS und Gateway IPs zwischen den gleichen HTML-Tags?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rioc
 2008-04-22 10:47
#108680 #108680
User since
2008-04-11
15 Artikel
BenutzerIn
[default_avatar]
jop, alle im gleichen TAG...
kann ich ein grep u.o. split auch Case sensitive machen?
renee
 2008-04-22 11:43
#108685 #108685
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ein grep oder split kannst Du nicht Case insensitiv machen, nur den regulären Ausdruck, den Du verwendest, also

Code: (dl )
my @array = split /regex/i, $var;


bzw.

Code: (dl )
my @array = grep{ $elem =~ /regex/i }@anderes_array;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-04-22 11:44
#108686 #108686
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es wäre übrigens auch nicht schlecht, wenn Du mal eine komplette Liste mit allen möglichen IPs zeigst.

Sind DNS und Gateway IPs mit Leerzeilen von den anderen IPs getrennt?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rioc
 2008-04-22 11:50
#108687 #108687
User since
2008-04-11
15 Artikel
BenutzerIn
[default_avatar]
ah, dann ist grep bereits case sensitiv? gut ;)


yop, es sind alle mit Leerzeichen getrennt, jedoch mit einer anderen Anzahl...

Bsp:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
System Information

The following parameters were set on the configured target:
hostname: markov1
IP address: 10.X.X.11
IP address: 10.X.X.2
IP address: X.X.X.37
gateway IP address: 10.X.X.1
gateway IP address: X.X.X.1
gateway IP address: X.X.X.1
gateway IP address: X.X.X.1
time zone: MET-1METDST
DNS IP address: X.X.X.110
DNS IP address: X.X.X.142
renee
 2008-04-22 11:59
#108688 #108688
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht hilft Dir das hier weiter:
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
#!/usr/bin/perl
#
use strict;
use warnings;
use Data::Dumper;

my $text = <<"EOT";
System Information

    The following parameters were set on the configured target:
        hostname:           markov1
        IP address:         10.X.X.11
        IP address:         10.X.X.2
        IP address:         X.X.X.37
        gateway IP address: 10.X.X.1
        gateway IP address: X.X.X.1
        gateway IP address: X.X.X.1
        gateway IP address: X.X.X.1
        time zone:          MET-1METDST
        DNS IP address:     X.X.X.110
        DNS IP address:     X.X.X.142
EOT

my @lines = split /\n/, $text;
my @ips   = grep{ /(?<!DNS )IP\s+address:/ and /(?<!gateway )IP\s+address:/ }@lines;
print $_,"\n" for @ips;


Code: (dl )
1
2
3
4
rbaecker@test $ perl ip.pl
IP address: 10.X.X.11
IP address: 10.X.X.2
IP address: X.X.X.37
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten



View all threads created 2008-04-11 15:24.