Schrift
[thread]11998[/thread]

Parsen eines Strings (aus einer Website)



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
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
renee
 2008-06-11 13:36
#110965 #110965
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was soll denn am Ende rauskommen?
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/
drizzo
 2008-06-11 14:50
#110967 #110967
User since
2008-06-11
11 Artikel
BenutzerIn
[default_avatar]
Oh, ein kleines Versäumnis meinerseits.... :

Ich möchte praktisch für jedes angegebene Auto:

-Link zum Bild
-Marke
-Modell
-Baujahr
-Preis ( Eurozeichenproblem, zumindest auf der Konsole)

in einem Array um mir Mails bei bestimmten erfüllten Parametern selbst zuzustellen.

Gruß
-drizzo
renee
 2008-06-11 15:07
#110968 #110968
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (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
rbaecker@www-devel-rbaecker ~$ cat regex.pl
#!/usr/bin/perl

use strict;
use warnings;

my $string = q~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);~;

my @infos = split /new Car/, $string;
shift @infos;

my @cars;

for my $elem ( @infos ){
my @parts = $elem =~ /'([^']*?)'/g;
push @cars, [@parts[0,19,20,7,3]];
}

use Data::Dumper;
print Dumper \@cars;

rbaecker@www-devel-rbaecker ~$ perl regex.pl
$VAR1 = [
[
'http://pic.autoscout24.net/images-small/984/101/0136101984001.jpg',
'Bugatti',
'EB 110',
'06/1978',
'. 7.500,-'
],
[
'http://pic.autoscout24.net/images-small/826/783/0130783826001.jpg',
'Bugatti',
'EB 110',
'08/1977',
'. 14.890,-'
],
[
'http://pic.autoscout24.net/images-small/475/774/0054774475001.jpg',
'Bugatti',
'EB 110',
'08/1994',
'. 229.000,-'
],
[
'http://pic.autoscout24.net/images-small/105/745/0064745105001.jpg',
'Bugatti',
'EB 110',
'-',
'. 1.295.000,-'
]
];
rbaecker@www-devel-rbaecker ~$
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/
pq
 2008-06-11 16:02
#110972 #110972
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
erlaubt autoscout24 sowas? bieten die nicht nen suchagenten an?
mobile.de bietet sowas, und immoscout24 auch, von daher vermute ich mal, autoscout24
auch. die freuen sich bestimmt, wenn du den agenten benutzt statt die seite ständig
mit einem script abzurufen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
GwenDragon
 2008-06-11 19:38
#110978 #110978
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Quote
(2) AutoScout24 gewährt ihren privaten Kunden nach Maßgabe dieser Allgemeinen Geschäftsbedingungen über die Rubrik "SUCHEN" den derzeit kostenlosen Online-Zugriff auf die in der Datenbank gespeicherten Inhalte, sowie über die Rubrik "Inserieren" die Einstellung eigener Inhalte in die Datenbanken.
--- AGB (Quelle http://ww2.autoscout24.de/terms.aspx)

Über die Rubrik SUCHEN meint wohl die Benutzung der Webseite.

Kommt darauf an, was mit den Daten gemacht wird. Wenn allerdings täglich abgegrast wird und es den normalen Umfang einer Handlung eines normalen Käufers überschreitet, dann wird Autoscout24 garantiert den abfragenden Server sperren.


Und das Auslesen von Datenbanken ist so eine Sache, denn die sind als Datensammlung urheberrechtsgeschützt.
sid burn
 2008-06-11 23:57
#110981 #110981
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Über die Rubrik SUCHEN meint wohl die Benutzung der Webseite.

Nun, er nutzt doch auch die Webseite...
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
drizzo
 2008-06-12 11:19
#110984 #110984
User since
2008-06-11
11 Artikel
BenutzerIn
[default_avatar]
Danke renee,

In dieser Form hätte ich es mit Sicherheit nicht hinbekommen, denn die Anweisungen (besonders die 1.) innerhalb der for-schleife kann ich nicht ganz "nachempfinden".

Mir ist klar, was sie macht, dennoch würde ich ich Sie vermutlich nicht aus meiner Hand schütteln.

Zu den AGBs:
Darf ich nur mit Internet Explorer oder Firefox zugreifen ? Mit Sicherheit nicht, und ich nutze die Inhalte ja in der Form, wie sie angegeben sind und versuche nicht Ihre Datenbank zu replizieren um autoacout25 zu erschaffen, viel mehr möchte ich die Webseite selbst nicht ständig besuchen, weil sie mir teilweise zuviel Zeit raubt.

Warum und vor allem wie sollten sie eine dynamisch wechselnde IP sperren ?

Gruß aus dem sonnigen Garten,
- drizzo
pq
 2008-06-12 17:06
#110994 #110994
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also ich würde mal sagen, wenn nichts in der agb steht, was skripte verbietet, können sie dir
nichts, aber ich würde mich an deiner stelle trotzdem zurückhalten. also bloss nicht zu oft aufrufen
und zuviele datenmengen. es geht halt darum, dass du nicht zuviel traffic und last erzeugst.
ich weiss aus eigener erfahrung, dass webseitenbetreiber sowas nicht mögen. dafür bieten
sie ja auch suchagenten an. autoscout24 finanziert sich ja auch mit werbung und bezahlten
inseraten, somit umgehst du ihre einnahmequelle.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
drizzo
 2008-06-14 19:16
#111038 #111038
User since
2008-06-11
11 Artikel
BenutzerIn
[default_avatar]
@pq:

ja wenn man es nicht übertreibt, sollte alles im Bereich des grünen sein.
ich mach es nur, damit ich selbst abgrasen kann,was für mich relevant ist und mir zumailen kann, damit ich für mich alle relevanten Daten auf meinem Handy habe.

Danke aber dennoch für die Einwände / Anregungen bzgl. der Rechtsgrundlage.

Das war im Falle von a24 recht einfach, ich sitze allerdings schonam nächsten, der mir nun mehr Sorgen macht, weil der quellcode da nicht so einfach auszulesen ist.

Gruß
drizzo
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-06-11 13:30.