Thread Parsen eines Strings (aus einer Website) (13 answers)
Opened by drizzo at 2008-06-11 13:30

drizzo
 2008-06-11 13:30
#110964 #110964
User since
2008-06-11
11 Artikel
BenutzerIn
[default_avatar]
Grüße Gemeinde,

ich versuche einen String zu parsen, habe aber inzwischen immer mehr Probleme, obwohl die Lösung auf den ersten Blick ganz einfach aussieht.

Erstmal die "Line", die ich meine, damit ihr wisst, worum es geht.
Sie ist lang,ich habe es nur der Übersicht halber umgebrochen.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var cars=new Array();cars[0]=new Car('http://pic.autoscout24.net/images-small/984/101/0136101984001.jpg',
'8 Bilder','/Details.aspx?id=bd1vul43oeno',false,'€ 7.500,-','€ 0,-','','25.000','06/1978','37/50','37 kW / 50','Bugatti EB 110 replica',
'','','','D-81673','München','','','Weiß','Bugatti','EB 110','Benzin'
,false,'bd1vul43oeno','Schaltgetriebe',false,'',false,'','',false);cars[1]=
new Car('http://pic.autoscout24.net/images-small/826/783/0130783826001.jpg',
'6 Bilder','/Details.aspx?id=bdu23n3wqbss',false,'€ 14.890,-','€ 0,-','','1','08/1977','44/60','44 kW / 60','Bugatti EB 110 Bugatti 35 Replika','','','',
'D-51588','Nümbrecht','','','Blau','Bugatti','EB 110','Benzin',false,'bdu23n3wqbss','',false,'',false,'','',false);cars[2]=
new Car('http://pic.autoscout24.net/images-small/475/774/0054774475001.jpg',
'15 Bilder','/Details.aspx?id=fe22yo2zsbk',false,'€ 229.000,-','€ 0,-','','17.670','08/1994','412/560','412 kW / 560',
'Bugatti EB 110 EB 110 GT*Deutsche Auslieferung*','','ABS, Alarmanlage, Allrad, Elektr. Fensterheber, Klima, Klimaautomatik,
Lederausstattung, Zentralverriegelung',
'','D-53498','Bad Breisig','','','blau','Bugatti','EB 110','Benzin',false,'fe22yo2zsbk','Schaltgetriebe',false,'',false,'','',false);
cars[3]=new Car('http://pic.autoscout24.net/images-small/105/745/0064745105001.jpg'
,'2 Bilder','/Details.aspx?id=ge2yzluzmgp',false,'€ 1.295.000,-','€ 0,-','','0','-','736/1001','736 kW / 1001','Bugatti EB 110 Veyron 16.4','',
'ABS, Airbag, Alarmanlage, Beifahrer Airbag, Bordcomputer, Elektr. Fensterheber, Elektrische Sitze, Klima, Klimaautomatik, Lederausstattung...','',
'D-46325','Borken','','','silber oder rot Metallic','Bugatti','EB 110','Benzin',false,'ge2yzluzmgp','Automatik',false,'',false,'','',false);// -->


Diese Zeile möchte ich nun für jedes neue Auto parsen und trenne nach ';cars[1]=new Car' per split diesen String.

Hintergrund, ich möchte mir ein Script basteln, welches mich immer per E-Mail informiert über alle Autos dieser Reihe.

mein bisheriger, gescheiterter Versuch:

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
use strict;
use warnings;
use Data::Dumper;
use LWP::Simple;

my @cars;

my $page = get("http://www.autoscout24.de/List.aspx?vis=1&make=15&model=15677&pricefrom=1000&cy=D&page=1&maxresults=500&results=20&ustate=N&ustate=U&um=True&sort=price&zipc=D");

my @lines = split(/\n/, $page);

foreach my $line (  @lines )
{
        next if $line !~ m/var\ cars/;
        my @results = split (/new Car/, $line);
        foreach my $result ( @results )
        {
                #print "==================\n" . $result . "\n";
                if ( $result =~ m// ) {
                        $bezeichnung = $1

                }
        }
}
my $d = Data::Dumper->new ( \@cars );
my $data = $d->Dump;


Desweitern habe ich ein Problem mit dem Euro-Zeichen (Konsole, Debian 4.0, v5.8.8)

Über Vorschläge oder Lösungsansätze wäre ich erfreut, natürlich auch bei Performance/Stil - Verbesserungsvorschlägen.

danke
-drizzo

View full thread Parsen eines Strings (aus einer Website)