Andreas: Aktienkurse automatisch von Internetseite abfragen

0 48

Aktienkurse automatisch von Internetseite abfragen

Andreas
  • programmiertechnik
  1. 0
    Günter Frhr.v.Gravenreuth
    1. 0
      Philipp Hasenfratz
    2. 0
      Andreas
      1. 0
        Philipp Hasenfratz
        1. 0
          Rol
          1. 0
            Philipp Hasenfratz
          2. 0
            Philipp Hasenfratz
          3. 0
            Matti Maekitalo
            1. 0
              Philipp Hasenfratz
            2. 0

              Spreadsheet::WriteExcel erzeugt "kaputte" xls-Datei!?

              Andreas
              1. 0
                Philipp Hasenfratz
                1. 0
                  Andreas
                  1. 0
                    Philipp Hasenfratz
                    1. 0
                      Andreas
                      1. 0
                        Philipp Hasenfratz
                        1. 0
                          Rol
                          1. 0
                            Philipp Hasenfratz
                            1. 0
                              Andreas
                              1. 0
                                Philipp Hasenfratz
                                1. 0
                                  Andreas
                                  1. 0

                                    Wanted: Linux-Specialist

                                    Philipp Hasenfratz
                                  2. 0
                                    Matti Maekitalo
                                    1. 0
                                      Andreas
                                      1. 0
                                        Matti Maekitalo
                                        1. 0
                                          Andreas
                  2. 0

                    ich liebe dieses Modul ;)

                    Philipp Hasenfratz
                    • software
    3. 0
      Reiner
  2. 0
    Philipp Hasenfratz
    1. 0
      Andreas
      1. 0
        Philipp Hasenfratz
  3. 0
    Matti Maekitalo
  4. 0
    Michael Schröpl
    1. 0
      Andreas
  5. 0

    Brauche Hilfe bei regulärem Ausdruck!

    Andreas
    1. 0
      Philipp Hasenfratz
      1. 0
        Andreas
        1. 0
          Andreas
          1. 0
            Andreas
            1. 0
              Philipp Hasenfratz
              1. 0
                Andreas
                1. 0
                  Philipp Hasenfratz
                  1. 0
                    Andreas
                    1. 0

                      wieder vertippt ;-)

                      Andreas
                      • menschelei
                      1. 0
                        Philipp Hasenfratz
                    2. 0
                      Philipp Hasenfratz
          2. 0
            Philipp Hasenfratz
        2. 0
          Philipp Hasenfratz

Hallo!
Ich habe vor einem knappen Jahr bei meiner damaligen Arbeit jemanden kennegelernt, der wirklich supergut mit allen Office-Programmen umgehen konnte, vor allem schrieb der super Makros. Hätte nicht gedacht was damit möglich ist!

Unter anderem hatte er ein Makro geschrieben, mit dem er ich glaube aus dem Yahoo Finanz-Prortal, aktuelle Aktienkurse bestimmter Aktien abfragen konnte. Diese wurden dann automatisch ein eine in ein Excel-Sheet eingefügt(sehr praktische Sache!). Fand das sehr beeindruckend, leider habe ich heute keinen Kontakt mehr zu ihm, aber ich verstehe immer noch kein bisschen, wie das funtionieren soll, jetzt mal abstrahiert von Excel und Makros... wie soll man denn überhaupt an so einen Wert kommen? Ich könnte z.B. mit fsockopen() aus PHP Verbindung zu einer bestimmten Seite aufnehmen, auch an die Seite zu einer speziellen Aktie, aber wie kommt dann der Aktienkurs in das ursprüngliche Script? Kann das nicht verstehen. Das sind doch fertige html-Dokumente die man da hat, man kann ja nicht direkt auf die DB dahinter zugreifen!

Hat jemand hier eine Idee wie sowas funktioniert?

Viele Grüße
Andreas

  1. Hallo!
    Ich habe vor einem knappen Jahr bei meiner damaligen Arbeit jemanden kennegelernt, der wirklich supergut mit allen Office-Programmen umgehen konnte, vor allem schrieb der super Makros. Hätte nicht gedacht was damit möglich ist!

    Unter anderem hatte er ein Makro geschrieben, mit dem er ich glaube aus dem Yahoo Finanz-Prortal, aktuelle Aktienkurse bestimmter Aktien abfragen konnte. Diese wurden dann automatisch ein eine in ein Excel-Sheet eingefügt(sehr praktische Sache!).

    Rechtlich aber mehr als bendenklich!

    LG München I "Meta-Nachrichtendienst"  (Az.: 7 O 6910/01)
    Eine Metasuchmaschine, die zur Verfolgung eigener wirtschaftlicher Interessen systematisch Rubri-ken, Schlagzeilen und Teaser  von Artikeln einer News-Website ausliest und unmittelbar auf die Voll-text verlinkt, verletzt die Rechte des Datenbankherstellers.
    Urteil vom 18.9. 2001

    Mit freundlichen Grüßen

    Günter Frhr.v.Gravenreuth
    Rechtsanwalt, Dipl.Ing.(FH)

    1. Halihallo

      Ich habe vor einem knappen Jahr bei meiner damaligen Arbeit jemanden kennegelernt, der wirklich supergut mit allen Office-Programmen umgehen konnte, vor allem schrieb der super Makros. Hätte nicht gedacht was damit möglich ist!

      Unter anderem hatte er ein Makro geschrieben, mit dem er ich glaube aus dem Yahoo Finanz-Prortal, aktuelle Aktienkurse bestimmter Aktien abfragen konnte. Diese wurden dann automatisch ein eine in ein Excel-Sheet eingefügt(sehr praktische Sache!).

      LG München I "Meta-Nachrichtendienst"  (Az.: 7 O 6910/01)
      Eine Metasuchmaschine, die zur Verfolgung eigener wirtschaftlicher Interessen systematisch Rubri-ken, Schlagzeilen und Teaser  von Artikeln einer News-Website ausliest und unmittelbar auf die Voll-text verlinkt, verletzt die Rechte des Datenbankherstellers.
      Urteil vom 18.9. 2001

      Ich glaube, dass Andreas dieses Script zum eigenen Gebrauch verwendet und somit nicht gegen diese Gesetzgebung verstossen würde, da die Daten nicht für einen kommerziellen Zweck verwendet werden. Aber bedenklich bleibt es noch immer, zuweilen diese Daten Urheberrechtlich geschützt sind.

      Viele Grüsse

      Philipp

    2. Guten Abend!

      Rechtlich aber mehr als bendenklich!

      kommt wohl auf den Einsatzzweck an, oder?

      LG München I "Meta-Nachrichtendienst"  (Az.: 7 O 6910/01)
      Eine Metasuchmaschine, die zur Verfolgung eigener wirtschaftlicher Interessen systematisch Rubri-ken, Schlagzeilen und Teaser  von Artikeln einer News-Website ausliest und unmittelbar auf die Voll-text verlinkt, verletzt die Rechte des Datenbankherstellers.
      Urteil vom 18.9. 2001

      Was hat der Datenbankhersteller denn damit zu tun? In welchem Rahmen ist denn sowas erlaubt, so wie ich das verstehe doch nur wenn ich diese Informationen dann auf einer komerziellen Webseite einsetze, oder muß ich dafür Sorge tragen, dass NIEMAND außer mir dazu Zugang erhält(mit Login) - oder ist das ganz verboten?

      Was ich nur beabsichtige, ist dieses Excel Makro "nachzubauen". Leider beherrsche ich VBA nicht wirklich gut, daher PHP, was "leider" den Nachteil hat, das ich es nicht in eine Applikation wie Excel einbinden kann, daher überlege ich, das evtl täglich auszuführen und in eine csv-Datei zu schreiben(automatisch), die ich dann in Excel verwenden kann. Ich würde nie auf die Idee kommen, mir ne Seite wie 'www.aktienkurse.de' zu bauen, und dann die Kurse woanders her zu klauen! Das sieht ja ein Blinder mit Krückstock das das Konsequenzen haben muß, wenn man schon bei seinen Links so ein Theater am Hals haben kann!

      Viele Grüße

      -- Andreas

      1. Halihallo

        Was ich nur beabsichtige, ist dieses Excel Makro "nachzubauen". Leider beherrsche ich VBA nicht wirklich gut, daher PHP, was "leider" den Nachteil hat, das ich es nicht in eine Applikation wie Excel einbinden kann, daher überlege ich, das evtl täglich auszuführen und in eine csv-Datei zu schreiben(automatisch), die ich dann in Excel verwenden kann. Ich würde nie auf die Idee kommen, mir ne Seite wie 'www.aktienkurse.de' zu bauen, und dann die Kurse woanders her zu klauen! Das sieht ja ein Blinder mit Krückstock das das Konsequenzen haben muß, wenn man schon bei seinen Links so ein Theater am Hals haben kann!

        eine Lösung in Perl könnte ich dir anbieten, vielleicht hilft's dir ja irgendwie (vielleicht beschäftigst du dich ja früher mit Perl, als erwartet :-) ) :

        use strict;
        use OLE;

        eine Instanz von Excel öffnen

        my $app = CreateObject OLE "Excel.Application" or
         die "OLE mag micht nicht";

        Ich will auch sehen, was da so eingefügt wird. Zudem interessiert

        es mich immer, was denn mein Computer eigentlich macht.

        $app->{'Visible'} = 1;

        Neues Sheet erstellen

        $app->Workbooks->Add();

        Jetzt kommt das Interessante:

        $app->Range("A1")->{'Value'} = "Name";
        $app->Range("B1")->{'Value'} = "Vorname";
        $app->Range("C1")->{'Value'} = "Adresse";
        $app->Range("D1")->{'Value'} = "Ort";

        $app->Range("A2")->{'Value'} = "Hasenfratz";
        $app->Range("B2")->{'Value'} = "Philipp";
        [...]

        und auf wiedertschüss

        $app->Quit();

        Viele Grüsse

        Philipp

        1. Hi Philipp,

          eine Lösung in Perl könnte ich dir anbieten, vielleicht hilft's dir ja irgendwie (vielleicht beschäftigst du dich ja früher mit Perl, als erwartet :-) ) :

          use strict;
          use OLE;

          eine Instanz von Excel öffnen

          my $app = CreateObject OLE "Excel.Application" or
          die "OLE mag micht nicht";

          ...

          Das habe ich gerade mal ausprobiert.
          Ist ja Wahnsinn!
          Ich habe , denke ich, schon einiges über Perl gelesen und auch schon einiges damit gemacht aber dass es _so_ einfach ist Applikationen wie Exel damit zu "bedienen" hätte ich nicht gedacht.

          Kanst du mit 'nen Tipp gebe, wo ich darüber noch mehr erfahren kann (Buch oder Website) ?

          Viele Grüße

          Rol

          1. Halihallo

            eine Lösung in Perl könnte ich dir anbieten, vielleicht hilft's dir ja irgendwie (vielleicht beschäftigst du dich ja früher mit Perl, als erwartet :-) ) :

            [...]

            Das habe ich gerade mal ausprobiert.
            Ist ja Wahnsinn!

            Freut mich sehr zu hören! - Über solche Postings freu ich mich immer.

            Ich habe , denke ich, schon einiges über Perl gelesen und auch schon einiges damit gemacht aber dass es _so_ einfach ist Applikationen wie Exel damit zu "bedienen" hätte ich nicht gedacht.

            Naja, OLE von M$ hat schon Vorteile. btw: Wenn du mit ASP ein Objekt iniziierst, mit Server.CreateObject, macht es _genau_ das selbe. Das ist nämlich nix anderes, als auf OLE zuzugreifen. Somit kann Perl auch alles, was ASP kann und noch viel mehr :-) aber das nur neben bei, um Perl mal wieder hochzuloben ...

            z. B. um auf einen CC-Payment zuzugreifen, oder OLEDB zu benutzen, o. ä.

            Kanst du mit 'nen Tipp gebe, wo ich darüber noch mehr erfahren kann (Buch oder Website) ?

            direkt nein, da ich eigentlich sehr wenig OLE kann (bzw. einfach keine Lust habe, sämtliche OLE Interfaces zu den Office-Applications o. ä. auswendig zu lernen); aber du findest viel zum Thema OLE über Google.

            http://www.kidasa.com/information/programmers/excel/oleexcel.html ist glaub ich ganz nett, um einige Beispiele zu sehen (zwar in VBScript, aber das OLE-Interface bleibt genau das selbe). Das hab ich grad mal gefunden.

            Weitere Hilfe (wenn auch sehr schlecht Dokumentiert) findest du in der Hilfe der jeweiligen Office-Produkten; etwas genauer: VBA (Visual Basic for Applications) verwendet _genau_ diese OLE-Schnittstellen, schau einfach mal in den VBA-Sections der Hilfe nach.

            Aber eben: Google hilft dir schon sehr viel. Dort findest du viele Beispiele und Beschreibungen von OLE.

            Viele Grüsse

            Philipp

          2. Halihallo again

            hab da noch zwei alte Scripts irgendwo auf einer alten, verstaubten Festplatte gefunden. Keine Ahnung, ob die funktionieren (oder je funktioniert haben), aber ich denke, dass doch nochmals einige Interfaces zu OLE-Objekten aufzeigen. Vielleicht kannst du ja das eine oder andere gebrauchen:

            Ein Beispiel zu OLEDB (ich glaube mich noch erinnern zu können, dass dieses Script nicht funktioniert hat, was mich ziemlich frustete; zudem hatte ich damals anscheinend noch nix von use strict gehört :-) ) :

            use Win32::OLE;
            use Win32::ADO qw/CheckDBErrors/;
            use Data::Dumper;
            $ado = Win32::OLE->new("ADODB.Connection") or die "no create!";
            if (Win32::OLE->LastError != 0) {
               die Win32::OLE->LastError;
            }
            $ado->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=c:\test.mdb");
            if (Win32::OLE->LastError != 0) {
               die Win32::OLE->LastError;
            }
            my $SQL = "SELECT * FROM Address";
            $rs = $ado->Execute("$SQL");
            if (Win32::OLE->LastError != 0) {
               die Win32::OLE->LastError;
            }
            $rs->MoveFirst;
            if (Win32::OLE->LastError != 0) {
               die Win32::OLE->LastError;
            }
            print $rs->item("Name")."\n";
            print Dumper($rs);

            -----

            oder ein kleines Beispiel zum FileSystemObject (dieses wird ja rege bei ASP gebraucht, also hierzu das Beispiel, dass es auch mit der Perle funktioniert):

            use Win32::OLE;
            use Data::Dumper;
            sub err {
               if (Win32::OLE->LastError != 0) {
                  die "OLE-ERROR: " . Win32::OLE->LastError;
               }
            }
            $fso = Win32::OLE->CreateObject("Scripting.FileSystemObject");
            &err;
            $stream = $fso->OpenTextFile("c:\autoexec.bat", 1);
            &err;
            while (! $stream->AtEndOfStream) {
               $t = $stream->ReadLine;
               &err;
               print "$t\n";
            }

            -----

            Viele Grüsse und viel Spass mit OLE

            Philipp

          3. use Mosche;

            use OLE;

            eine Instanz von Excel öffnen

            my $app = CreateObject OLE "Excel.Application" or
            die "OLE mag micht nicht";
            ...

            Ich habe , denke ich, schon einiges über Perl gelesen und auch schon einiges damit gemacht aber dass es _so_ einfach ist Applikationen wie Exel damit zu "bedienen" hätte ich nicht gedacht.

            Tja, neben dem Ansatz über OLE gibt es noch zwei weitere, um "Excel" zu benutzen. Sie bedienen nicht Excel für dich, sondern sind in der Lage, Excel Dateien zu lesen und zu ändern. Alle dementsprechenden Module sind aber noch sehr neu und sind nicht gerade "funktionsreich", damit meine ich, es wird damit nicht möglich sein, viel mehr als einfache Tabellenänderungen zu machen.

            1. Der Excel Ansatz:
            Hier gibt es die Module Spreadsheet::ParseExcel (zum Lesen) und Spreadsheet::WriteExcel (zum Schreiben). Sie bieten erweiterte Möglichkeiten auf das Excel Arbeitsblatt, wie zum Beispiel Zellfarben, Rahmen, u.ä.. Dokumentation und Anwendungsbeispiele findest du unter http://search.cpan.org/doc/JMCNAMARA/Spreadsheet-WriteExcel-0.37/WriteExcel.pm und http://search.cpan.org/doc/KWITKNR/Spreadsheet-ParseExcel-0.26/ParseExcel.pm.

            Vorteil dieser Lösungen ggü. dem von Philip geposteten Ansatz - er ist betriebssystem-unabhängig, es wird _kein_ installiertes Excel verlangt (kann ein _unschätzbarer_ Vorteil werden, glaub es mir). Nachteil ist allerdings, dass diese Module recht jung sind und nicht die gleiche Funktionsvielfalt erreichen wie der OLE Ansatz.

            2. Der Datenbank-orientierte Ansatz:
            Wenn du dein Excel Sheet als Datenbank "mißbrauchen" willst, ist dieser Ansatz der sinnvollste. Zur Info: Für Datenbankverbindungen benutzt man mit Perl meist das Modul DBI, dass eine _einheitliche_ Verbindung zu fast allen Datenbanken herstellen kann. Auch für Excel gibt es einen dementsprechenden Datenbanktreiber. Dass kann vorteilhaft sein, wenn du deine ARbeitsblätter als Datenbank mißbrauchst und momentan die Werte aber noch manuell mit Excel pflegen können willst aber später vielleicht ein Umstieg auf eine richtige Datenbank (MySQL, PostgreSQL, ...) in Betracht kommt. Der Portierungsaufwand ist dann minimal (es müssen tatsächlich nur _sehr_ wenige Zeilen geändert werden, um dann von Excel auf DB zu ändern). Nachteil: Du kannst nur Werte in Tabellen eintragen, Tabellenformatierung ist nicht möglich. Der passende generische Datenbanktreiber für das DBI-Modul heisst DBD::Excel (Doku unter http://search.cpan.org/doc/KWITKNR/DBD-Excel-0.05/Excel.pm).
            Diese Lösung ist eine Verallgemeinerung von 1.

            Diese Lösung sind praktischer, da sie kein Excel voraussetzen und damit zB auch unter Linux zu benutzen sind.

            use Tschoe qw(Matti);

            1. Halihallo Matti

              [...]

              Vielen Dank für deine Stellungnahme. Übrigens sind deine Lösungen auch viel performanter, nur so nebenbei, OLE ist nicht grad das schnellste (bzw. die Dienstprogis). Besonders dann nicht, wenn noch keine Instanz des entsprechenden Providers offen ist.

              OLE macht dann besonders Sinn, wenn man z. B. schon sehr viel mit VBA der entsprechenden Programme gearbeitet hat, da man dann das Interface schon kennt, was man u. U. von den Perlmodulen nicht tut.
              Oder wenn man auf installierte COM-Komponenten des Rechners zugreifen will. Ich hatte mal ein Projekt, wo ich über Perl auf einen CC-Payment zugreifen musste; dieser Dienst konnte über eine COM-Komponente angesprochen werden und dies ist ja wohl nicht einfacher, als über OLE zu machen.

              Aber zu DBI versus OLEDB in Sachen Performance: http://forum.de.selfhtml.org/archiv/2001/11/516/#m3324, diego hat sich dort kurz zum Thema Performance von ADO geäussert, hier das Zitat der entsprechenden Textstelle:

              <zitat>
              ADO "IST" nach wie vor die geeignete Methode des Zugriffs auf Datenbestände durch ASP-Scripten. Die Performance (richtig konfiguriert) outperformed selbst jedes Lönix-mysql-apache Gespann, gerade bei komplexen Datenbeständen. Ich will jedoch nicht weiter auf die polemisierenden Teile des Bezugs eingehen, denn die Frage war ne andere...
              </zitat>

              Viele Grüsse

              Philipp

            2. Hallo!

              #!/usr/bin/perl -w

              print "Content-type: text/html\n\n" ;

              use Spreadsheet::WriteExcel;

              # Create a new Excel workbook
                  my $workbook = Spreadsheet::WriteExcel->new("perl.xls");

              # Add a worksheet
                  $worksheet = $workbook->addworksheet();

              #  Add and define a format
                  $format = $workbook->addformat(); # Add a format
                  $format->set_bold();
                  $format->set_color('red');
                  $format->set_align('center');

              # Write a formatted and unformatted string, row and column notation.
                  $col = $row = 0;
                  $worksheet->write($row, $col, "Hi Excel!", $format);
                  $worksheet->write(1,    $col, "Hi Excel!");

              # Write a number and a formula using A1 notation
                  $worksheet->write('A3', 1.2345);
                  $worksheet->write('A4', '=SIN(PI()/4)');

              Habe auch contend type weggelassen, bringt auch nichst. Muß da evtl was anderes hin? Jedenfalls wird eine 5 KB große xls-Datei erzeugt nur die kann Excel nicht öffnen(beschädigt...) Was könnte das Problem sein?
              Spreadsheet::WriteExcel habe ich jedenfalls auf dem Server installiert.

              Grüße
              Andreas

              1. Halihallo

                [...]

                Habe auch contend type weggelassen, bringt auch nichst.

                Welchen Content-Type denn? - Doch nicht etwa der HTTP-Header, der ändert nämlich gar nix an der Sache...

                Muß da evtl was anderes hin? Jedenfalls wird eine 5 KB große xls-Datei erzeugt nur die kann Excel nicht öffnen(beschädigt...) Was könnte das Problem sein?

                Also bei mir gibt's die selbe Datei, hat auch 5 KB, aber mit dem Unterschied, dass die Datei perfekt geöffnet werden kann.
                Ich verwende MS Excel 97. Mit dem funktioniert es wunderbar.
                Könnte es u. U. sein, dass es an der Excel Version happert?

                Viele Grüsse

                Philipp

                1. Hi!

                  Welchen Content-Type denn? - Doch nicht etwa der HTTP-Header, der ändert nämlich gar nix an der Sache...

                  in PHP muß man sich um sowas nicht kümmern, aber in diesem Fall in PERL wohl auch nicht, oder?

                  Also bei mir gibt's die selbe Datei, hat auch 5 KB, aber mit dem Unterschied, dass die Datei perfekt geöffnet werden kann.
                  Ich verwende MS Excel 97. Mit dem funktioniert es wunderbar.
                  Könnte es u. U. sein, dass es an der Excel Version happert?

                  Das glaube ich nicht. Außerdem meine ich da gelesen zu haben, für alle von 95 - 2000... ich glaube die Formate sind zumindest abwärtskompatibel. ich habe aber gar keine Ahnung von PERL, wahrscheinlich mache ich irgend einen Anfängerfehler. Wie führst Du das  Script denn aus? Änderst Du irgendwas an irgendwelchen Rechten? Aber allein die Tatsache, das eine 5KB große Datei erzeugt wurde heißt doch, das es grundsätzlich funktioniert hat, oder. Ich bekomme auch keiuen Fehler oder was weiß ich. Ich habe es einmal über den Browser und einmal über SSH ausgeführt (habe dieses Modul nicht lokal installiert)
                  ich weiß nicht, was könnte ich denn noch falsch machen?

                  Hast Du das alles so wie es im Posting stand kopiert und eingefügt?

                  Grüße
                  Andreas

                  1. Halihallo again

                    Welchen Content-Type denn? - Doch nicht etwa der HTTP-Header, der ändert nämlich gar nix an der Sache...

                    in PHP muß man sich um sowas nicht kümmern, aber in diesem Fall in PERL wohl auch nicht, oder?

                    In diesem Fall bestimmt nicht. Den Content-Type brachst ja nur, um dem _Browser_ zu sagen, welcher Art die Daten sind. Dein Script ist ja keine CGI-Anwendung und auch nicht für den Webserver gedacht, deshalb kannst du dies getrost weglassen. Ausser du startest das Script übern Webserver, dann wird's wohl ganz gut sein, wenn du den Header übermittelst. Aber unterm Strich hat das gar nix mit der .xls Datei zu tun, diese wird nämlich dadurch nicht beeinflusst.
                    Der Grund, warum du das in php nicht, in perl aber doch machen musst (Content-Type) ist, dass Perl nicht ausschliesslich für Internetzwecke gemacht war (sogar eher im Gegenteil, CGI-Anwendungen für Internet ist nur eine kleine "Erweiterung" der Anwendungsmöglichkeiten). Klar, dass das senden des HTTP-Headers nicht implementiert ist, sondern explizit gemacht werden muss.

                    Also bei mir gibt's die selbe Datei, hat auch 5 KB, aber mit dem Unterschied, dass die Datei perfekt geöffnet werden kann.
                    Ich verwende MS Excel 97. Mit dem funktioniert es wunderbar.
                    Könnte es u. U. sein, dass es an der Excel Version happert?

                    Das glaube ich nicht. Außerdem meine ich da gelesen zu haben, für alle von 95 - 2000... ich glaube die Formate sind zumindest abwärtskompatibel.

                    Das stimmt eigentlich. Das hat mich eben auch verwirrt, aber ich habe keinen Fehler im Perl-Programm gefunden; dann war's naheliegender, dass da M$ was nicht kann ;)

                    ich habe aber gar keine Ahnung von PERL, wahrscheinlich mache ich irgend einen Anfängerfehler.

                    Ich glaube nicht...

                    Wie führst Du das  Script denn aus? Änderst Du irgendwas an irgendwelchen Rechten? Aber allein die Tatsache, das eine 5KB große Datei erzeugt wurde heißt doch, das es grundsätzlich funktioniert hat, oder.

                    In der Tat. Dass die Datei erstellt wird heisst ja, dass das Script einwandfrei funktioniert und auch gestartet wird. Aber zum Testen könntest du ja eine simple Ausgabe an das Ende hängen, ala.

                    print "got hopefully, successfully to the end";

                    wenn du diese Zeile dann siehst, ist dein Programm hopefully, successfully beendet worden.

                    Ich bekomme auch keiuen Fehler oder was weiß ich. Ich habe es einmal über den Browser und einmal über SSH ausgeführt (habe dieses Modul nicht lokal installiert)

                    btw. dann ist auch Content-Type sinnvoll, da sonst dein Browser nix damit anfangen kann (obwohl die Datei natürlich trotzdem erstellt wird), aber dann siehst du "got ... to the end" nicht (wohl aber über SSH).

                    ich weiß nicht, was könnte ich denn noch falsch machen?

                    Gute Frage... Hast du schon mal versucht die genannte Datei wieder über Spreadsheet::ParseExcel einzulesen? - Meldet dieses Modul auch einen Fehler?

                    Versuch mal in Excel Datei-Öffnen und dann irgendwie Excel 97 - Datei - Typ zu wählen (also explizit die Version des Dokumentes anzugeben), vielleicht ändert das ja was.

                    Hast Du das alles so wie es im Posting stand kopiert und eingefügt?

                    Exakter Copy-Paste, sogar mit Zeilenumbrüchen ;) oder ;(

                    Viele Grüsse

                    Philipp

                    1. Hi!
                      man,man,man.... wenn ich dei Datei üebr den Browser(http) runterlade geht es, wenn ich über ftp runterlade dann nicht. Muß wahrscheinlich explizip auf binär umstellen was? Obwohl das Tool das normalerweise selbst macht, naja, aber hat sich erledigt, siehst Du macl wieder, wie lange ich jetzt gebraucht habe, so was dummes zu merken... im Prinzip war von Anfang an alles in Ordnung :-)
                      Sorry für die Umstände :-)

                      Grüße
                      Andreas

                      1. Halihallo

                        man,man,man.... wenn ich dei Datei üebr den Browser(http) runterlade geht es, wenn ich über ftp runterlade dann nicht. Muß wahrscheinlich explizip auf binär umstellen was?

                        siehe Mail an dich. Mir ist genau der selbe Gedanken gekommen (wahrscheinlich sogar in der selben Sekunde; bist du Thelepat???)

                        Obwohl das Tool das normalerweise selbst macht, naja, aber hat sich erledigt, siehst Du macl wieder, wie lange ich jetzt gebraucht habe, so was dummes zu merken... im Prinzip war von Anfang an alles in Ordnung :-)

                        Mir ist's wie gesagt auch erst in der selben Sekunde in den Sinn gekommen; nämlich als ich die Datei mit Excel öffnete und diesen scheiss Dialog von wegen beschädigt aufgegangen ist, gling, glong, das erinnert mich doch an etwas, ... grübel, grübel, richtig, Andreas sagte, er generiere die Datei auf'm Server => Übertragung Unix/Windoof => binary, juhuii, ich glaub ich hab den Fehler gefunden. Schreibe zurück, aktualisiere SelfForum, hui, Andreas hat genau das selbe geschrieben ;) Hehe, cool ;) Problem gelöst ...

                        Sorry für die Umstände :-)

                        Was denn für Umstände??? - War doch interessant ;)
                        Wir haben ja _alle_ was dabei gelernt, also sind die Umstände (wenn auch überhaupt Existent) nicht wichtig oder gar nichtig ;)

                        Viele Grüsse

                        Philipp

                        1. Halihallo

                          Was denn für Umstände??? - War doch interessant ;)
                          Wir haben ja _alle_ was dabei gelernt...

                          Auch die _nur_Mitleser_ ;-)).

                          Danke.

                          Rol

                          1. Halihallo Herr Passiv-Lektor Rol ;)

                            Was denn für Umstände??? - War doch interessant ;)
                            Wir haben ja _alle_ was dabei gelernt...

                            Auch die _nur_Mitleser_ ;-)).
                            Danke.

                            Hehe, die hab ich ja ganz vergessen... Hast recht und ist auch gut so; das ist ja auch wohl der Zweck eines Forums... Auch eine indirekte Hilfe ist ne gute Hilfe, in diesem Sinne...

                            Hab mich vorher eigentlich nie um Spreadsheet::ParseExcel und -WriteExcel gekümmert (das Modul war mir zwar bekannt, aber benutzt hab ich's nie); jetzt bin ich kräftig am .xsl Files generieren. Z. B. bin ich grad an einem schönen Programm, welches mir eine Zusammenfassung über die Dateilängen (Datei A, 5A4 Seiten, Datei B, 10 A4 Seiten, ...) eines Projektes als .xml Datei exportiert... Früher war'd das mit html gemacht, aber man soll ja Wissen anwenden und nicht brach liegen lassen...

                            Viele passive Grüsse (auch an die _anderen_nur_Mitleser_) ;)

                            Philipp

                            1. Moin, Moin zusammen!

                              Hehe, die hab ich ja ganz vergessen... Hast recht und ist auch gut so; das ist ja auch wohl der Zweck eines Forums... Auch eine indirekte Hilfe ist ne gute Hilfe, in diesem Sinne...

                              Vor allem passiert es mir immer noch zu oft, das ich eine Frage stelle, und irgendwann feststelle, dass die Antwort schon mehrfach im Archiv steht, manchmal hat man halt das Problem vernünftige Suchbegriffe zu finden, naja...

                              [...] jetzt bin ich kräftig am .xsl Files generieren.

                              das geht auch damit? Ich war froh als ich überhaupt eine xls-Datei einwandfrei öffnen konnte... so unterscheiden sich halt die Ansprüche ;-)
                              Und was ist daran besser als an Deiner vorherigen Methode? Gibt es keine speziellen xml-Module in PERL, die da besser geeignet sind?

                              Nochmal eine Frage zur Übertragung im binären Modus. Wenn ich die Datei jetzt auf einem Webserver generiere, und dann einfach über einen Link runterladen lasse, habe ich dann die Gewähr, dass das in allen Browsern binär runtergeladen wird? Nicht das ich glaube ich hätte da ein Superfeature, nur geht das dann lediglich bei jedem 3.!

                              Viele passive Grüsse (auch an die _anderen_nur_Mitleser_) ;)

                              auch von mir!

                              -- Andreas

                              PS: perldoc.org z.B. kenne ich, und auch andere Quellen, aber hat mir schon öfter jemand gesagt, führe einfach "perldoc..." aus - nur leider weiß ich bis heute nicht wo!? In der SHELL geht das nicht! Wo denn sonst?

                              1. Halihallo Andreas

                                Hehe, die hab ich ja ganz vergessen... Hast recht und ist auch gut so; das ist ja auch wohl der Zweck eines Forums... Auch eine indirekte Hilfe ist ne gute Hilfe, in diesem Sinne...

                                Vor allem passiert es mir immer noch zu oft, das ich eine Frage stelle, und irgendwann feststelle, dass die Antwort schon mehrfach im Archiv steht, manchmal hat man halt das Problem vernünftige Suchbegriffe zu finden, naja...

                                Ich mag mich noch daran erinnern, dass ich mal unfähig war meine eigenen Postings zu finden (war unfähig nach meinem Nachnamen zu suchen) ;)
                                Soviel zu meiner Such-Karriere ;)

                                [...] jetzt bin ich kräftig am .xsl Files generieren.

                                das geht auch damit? Ich war froh als ich überhaupt eine xls-Datei einwandfrei öffnen konnte... so unterscheiden sich halt die Ansprüche ;-)

                                Wir haben etwas gemeinsam: Beide vertippen sich ;)
                                Ich meinte natürlich .xls - Dateien... In diesem Sinne:

                                my $content = $posting->getMessage;
                                $content =~ s/.xsl/.xls/g;
                                $posting->setMessage( $content ) if ( $posting->getAuthor eq 'Hasenfrätzli' );

                                Ach, ich bin mit dem SelfSyndrom angesteckt... Emotionen (liebe zum Forum) zerstören meine Rationalität und die Finger machen nimmer das, was sie soll'n. Ich muss gestehen, mir macht es hier riesig Spass und ich smile übers ganze Gesicht, wenn in diesem Thread ein neues Posting erscheint...

                                Und was ist daran besser als an Deiner vorherigen Methode? Gibt es keine speziellen xml-Module in PERL, die da besser geeignet sind?

                                Doch, doch, die gibt's:

                                XML::DOM
                                XML::SAX
                                XML::Simple
                                ...

                                Nochmal eine Frage zur Übertragung im binären Modus. Wenn ich die Datei jetzt auf einem Webserver generiere, und dann einfach über einen Link runterladen lasse, habe ich dann die Gewähr, dass das in allen Browsern binär runtergeladen wird? Nicht das ich glaube ich hätte da ein Superfeature, nur geht das dann lediglich bei jedem 3.!

                                Hm. Sollte eigentlich schon, da der Webserver eigentlich alle Dateien genau so überträgt, wie sie auf'm Server liegen. Es könnte höchstens ein Problem entstehen, wenn dein Browser krumme Decodierungen anstellt, wenn er einen Text-verdächtigen MIME-Typ erhält, was aber in deinem Fall nicht so sein wird.

                                PS: perldoc.org z.B. kenne ich, und auch andere Quellen, aber hat mir schon öfter jemand gesagt, führe einfach "perldoc..." aus - nur leider weiß ich bis heute nicht wo!? In der SHELL geht das nicht! Wo denn sonst?

                                Hm. Leider habe ich hierzu keine Lösung für dich, da ich auf meinem Rechner (leider) kein Linux installiert hab und auch noch sehr wenig damit gearbeitet habe (lokal), ich arbeite zwar schon viel mit Linux, aber eben nur auf dem Remote-Weg...
                                Aber da hierhin vielleicht etwas wenig Leute lesen, könntest du ja einen neuen Thread zu diesem Thema eröffnen; dann kann dir bestimmt irgendjemand helfen.

                                Viele Grüsse

                                Philipp

                                1. Hi!

                                  Ich mag mich noch daran erinnern, dass ich mal unfähig war meine eigenen Postings zu finden (war unfähig nach meinem Nachnamen zu suchen) ;)
                                  Soviel zu meiner Such-Karriere ;)

                                  jajaja, die lieben Jugendsünden...

                                  Wir haben etwas gemeinsam: Beide vertippen sich ;)
                                  Ich meinte natürlich .xls - Dateien... In diesem Sinne:

                                  jajaja, die lieben Fingerschen, immer schneller als der Kopf...

                                  Ach, ich bin mit dem SelfSyndrom angesteckt... Emotionen (liebe zum Forum) zerstören meine Rationalität und die Finger machen nimmer das, was sie soll'n. Ich muss gestehen, mir macht es hier riesig Spass und ich smile übers ganze Gesicht, wenn in diesem Thread ein neues Posting erscheint...

                                  Geht mir genau so! War gerade für mich aus sehr produktiv, aber nicht nur das, macht sehr viel Spaß!

                                  Und was ist daran besser als an Deiner vorherigen Methode? Gibt es keine speziellen xml-Module in PERL, die da besser geeignet sind?

                                  Doch, doch, die gibt's:

                                  XML::DOM
                                  XML::SAX
                                  XML::Simple
                                  ...

                                  Nochmal eine Frage zur Übertragung im binären Modus. Wenn ich die Datei jetzt auf einem Webserver generiere, und dann einfach über einen Link runterladen lasse, habe ich dann die Gewähr, dass das in allen Browsern binär runtergeladen wird? Nicht das ich glaube ich hätte da ein Superfeature, nur geht das dann lediglich bei jedem 3.!

                                  Hm. Sollte eigentlich schon, da der Webserver eigentlich alle Dateien genau so überträgt, wie sie auf'm Server liegen. Es könnte höchstens ein Problem entstehen, wenn dein Browser krumme Decodierungen anstellt, wenn er einen Text-verdächtigen MIME-Typ erhält, was aber in deinem Fall nicht so sein wird.

                                  Ganz seltsam. Habe eine neue xls Datei mit anderem namen erstellt, und der Browser zeigt mir den Binärcode an, anstatt zu speichern - derselbe Browser, dieselbe datei, nur statt perl.xls data.xls. Ich werd aus den Dingern nicht schlau. Di efphrren manchmal ein sehr seltsamens Eigenleben!

                                  PS: perldoc.org z.B. kenne ich, und auch andere Quellen, aber hat mir schon öfter jemand gesagt, führe einfach "perldoc..." aus - nur leider weiß ich bis heute nicht wo!? In der SHELL geht das nicht! Wo denn sonst?

                                  Hm. Leider habe ich hierzu keine Lösung für dich, da ich auf meinem Rechner (leider) kein Linux installiert hab und auch noch sehr wenig damit gearbeitet habe (lokal), ich arbeite zwar schon viel mit Linux, aber eben nur auf dem Remote-Weg...

                                  Ja ich ja auch ;-) Daher SSH, entspricht doch in etwa der SHELL auf dem Rechner selbst!

                                  Aber da hierhin vielleicht etwas wenig Leute lesen, könntest du ja einen neuen Thread zu diesem Thema eröffnen; dann kann dir bestimmt irgendjemand helfen.

                                  ich glaube man unterschätzt wieviele das noch so lesen!

                                  -- Andreas

                                  1. Halihallo Andreas

                                    Ich mag mich noch daran erinnern, dass ich mal unfähig war meine eigenen Postings zu finden (war unfähig nach meinem Nachnamen zu suchen) ;)
                                    Soviel zu meiner Such-Karriere ;)

                                    jajaja, die lieben Jugendsünden...

                                    Wobei das gar nicht lange her ist: :-(
                                    http://forum.de.selfhtml.org/archiv/2002/5/13338/#m73810

                                    Hm. Sollte eigentlich schon, da der Webserver eigentlich alle Dateien genau so überträgt, wie sie auf'm Server liegen. Es könnte höchstens ein Problem entstehen, wenn dein Browser krumme Decodierungen anstellt, wenn er einen Text-verdächtigen MIME-Typ erhält, was aber in deinem Fall nicht so sein wird.

                                    Ganz seltsam. Habe eine neue xls Datei mit anderem namen erstellt, und der Browser zeigt mir den Binärcode an, anstatt zu speichern - derselbe Browser, dieselbe datei, nur statt perl.xls data.xls. Ich werd aus den Dingern nicht schlau. Di efphrren manchmal ein sehr seltsamens Eigenleben!

                                    <Philippschen der Nostalgische>
                                    Wat'n dat für'n Browserschen??? - Der ist ja nicht ganz korrekt das Jungschen... Matschbirne der Brwoser, ab zu den Akten, neue Version her. Heil'ges Missgeschick... Nieder mit KI!!! - Her mit den 386'ern, wo das Leben noch IO war und der Computer noch das tat, was man gesagt hat... Es lebe der Computer der 80'-er Jahre...
                                    <Philipp...>
                                    <Philipp der Rationale>
                                    versuch mal dir die Datei über ein php-Script zu holen, indem du die Datei binär einliest und als MIME-Typ hello/world sendest... Ich glaube, dann sollte selbst die KI der besten Browser am Ende sein ;)
                                    </Philipp...>

                                    Hm. Leider habe ich hierzu keine Lösung für dich, da ich auf meinem Rechner (leider) kein Linux installiert hab und auch noch sehr wenig damit gearbeitet habe (lokal), ich arbeite zwar schon viel mit Linux, aber eben nur auf dem Remote-Weg...

                                    Ja ich ja auch ;-) Daher SSH, entspricht doch in etwa der SHELL auf dem Rechner selbst!

                                    Wollt ich auch nicht bezweifeln, dass du nicht über'n Remote zugreifst; ich weiss schon, was SSH ist.

                                    Aber da hierhin vielleicht etwas wenig Leute lesen, könntest du ja einen neuen Thread zu diesem Thema eröffnen; dann kann dir bestimmt irgendjemand helfen.

                                    ich glaube man unterschätzt wieviele das noch so lesen!

                                    Hast'e auch recht, dann soll sich doch mal bitte ein Linux-Spzialist melden...

                                    Viele Grüsse

                                    Philipp

                                  2. use Mosche;

                                    PS: perldoc.org z.B. kenne ich, und auch andere Quellen, aber hat mir schon öfter jemand gesagt, führe einfach "perldoc..." aus - nur leider weiß ich bis heute nicht wo!? In der SHELL geht das nicht! Wo denn sonst?

                                    Wenn es in der Shell nicht geht, kann es an folgendem liegen:

                                    a) Perl ist nicht installiert
                                    b) perldoc ist nicht im Pfad ('whereis perldoc' mit 'echo $PATH' angleichen)
                                    c) deine Shell ist kaputt
                                    d) du vertippst dich

                                    Auf einem Windows Rechner hast du die Möglichkeit, die bei ActivePerl mitgelieferte HTML-Dokumentation zu nutzen.

                                    Daher SSH, entspricht doch in etwa der SHELL auf dem Rechner selbst!

                                    SSH ruft eine Shell auf dem Remote Rechner auf - SSH ist damit _nicht_ *eine* Shell, sondern nur ein Verbindungsweg, um eine Shell aufzurufen (obwohl mich der Name (Secure Shell) doch in diesem Punkt etwas stutzig macht).

                                    use Tschoe qw(Matti);

                                    1. Hi!

                                      a) Perl ist nicht installiert

                                      ist definitiv installiert ;-)

                                      b) perldoc ist nicht im Pfad ('whereis perldoc' mit 'echo $PATH' angleichen)

                                      hab ich gemacht, finde dann aber eine /usr/man/man1/perldoc.1.gz
                                      Wenn ich in dem Verzeichnis perloc in die Kommandozeile schreibe, passiert wieder nichts. ist ja auch nur eine gz.

                                      c) deine Shell ist kaputt+

                                      alles andere ging bisher

                                      d) du vertippst dich

                                      P E R L D O C

                                      so richtig? ;-)

                                      Auf einem Windows Rechner hast du die Möglichkeit, die bei ActivePerl mitgelieferte HTML-Dokumentation zu nutzen.

                                      Ist doch komisch. Ist den 'man perl' was anderes? Da bekomme ich neämlich was. Würde auch zum verzeichnis passen,

                                      Daher SSH, entspricht doch in etwa der SHELL auf dem Rechner selbst!

                                      SSH ruft eine Shell auf dem Remote Rechner auf - SSH ist damit _nicht_ *eine* Shell, sondern nur ein Verbindungsweg, um eine Shell aufzurufen (obwohl mich der Name (Secure Shell) doch in diesem Punkt etwas stutzig macht).

                                      Na gut.

                                      Grüße
                                      Andreas

                                      1. use Mosche;

                                        b) perldoc ist nicht im Pfad ('whereis perldoc' mit 'echo $PATH' angleichen)
                                        hab ich gemacht, finde dann aber eine /usr/man/man1/perldoc.1.gz
                                        Wenn ich in dem Verzeichnis perloc in die Kommandozeile schreibe, passiert wieder nichts. ist ja auch nur eine gz.

                                        Die Datei /usr/man/man1/perldoc.1.gz ist der Text, den du sehen würdest, wenn du 'man perldoc' aufrufst. Es scheint so, als ob 'perldoc' bei dir nicht installiert ist.

                                        use Tschoe qw(Matti);

                                        1. Hi!

                                          Die Datei /usr/man/man1/perldoc.1.gz ist der Text, den du sehen würdest, wenn du 'man perldoc' aufrufst. Es scheint so, als ob 'perldoc' bei dir nicht installiert ist.

                                          OK, wieder weiter:
                                          'man perldoc' öffnet die PERl-doku. ABER:
                                          Wie kome ich jetzt an perldoc perlre? 'man perldoc perlre' funktioniert natürlich nicht!

                                          WO GEBT IHR DAS ALLES EIN?????

                                          Grüße
                                          Andreas

                  2. Halihallo

                    so, jetzt hab ich mir mal den Source von Spreadsheet::WriteExcel angesehen. Ist voll genial, jetzt weiss ich mal, wie Excel seine .xls Dateien schreibt. Das Modul ist voll "hard-core" und schreibt alles selber als binary-files.
                    Alles Headerinformationen, Scriftdefinitionen, ...
                    Sogar die URL's (gar interne Verknüpfungen unter den Sheets) werden geparsed, etc...
                    Sogar ein integrierter Formula-Parser, welcher zuerst einen B-Tree erstellt und dann rekursiv abarbeitet, ... Juhuiii, ich mag dieses Modul ;)

                    Viele Grüsse

                    Philipp

    3. Hallo Günni,

      Rechtlich aber mehr als bendenklich!

      LG München I "Meta-Nachrichtendienst"  (Az.: 7 O 6910/01)
      Eine Metasuchmaschine, die zur Verfolgung eigener wirtschaftlicher Interessen systematisch Rubri-ken, Schlagzeilen und Teaser  von Artikeln einer News-Website ausliest und unmittelbar auf die Voll-text verlinkt, verletzt die Rechte des Datenbankherstellers.
      Urteil vom 18.9. 2001

      das war aber nicht die Frage!
      Es geht -anscheinend- um etwas, von dem Du null Ahnung hast:
      Einen Roboter/Spider zu programmieren!

      Außerdem kann ich meine Daten -daran kann auch diese neumodische Jura-Abzockmasche nichts ändern- so bekommen, ohne daß mir daß auch nur irgendjemand wirklich nachweisen kann:
      Ich tarne irgendeinen Spider als "Mozilla/5 blablabla", der über ein paar Seiten hüpft, darin enthaltene Daten auswertet, in eigene Datenbanken einbaut bzw, Scripte usw. Das kann man so geschickt machen, daß das keiner nachvollziehen kann.
      By the way: Wo ist auch der Unterschied, ob ich das per Hand aus dem Handelblatt abtippe oder "sinnvollerweise" techn. realisiere.
      Mach' jetzt keinen falschen Schlüsse! Ich will keinesfalls dafür werben, solche Maßnahmen als in Ordnung hinzustellen. Aber einige Juristen und Politiker sollten endlich mal Fachleute fragen, wie die techn. Zusammenhänge sind (Stichwort Regierung in Düsseldorf), bevor sie irgendwelche Kinderreien zusammenspinnen!!!

      Reiner

  2. Halihallo

    Unter anderem hatte er ein Makro geschrieben, mit dem er ich glaube aus dem Yahoo Finanz-Prortal, aktuelle Aktienkurse bestimmter Aktien abfragen konnte. Diese wurden dann automatisch ein eine in ein Excel-Sheet eingefügt(sehr praktische Sache!). Fand das sehr beeindruckend, leider habe ich heute keinen Kontakt mehr zu ihm, aber ich verstehe immer noch kein bisschen, wie das funtionieren soll, jetzt mal abstrahiert von Excel und Makros... wie soll man denn überhaupt an so einen Wert kommen? Ich könnte z.B. mit fsockopen() aus PHP Verbindung zu einer bestimmten Seite aufnehmen, auch an die Seite zu einer speziellen Aktie, aber wie kommt dann der Aktienkurs in das ursprüngliche Script? Kann das nicht verstehen. Das sind doch fertige html-Dokumente die man da hat, man kann ja nicht direkt auf die DB dahinter zugreifen!

    Hat jemand hier eine Idee wie sowas funktioniert?

    Ne, auf die DB kann man sicher nicht zugreifen. Wahrscheinlich hat er nur die HTML-Seiten ausgelesen und diese verarbeitet (RegularExpressions) und für seine Zwecke zurechtgepeppelt.
    Eine andere Möglichkeit wäre auch denkbar, dass die Finanz-Portal ein öffentliches Interface bietet, wo die Daten schon in einer strukturierten Form bereitsgestellt werden bzw eine Datei, die nicht so stark von Meta-Informationen (wie in HTML) überfüllt ist (eg. Textdatei), wobei ich dies bezweifle, denn was sollte der Betreiber für einen Nutzen davon ziehen, wenn seine Datenbank so einfach abgesaugt werden kann.

    Aber Vorsicht: Günter Frhr.v.Gravenreuth hat dich auf die rechtlichen Risiken aufmerksam gemacht! - Ich bin IMHO der Meinung, dass die Daten auf dem DB-Server automatisch, ohne expliziten Hinweis des Betreibers dem Urheberrecht unterliegen, in diesem Fall müsstest du mit dem Betreiber eine Vereinbarung treffen... So viel zu meinem Verständnis des deutschen Rechtsystems, wenn wir schon mal dabei sind...

    Viele Grüsse

    Philipp

    1. Hi Philipp!

      Ne, auf die DB kann man sicher nicht zugreifen. Wahrscheinlich hat er nur die HTML-Seiten ausgelesen und diese verarbeitet (RegularExpressions) und für seine Zwecke zurechtgepeppelt.

      Wäre sowas den mit regulären ausdrücken möglich? Ich meine so ne Seite ist recht komplex, so kommt die WKN im Quellcode bestimmt 10 mal vor(links...), ist die Gefahr nicht groß, das da irgendwelche Sachen auf der Seite stehen, die das Ergebnis irgendwie verfälschen können?

      Eine andere Möglichkeit wäre auch denkbar, dass die Finanz-Portal ein öffentliches Interface bietet, wo die Daten schon in einer strukturierten Form bereitsgestellt werden bzw eine Datei, die nicht so stark von Meta-Informationen (wie in HTML) überfüllt ist (eg. Textdatei), wobei ich dies bezweifle, denn was sollte der Betreiber für einen Nutzen davon ziehen, wenn seine Datenbank so einfach abgesaugt werden kann.

      Das kann ich mir auch nicht vorstellen, hab ich auch noch nbicht gehört bzw. gesehen.

      Aber Vorsicht: Günter Frhr.v.Gravenreuth hat dich auf die rechtlichen Risiken aufmerksam gemacht! - Ich bin IMHO der Meinung, dass die Daten auf dem DB-Server automatisch, ohne expliziten Hinweis des Betreibers dem Urheberrecht unterliegen, in diesem Fall müsstest du mit dem Betreiber eine Vereinbarung treffen... So viel zu meinem Verständnis des deutschen Rechtsystems, wenn wir schon mal dabei sind...

      Naja, da hat er nicht gaz unrecht, aber die Frage ist - wo hört das auf und wo fängt das an? Leider kann sowas außer Ihm auch keiner beantworten hier :-)
      Ich frage mich nur, wo der Unterschied ist, ob ich mir die Infornation für mich über die Webseite hole, oder über ein Script? Sicher wollen die lieber die Leute auf der Seite haben, und ich könnte mir die Information ja auch zu Fuß über die Seite holen, und dann in meine DB eingeben, wobei das sehr viel schwerer nachzuweisen ist, als wenn da 10.000 mal am Tag meine url im Referer steht und die nur nachgucken müssen, dann bekäme ich garantiert nach kurzer Zeit Post von den Rechtsabteilung :-)

      Viele Grüsse

      -- Andreas

      1. Halihallo Andreas

        Ne, auf die DB kann man sicher nicht zugreifen. Wahrscheinlich hat er nur die HTML-Seiten ausgelesen und diese verarbeitet (RegularExpressions) und für seine Zwecke zurechtgepeppelt.

        Wäre sowas den mit regulären ausdrücken möglich? Ich meine so ne Seite ist recht komplex, so kommt die WKN im Quellcode bestimmt 10 mal vor(links...), ist die Gefahr nicht groß, das da irgendwelche Sachen auf der Seite stehen, die das Ergebnis irgendwie verfälschen können?

        Leider ja. Das automatische Extrahieren von Datein aus HTML Dateien ist keine leichte Angelegenheit. Der Arbeitsaufwand ist von Seite zu Seite verschieden, du musst einfach irgend ein gutes Kriterium finden, wonach du suchst (aber mir sind einige Finanz-Portale bekannt und ich kenne die Struktur der Pages, ei, ei, das gibt was zu beissen :-( ). Hatt es irgend um den WKN-Code eine Zeichnfolge, welche "mit grösser Wahrscheinlichkeit" nur einmal im Quelltext vorkommt und explizit auf diesen Wert verweist? - Du musst dem Computer irgendwie sagen, wie er die Spreu vom Weizen trennen kann. Je einfacher, desto besser.
        RegularExpressions sind aber für diesen Anwendungszweck eine riesen grosse Hilfe! - Stell dir vor, du musst mit substr o. ä. arbeiten, uiui...

        Tipp: Nach dem Ausschlussprinzip vorgehen. Immer mehr Daten, von welchen du mit Sicherheit weisst, dass sie deine Daten nicht enthalten, aus dem "input-stream" entfernen. Theoretisch hast du dann am Schluss genau den gewünschten Wert... Klingt zwar einfach, aber gibt schon noch ein bissle zu tun...

        Eine andere Möglichkeit wäre auch denkbar, dass die Finanz-Portal ein öffentliches Interface bietet, wo die Daten schon in einer strukturierten Form bereitsgestellt werden bzw eine Datei, die nicht so stark von Meta-Informationen (wie in HTML) überfüllt ist (eg. Textdatei), wobei ich dies bezweifle, denn was sollte der Betreiber für einen Nutzen davon ziehen, wenn seine Datenbank so einfach abgesaugt werden kann.

        Das kann ich mir auch nicht vorstellen, hab ich auch noch nbicht gehört bzw. gesehen.

        Bietet das Finanz-Portal irgendwelche Dateien mit den benötigten Daten zum Download an? - Wenn ja, welches Format?

        Aber Vorsicht: Günter Frhr.v.Gravenreuth hat dich auf die rechtlichen Risiken aufmerksam gemacht! - Ich bin IMHO der Meinung, dass die Daten auf dem DB-Server automatisch, ohne expliziten Hinweis des Betreibers dem Urheberrecht unterliegen, in diesem Fall müsstest du mit dem Betreiber eine Vereinbarung treffen... So viel zu meinem Verständnis des deutschen Rechtsystems, wenn wir schon mal dabei sind...

        Naja, da hat er nicht gaz unrecht, aber die Frage ist - wo hört das auf und wo fängt das an? Leider kann sowas außer Ihm auch keiner beantworten hier :-)

        Wahrscheinlich hast du recht. Aber wenn dich brennend interessieren sollte und dir das Geld keine Rolle spielt, kann ich ja mal meinen Anwalt fragen :-)
        Vielleicht ist ja Günter Frhr.v.Gravenreuth so freundlich und nimmt hierzu nochmal Stellung, würde mich auch interessieren.

        Ich frage mich nur, wo der Unterschied ist, ob ich mir die Infornation für mich über die Webseite hole, oder über ein Script? Sicher wollen die lieber die Leute auf der Seite haben, und ich könnte mir die Information ja auch zu Fuß über die Seite holen, und dann in meine DB eingeben, wobei das sehr viel schwerer nachzuweisen ist, als wenn da 10.000 mal am Tag meine url im Referer steht und die nur nachgucken müssen, dann bekäme ich garantiert nach kurzer Zeit Post von den Rechtsabteilung :-)

        Das abholen der Daten ist ja nicht strafbar, aber das weiterverwenden/veröffentlichen. Es spielt hierbei IMHO keine Rolle, ob du sie manuell in deine DB einfügst, oder über ein Script. Strafbar würdest du dich machen, wenn du diese unter deinem Namen (sprich als Copy-Paste in deine Website) veröffentlichst (und diese kommerziell nutzt). Aber wie gesagt, ich glaube nicht, dass du diese Infos kommerziell verwendest und deshalb hast du auch nix zu befürchten (ohne Gewähr! - Vielleicht sollte ich künftig einen Haftungsausschluss unten an meine Postings hängen :-))...

        Viele Grüsse

        Philipp

  3. use Mosche;

    Unter anderem hatte er ein Makro geschrieben, mit dem er ich glaube aus dem Yahoo Finanz-Prortal, aktuelle Aktienkurse bestimmter Aktien abfragen konnte. Diese wurden dann automatisch ein eine in ein Excel-Sheet eingefügt(sehr praktische Sache!). Fand das sehr beeindruckend, leider habe ich heute keinen Kontakt mehr zu ihm, aber ich verstehe immer noch kein bisschen, wie das funtionieren soll, jetzt mal abstrahiert von Excel und Makros... wie soll man denn überhaupt an so einen Wert kommen? Ich könnte z.B. mit fsockopen() aus PHP Verbindung zu einer bestimmten Seite aufnehmen, auch an die Seite zu einer speziellen Aktie, aber wie kommt dann der Aktienkurs in das ursprüngliche Script? Kann das nicht verstehen. Das sind doch fertige html-Dokumente die man da hat, man kann ja nicht direkt auf die DB dahinter zugreifen!

    Im Linux Magazin wurde ein Perl Script vorgestellt, welches genau das erledigt (im Kontext noch ein wenig mehr). Mit ein bißchen Kenntnissen kannst du es hervorragend ummodeln.

    http://www.linux-magazin.de/ausgabe/2000/11/Perl/perl.html

    Ein Script, welches ich benutze, ist folgendes:
    #!/usr/bin/perl
    use strict;
    use warnings;

    use LWP::UserAgent;
    use HTML::TableExtract;

    my $file_sav = '.kurse';
    my $file_cfg = '.kurse_cfg';
    my $del_1        = '#';
    my $del_2        = '|';
    my (%wkn, %kurse);

    Konfiguration einlesen

    open (FH, $file_cfg) or die "Kann Konfigurationsdatei $file_cfg nicht öffnen: $!";
    while(<FH>) {
            chomp;
            my ($w, $n) = split(/$del_1/, $_);
            $wkn{$w} = $n;
    }
    close(FH);

    Alte Kurse aus der Datei holen

    open(FH, $file_sav) or die "Kann Kursedatei $file_sav nicht öffnen: $!";
    while(<FH>) {
            chomp;
            my ($w, $n) = split(/$del_1/, $_);
            $kurse{$w} = $n;
    }
    close(FH);

    Werte aus dem Internet holen

    foreach my $w (sort { $wkn{$a} cmp $wkn{$b} } keys %wkn) {
            my ($quote) = get_quote($w);
            $kurse{$w} .= $quote.$del_2;
    }

    neues Datum schreiben

    my $date = date;
    chomp($date);
    $kurse{'date'} .= $date.$del_2;

    Neue Werte abspeichern

    open(FH, ">".$file_sav) or die "Kann Kursedatei $file_sav nicht öffnen: $!";
    foreach (keys %kurse) {
            print FH $_.$del_1.$kurse{$_}."\n";
    }
    close(FH);

    ##################################################
    sub get_quote {
    ##################################################
        my $stock = shift;

    my $URL = "http://de.finance.yahoo.com/q?d=v1&m=a&s=".$stock;
        my $ua = LWP::UserAgent->new();
            my $req = HTTP::Request->new('GET', $URL);
        my $resp = $ua->request($req);

    if($resp->is_error()) {
            my $error = sprintf "Error: %s", $resp->message();
            return $error;
        }

    my $data = $resp->content();

    return $data =~ /<b><img src=.*?>(.*?)</b>/;
    }

    Die Datei '.kurse' wird automatisch angelegt, es werden die Kurse darin gespeichert. '.kuse_cfg' hat folgende Form:
    'WKN'#'NAME'

    Die Wertpapierkennummer ist die, die du bei Yahoo! eingibst, der Name wird für die Flatfile gebraucht.

    Vielleicht verstehst du es und kannst es einsetzen. Es ist aber nur ein Quickhack gewesen, basierend auf dem Linux-Magazin Artikel. Es hat _viel_ Raum für Verbesserungspotential...

    use Tschoe qw(Matti);

  4. Hi Andreas,

    Unter anderem hatte er ein Makro geschrieben, mit dem er ich
    glaube aus dem Yahoo Finanz-Prortal, aktuelle Aktienkurse

    wie "aktuell" waren die denn?

    Wirklich "aktuelle" Kurse sind von vielen Börsen kostenpflichtig
    und dürfen gar nicht im WWW, im Fernsehen etc. veröffentlicht
    werden. (Deshalb sind die Kurse auf den Laufbändern im TV auch
    immer 15 Minuten alt oder so ähnlich - je nach der Kursquelle,
    das macht jeder, wie er will.)

    bestimmter Aktien abfragen konnte. Diese wurden dann automa-
    tisch ein eine in ein Excel-Sheet eingefügt(sehr praktische
    Sache!).

    Das halte ich für keine sinnvolle Idee.

    Der Anbieter dieser HTML-Seiten kann ja jederzeit das Layouting
    seiner Dokumente beliebig ändern.
    Wenn Du solche Seiten absaugen und parsen willst, müßtest Du
    Deinen Parser ständig anpassen, wenn sich am Format des Servers
    etwas ändert.
    Und wenn ich so ein Anbieter wäre, dann würde ich öfters mal
    Kleinigkeiten ändern - auch solche, die in der Optik gar keinen
    Unterschied bewirken, sondern nur Deinen Parser aus der Bahn werfen.

    Sinnvoller wäre es, sich zu überlegen, wie denn die vielen bereits
    existierenden Client-Programme zur Versorgung von Aktiendepots ihre
    Daten bekommen, die sie aus dem WWW absaugen.

    wie soll man denn überhaupt an so einen Wert kommen?
    Ich könnte z.B. mit fsockopen() aus PHP Verbindung zu einer
    bestimmten Seite aufnehmen, auch an die Seite zu einer speziellen
    Aktie,

    Ja - der Aspekt der Kommunikationsverbindung ist nicht das Problem.

    aber wie kommt dann der Aktienkurs in das ursprüngliche Script?
    Kann das nicht verstehen. Das sind doch fertige html-Dokumente
    die man da hat, man kann ja nicht direkt auf die DB dahinter
    zugreifen!

    Eben. HTML-Dokumente sind nicht auf Deine Anforderung optimiert.
    Du solltest Dir also eine Schnittstelle suchen, die sich für Deinen
    Anwendungszweck besser eignet:

    http://www.google.de/search?q=depotverwaltung+kursversorgung+kostenlos

    ... schau Dich dort mal um, ob irgendwer von denen die Schnitt-
    stelle seiner kostenlosen Datenversorgung offen gelegt hat.

    Es gibt auch Dienstleister, die solche Dinge kommerziell anbieten -
    wahlweise nur den Daten-Feed oder auch die Präsentations-Software
    dazu. Ich arbeite bei einer solchen ... aber für den Privatanwender
    wird das wohl nicht kostengünstig genug sein.
    (Für den gut ausgerüsteten Arbeitsplatz Deines Anlageberaters gelten
     natürlich andere Anforderungen ... ;-)

    Viele Grüße
          Michael

    1. Hallo!

      wie "aktuell" waren die denn?

      naja, so wie in den portalen, halt 15 Min. verspätet, neuere Kurse kosten richtig Geld, oder?

      bestimmter Aktien abfragen konnte. Diese wurden dann automa-
      tisch ein eine in ein Excel-Sheet eingefügt(sehr praktische
      Sache!).

      Das halte ich für keine sinnvolle Idee.

      Der Anbieter dieser HTML-Seiten kann ja jederzeit das Layouting
      seiner Dokumente beliebig ändern.
      Wenn Du solche Seiten absaugen und parsen willst, müßtest Du
      Deinen Parser ständig anpassen, wenn sich am Format des Servers
      etwas ändert.
      Und wenn ich so ein Anbieter wäre, dann würde ich öfters mal
      Kleinigkeiten ändern - auch solche, die in der Optik gar keinen
      Unterschied bewirken, sondern nur Deinen Parser aus der Bahn werfen.

      Ja, das habe ich mir auch schon überlegt, sehe aber keine befriedigende Alternative! Aber ich glaube, das das nicht unbedingt sein muß! Das Prinzip wird so schnell nicht geändert, wenn man nach der Zeile einer best. WHn sucht, dann braucht man lediglich die Kursspalte und gut ist! Ich denke, da kann er sogar das Layout... ändern, nur bei sehr Grundlegenden Änderungen gibts halt Probleme. Und außerdem - es ist nur so mal zum probieren für mich, dann passe ich es halt an!

      Sinnvoller wäre es, sich zu überlegen, wie denn die vielen bereits
      existierenden Client-Programme zur Versorgung von Aktiendepots ihre
      Daten bekommen, die sie aus dem WWW absaugen.

      Naja, ich habe mal bei Deinem Link geschaut, wirklich schlauer bin ich da nicht geworden, bis auf Videotext, gerade [http://www.ard-text.de/videotext/index.html?tafel=700] hatte mich sehr glücklich gestimmt, aber wie es aussieht haben die die Börsenkurse rausgenommen. Die anderen Programme machen das entweder über eine Videokarte und extrahieren das aus dem Videotext, oder über Dateien downloaden. Beides keine befriedigenden Lösungen wie ich finde! Die sind entweder nicht aktuell, oder nur zeitweise, oder nur begrenzte Kurseinformationen... außerdem würde ich es gerne mal selbst probieren!

      Eben. HTML-Dokumente sind nicht auf Deine Anforderung optimiert.
      Du solltest Dir also eine Schnittstelle suchen, die sich für Deinen
      Anwendungszweck besser eignet:

      http://www.google.de/search?q=depotverwaltung+kursversorgung+kostenlos

      Hab ich da was übersehen?

      Hab nichts gesehen, wo über eine Schnittstelle direkt annehmbare aktuelle Daten angeboten würden(unbefristet um sonst). Oder was meintest Du?

      Grüße
      Andreas

  5. Hallo!
    Ich habe mir jetzt einige Seiten angeschaut, und wollte es jetzt einfach mal probieren, ob ich es hinbekomme, egal ob das jetzt so optimal ist oder nicht, allein als Übung interessant genug :-)

    Also ich habe folgenden Quelltext, aus dem ich den Aktienkurs herauskitzeln will:

    mehr code
    623100</td>
    <td class="WLTxtOff" valign="top" align="center"><img height="38" src="/shared/ext/ov/arrow_down_3rows.gif" width="26" align="right"><b>17.32</b><br />-0.23<br /><b>-1.31%</b></td>
    <td class="WLTxtOff" valign="top" align="center">18.08<
    mehr code

    Mein regulärer Ausdruck sähe bis jeztt so aus
    /623100</td>\s*(<td .*){2}>([0-9.])</

    Dann hätte ich in $2 doch den Kurs, oder?
    Aber vor allem der Teil wird falsch sein: (<td .*){2}

    Was ich noch nicht weiß, wie kann ich eine Variable im regulären Ausdruck haben, also für 623100 will ich $wkn haben, geht das einfach mit $wkn, oder wie macht man sowas?

    Oder wie würdet Ihr sowas machen? Habe auf dem Gebiet noch nicht so viel Erfahrung, daher will ich es unbedingt einmal so machen :-)

    Viele Grüße
    Andreas

    1. Halihallo Andreas

      Ich habe mir jetzt einige Seiten angeschaut, und wollte es jetzt einfach mal probieren, ob ich es hinbekomme, egal ob das jetzt so optimal ist oder nicht, allein als Übung interessant genug :-)

      Stimmt :-)

      Also ich habe folgenden Quelltext, aus dem ich den Aktienkurs herauskitzeln will:

      Dann hätte ich in $2 doch den Kurs, oder?

      Also mein Code würde so aussehen:

      $t='623100</td>
      <td class="WLTxtOff" valign="top" align="center"><img height="38" src="/shared/ext/ov/arrow_down_3rows.gif" width="26" align="right"><b>17.32</b><br />-0.23<br /><b>-1.31%</b></td>
      <td class="WLTxtOff" valign="top" align="center">18.08<';

      $t =~ s/\n//g;

      my $wkn = 623100;

      $t =~ /$wkn(.*?)<b>(.*?)</b><br />(.*?)<br /><b>(.*?)</b>/i;
         print $2 . ' => ' . $3 . ' => ' . $4;

      schau dir erst mal den Code an, vielleicht begreifst du ihn ja auf anhieb. Wenn nicht, dann erkläre ich dirs.

      Was ich noch nicht weiß, wie kann ich eine Variable im regulären Ausdruck haben, also für 623100 will ich $wkn haben, geht das einfach mit $wkn, oder wie macht man sowas?

      wie oben beschrieben.

      Oder wie würdet Ihr sowas machen? Habe auf dem Gebiet noch nicht so viel Erfahrung, daher will ich es unbedingt einmal so machen :-)

      Ging mir auch so. Aber nur Mut, ist ne ganz feine Sache :-)

      Viele Grüsse

      Philipp

      1. Hi Phillip!

        Also mein Code würde so aussehen:

        ... und ich wollte gerade schlafen gehen...

        $t='623100</td>
        <td class="WLTxtOff" valign="top" align="center"><img height="38" src="/shared/ext/ov/arrow_down_3rows.gif" width="26" align="right"><b>17.32</b><br />-0.23<br /><b>-1.31%</b></td>
        <td class="WLTxtOff" valign="top" align="center">18.08<';

        $t =~ s/\n//g;

        my $wkn = 623100;

        $t =~ /$wkn(.*?)<b>(.*?)</b><br />(.*?)<br /><b>(.*?)</b>/i;
           print $2 . ' => ' . $3 . ' => ' . $4;

        schau dir erst mal den Code an, vielleicht begreifst du ihn ja auf anhieb. Wenn nicht, dann erkläre ich dirs.

        Verstehen tue ich sowas, fällt mir nur schwer selbst zu machen. Sieht auch richtig aus, aber funktionieren tut es leider nicht.

        Ich mache das ja in PHP, aber ich verwende da die gleichen Regulären Ausdrücke, hab das noch etwas vereinacht fürs erste:

        $wkn = "623100";

        preg_match ( "/$wkn(.*?)<b>(.*?)</b>/i", $html_body , $kurs);
         echo $kurs[1];

        Leider steht dann nichts in $kurs (wird automatisch zum Array mit den gespeicherten Ergebnisse).

        Wenn ich dagegen das probiere:

        preg_match ( "(Infineon)", $html_body , $kurs);
                echo $kurs[0];

        steht da Infineon. Also wird wohl der Fehler im Reg. Expr. liegen, oder?

        Vorher öffne ich eine Socket-Verbindung zur Seite www.n-tv.de/2893493.html, wo die kpl. Tabelle steht, lade den ganzen html-code in einen String, und dieser String ist dann $html_body.

        Hat jemand ne Ahnung was das Problem sein könnte?

        Vielen Dank schonmal!

        -- Andreas

        1. Hi!

          preg_match ( "/$wkn(.*?)<b>(.*?)</b>/i", $html_body , $kurs);
          echo $kurs[1];

          jetzt verstehe ich gar nichts mehr. ich mache folgendes:
                  preg_match ( "/($wkn).*/i", $html_body , $kurs);
           echo $kurs[0];
          Man sollte ja meinen, dasbrächte mir den in $wkn gespeicherten Wert als  $kurs[0], aber was da raus kommt:

          623100" class="blau11px" target="_blank">Infineon
          623100

          Dadurch habe ich gemerkt, das er die Nummer schon früher findet. Wobei es ja eigentlich egal sein sollte, denn es geht ja nicht gleich weiter, naja. Jemand ne Idee?

          Grüße
          Andeas

          1. Hallo!

            FERTIG! Es läuft! Wer mal probieren will ;-)
            http://www.knet-systems.de/fso.php

            Daten kommen von(da stehen auch die WKN):
            http://www.n-tv.de/2893493.html

            Mit anderen klappt es natürlich nicht. Ist wie gesagt nur mal eine Übung für reguläre Ausdrücke!

            Vielleicht hat ja noch jemand hier nen Verbesserungsvorschlag:

            preg_match ( "/>([\w&;]*.?\s?-?[\w&;]*.?)</a>.*($wkn)</td>\s.*<b>([0-9]{1,5}.[0-9]{2})</b>/i", $html_body , $kurs);

            So das wars für heute Nacht ;-)

            Grüße
            Andreas

            1. Halihallo Andreas

              FERTIG! Es läuft! Wer mal probieren will ;-)
              http://www.knet-systems.de/fso.php

              Cool. Gratulation!

              Daten kommen von(da stehen auch die WKN):
              http://www.n-tv.de/2893493.html

              Vielleicht hat ja noch jemand hier nen Verbesserungsvorschlag:

              preg_match ( "/>([\w&;]*.?\s?-?[\w&;]*.?)</a>.*($wkn)</td>\s.*<b>([0-9]{1,5}.[0-9]{2})</b>/i", $html_body , $kurs);

              Ay caramba, sieht ja ziemlich krass aus. Es scheint du hast etwas gegen meine (.*?)'s zu haben??? - was machst du denn mit ([0-9]{1,5}.[0-9]{2})??? - Die Zahl auslesen, klar. Aber das geht viel einfacher mit (.*?)! - Ist einige Bytes kürzer...
              die '<' und '>' musst du übrigens nicht escapen.
              Allgemein: Du hast einen String mit zwei Werten die du kennst (<b> und </b> im Beispiel) und suchst die Zeichenfolge (eg. WKN im Beispiel), welche genau zwischen diesen beiden Tags steht; das geht am einfachsten über <b>(.*?)</b>. Also ich konnte so das ganze Problem lösen und mein Perl-progi was ich gepostet hatte, hat auch funktioniert.

              Viele Grüsse

              Philipp

              1. Hi!

                FERTIG! Es läuft! Wer mal probieren will ;-)
                http://www.knet-systems.de/fso.php

                Cool. Gratulation!

                Hätte ich nie gedacht, nur die regulären Ausdrücke sind noch sehr wirr :-) Ich mach das lieber "zu Fuß", etwas komplizierter, naja - fehlt noch die Erfahrung.

                preg_match ( "/>([\w&;]*.?\s?-?[\w&;]*.?)</a>.*($wkn)</td>\s.*<b>([0-9]{1,5}.[0-9]{2})</b>/i", $html_body , $kurs);

                Ay caramba, sieht ja ziemlich krass aus. Es scheint du hast etwas gegen meine (.*?)'s zu haben??? - was machst du denn mit ([0-9]{1,5}.[0-9]{2})??? - Die Zahl auslesen, klar. Aber das geht viel einfacher mit (.*?)! - Ist einige Bytes kürzer...

                ich verstehe halt nicht, was das ist :-) (.*) verstehe ich, bedeutet irgendein Zeichen(0-unendlich viele) außer newline, oder? Aber was soll dann noch das '?' ?

                die '<' und '>' musst du übrigens nicht escapen.

                hatte alles mögliche verändert, aber hast Recht!

                Allgemein: Du hast einen String mit zwei Werten die du kennst (<b> und </b> im Beispiel) und suchst die Zeichenfolge (eg. WKN im Beispiel), welche genau zwischen diesen beiden Tags steht; das geht am einfachsten über <b>(.*?)</b>. Also ich konnte so das ganze Problem lösen und mein Perl-progi was ich gepostet hatte, hat auch funktioniert.

                das problem, <b></b> kommt mehrmals in der zeile vor! Deine version funkionierte definitiv nicht bei mir. Hab das aber mal vereinfacht, kann man da jetzt noch mehr vereinfachen? beachte das ich links von $wkn noch den Namen extrahiere, der aus Buchstaben aber auch aus codierten Umlauten besteht:

                />([\w&;.\s_-]+)</a>.*$wkn</td>\s.*<b>(.*?)</b><br/i

                Wenn ich den Vorderen Ausdruck auch durch (*.?) ersetze, pasiert folgendes: http://www.knet-systems.de/fso.php

                So wie darüber geht es ohne Probleme!

                Viele Grüße

                -- Andreas

                1. Halihallo Workaholic ;)

                  FERTIG! Es läuft! Wer mal probieren will ;-)
                  http://www.knet-systems.de/fso.php

                  Cool. Gratulation!

                  Hätte ich nie gedacht, nur die regulären Ausdrücke sind noch sehr wirr :-) Ich mach das lieber "zu Fuß", etwas komplizierter, naja - fehlt noch die Erfahrung.

                  Also, wenn du das anders machen willst, viel Spass beim Programmieren ;)
                  Ich glaube, dass hier RegularExpressions in Anbetracht des Zeitaufwandes die beste Lösung sind.

                  Ay caramba, sieht ja ziemlich krass aus. Es scheint du hast etwas gegen meine (.*?)'s zu haben??? - was machst du denn mit ([0-9]{1,5}.[0-9]{2})??? - Die Zahl auslesen, klar. Aber das geht viel einfacher mit (.*?)! - Ist einige Bytes kürzer...

                  ich verstehe halt nicht, was das ist :-) (.*) verstehe ich, bedeutet irgendein Zeichen(0-unendlich viele) außer newline, oder? Aber was soll dann noch das '?' ?

                  Ach so, also hier die Erklärungen:

                  * : Matched 0 oder mehrmals

                  • : Matched 1 oder mehrmals
                    ? : Matched 0 oder 1 mal.

                  Aber was soll jetzt das Konstrukt (.*?)? :

                  Normalerweise ist die RegEngine so konfiguriert, dass sie _möglichst_ viel matched. Was wir aber in deinem Beispiel brachen, ist exakt der String zwischen <b> und </b> und nicht zwischen dem ersten Vorkommen von <b> und dem _letzten_ von </b>. Das kann man mit (.*?) machen, dann wird nämlich die kleinst mögliche String gematched (das ? am Schluss bewirkt dies), als beispiel:

                  hello <b>world</b> <b>hello</b>

                  bei */+ wird der erste Match "world</b> <b>hello", jedoch bei (.*?) wird nur "world" geliefert. Also der kleinst mögliche Match.

                  die '<' und '>' musst du übrigens nicht escapen.
                  hatte alles mögliche verändert, aber hast Recht!

                  Allgemein: Du hast einen String mit zwei Werten die du kennst (<b> und </b> im Beispiel) und suchst die Zeichenfolge (eg. WKN im Beispiel), welche genau zwischen diesen beiden Tags steht; das geht am einfachsten über <b>(.*?)</b>. Also ich konnte so das ganze Problem lösen und mein Perl-progi was ich gepostet hatte, hat auch funktioniert.

                  das problem, <b></b> kommt mehrmals in der zeile vor! Deine version funkionierte definitiv nicht bei mir. Hab das aber mal vereinfacht, kann man da jetzt noch mehr vereinfachen? beachte das ich links von $wkn noch den Namen extrahiere, der aus Buchstaben aber auch aus codierten Umlauten besteht:

                  />([\w&;.\s_-]+)</a>.*$wkn</td>\s.*<b>(.*?)</b><br/i

                  Wenn ich den Vorderen Ausdruck auch durch (*.?) ersetze, pasiert folgendes: http://www.knet-systems.de/fso.php

                  Upsa, jep, wohl nicht grad das gewollte Ergebnis :-(
                  (.*?) statt (*.?)...?
                  Aber wenn du links und rechts von (.*?) eine bekannte Zeichenfolge hast, sollte es eigentlich schon funktionieren (wie gesagt, bei mir hat es ja wunderprächtig funktioniert, sogar mit mehreren <b>(.*?)</b> - Kombinationen).

                  So wie darüber geht es ohne Probleme!

                  Ich kann mir zwar nicht erklären, warum; aber wenns funktioniert ist's ja OK und kannst es so lassen.

                  Viele Grüsse

                  Philipp

                  PS: Du hast doch Perl installiert, nicht? - Dann kannst ja mal

                  perldoc perlre

                  lesen. Dort steht alles schön geschrieben.

                  1. Hi!

                    Hätte ich nie gedacht, nur die regulären Ausdrücke sind noch sehr wirr :-) Ich mach das lieber "zu Fuß", etwas komplizierter, naja - fehlt noch die Erfahrung.

                    Also, wenn du das anders machen willst, viel Spass beim Programmieren ;)
                    Ich glaube, dass hier RegularExpressions in Anbetracht des Zeitaufwandes die beste Lösung sind.

                    nein, ich meinte meine RegEx ist noch etwas komplizierter als es sein muß :-)

                    Ay caramba, sieht ja ziemlich krass aus. Es scheint du hast etwas gegen meine (.*?)'s zu haben??? - was machst du denn mit ([0-9]{1,5}.[0-9]{2})??? - Die Zahl auslesen, klar. Aber das geht viel einfacher mit (.*?)! - Ist einige Bytes kürzer...

                    ich verstehe halt nicht, was das ist :-) (.*) verstehe ich, bedeutet irgendein Zeichen(0-unendlich viele) außer newline, oder? Aber was soll dann noch das '?' ?

                    Ach so, also hier die Erklärungen:

                    * : Matched 0 oder mehrmals

                    • : Matched 1 oder mehrmals
                      ? : Matched 0 oder 1 mal.

                    Aber was soll jetzt das Konstrukt (.*?)? :

                    Normalerweise ist die RegEngine so konfiguriert, dass sie _möglichst_ viel matched. Was wir aber in deinem Beispiel brachen, ist exakt der String zwischen <b> und </b> und nicht zwischen dem ersten Vorkommen von <b> und dem _letzten_ von </b>. Das kann man mit (.*?) machen, dann wird nämlich die kleinst mögliche String gematched (das ? am Schluss bewirkt dies), als beispiel:

                    hello <b>world</b> <b>hello</b>

                    bei */+ wird der erste Match "world</b> <b>hello", jedoch bei (.*?) wird nur "world" geliefert. Also der kleinst mögliche Match.

                    SEHR INTERESSANT!

                    die '<' und '>' musst du übrigens nicht escapen.
                    hatte alles mögliche verändert, aber hast Recht!

                    Allgemein: Du hast einen String mit zwei Werten die du kennst (<b> und </b> im Beispiel) und suchst die Zeichenfolge (eg. WKN im Beispiel), welche genau zwischen diesen beiden Tags steht; das geht am einfachsten über <b>(.*?)</b>. Also ich konnte so das ganze Problem lösen und mein Perl-progi was ich gepostet hatte, hat auch funktioniert.

                    das problem, <b></b> kommt mehrmals in der zeile vor! Deine version funkionierte definitiv nicht bei mir. Hab das aber mal vereinfacht, kann man da jetzt noch mehr vereinfachen? beachte das ich links von $wkn noch den Namen extrahiere, der aus Buchstaben aber auch aus codierten Umlauten besteht:

                    />([\w&;.\s_-]+)</a>.*$wkn</td>\s.*<b>(.*?)</b><br/i

                    Wenn ich den Vorderen Ausdruck auch durch (*.?) ersetze, pasiert folgendes: http://www.knet-systems.de/fso.php

                    Upsa, jep, wohl nicht grad das gewollte Ergebnis :-(
                    (.*?) statt (*.?)...?
                    Aber wenn du links und rechts von (.*?) eine bekannte Zeichenfolge hast, sollte es eigentlich schon funktionieren (wie gesagt, bei mir hat es ja wunderprächtig funktioniert, sogar mit mehreren <b>(.*?)</b> - Kombinationen).

                    ich habe da auch (*.?) stehen, habe mich vertippt im Posting. Aber bedenke, das ich den Ausdruck noch nach "rechts" ausgebaut habe, das hattest Du vorher nicht, deiner fing erst bei $wkn an, und hat noch ein paar Daten mehr, aber links davon gespeichert.

                    So wie darüber geht es ohne Probleme!

                    Ich kann mir zwar nicht erklären, warum; aber wenns funktioniert ist's ja OK und kannst es so lassen.
                    PS: Du hast doch Perl installiert, nicht? - Dann kannst ja mal

                    Mit einem falschen Zeichen kann man schon ne ganze Menge verhunzen!

                    perldoc perlre

                    Ja, aber wo ausführren? In SSH geht das nicht, auch nicht mit '$' der 'perl' davor. Wo sonst?

                    ist das was anderes als 'man perl' in der SHELL?

                    Grüße
                    Andreas

                    1. ich habe da auch (*.?) stehen, habe mich vertippt im Posting. [...]

                      und schon wieder vertippt: (.*?)

                      ;-)

                      1. Halihallöchen putziges Forum

                        ich habe da auch (*.?) stehen, habe mich vertippt im Posting. [...]

                        und schon wieder vertippt: (.*?)

                        <ironie>
                           Manche lernen es einfach nie ;) hehe!
                        </ironie>

                        Nun, solange es im Quellcode stimmt ist ja alles IO, nicht??? - Und ich habe meinen Browser bereits so konfiguriert, dass er bei deinen Postings alle (*.?) durch (.*?) ersetzt ;) ;)

                        my $falsch = '(*.?)'; my $richtig = '(.*?)';
                        if ($posting->getAuthor eq 'Andreas') {
                           my $geaendert = $posting->getMessage;
                           $geaendert =~ s/$falsch/$richtig/g;
                           $posting->setMessage( $geaendert );
                        }
                        $posting->show;

                        ;););)

                        Viele Grüsse

                        Philipp

                    2. Halihallo Andreas

                      Also, wenn du das anders machen willst, viel Spass beim Programmieren ;)
                      Ich glaube, dass hier RegularExpressions in Anbetracht des Zeitaufwandes die beste Lösung sind.

                      nein, ich meinte meine RegEx ist noch etwas komplizierter als es sein muß :-)

                      Da hab ich wohl was falsch verstanden (wiedermal etwas zu schnell gelesen), sorry.

                      [...]

                      hello <b>world</b> <b>hello</b>

                      bei */+ wird der erste Match "world</b> <b>hello", jedoch bei (.*?) wird nur "world" geliefert. Also der kleinst mögliche Match.

                      SEHR INTERESSANT!

                      Ja, stimmt. Hat mir Calocybe beigebracht (der hat mir, als ich mit RegExpe angefangen habe immer geholfen; danke nochmals an ihn an dieser Stelle) ;)
                      Übrigens, musst nicht gleich die ganze Diskussionsfolge wieder mitposten (die letzten zwei Absätze würden reichen, um zu wissen, worauf du antwortest), sonst bekommt teamone noch Speicherprobleme ;)

                      die '<' und '>' musst du übrigens nicht escapen.
                      hatte alles mögliche verändert, aber hast Recht!

                      ich habe da auch (*.?) stehen, habe mich vertippt im Posting. Aber bedenke, das ich den Ausdruck noch nach "rechts" ausgebaut habe, das hattest Du vorher nicht, deiner fing erst bei $wkn an, und hat noch ein paar Daten mehr, aber links davon gespeichert.

                      Ja, das hatte auch einen Grund, du hattest ja vorher mal einen kleinen HTML-Schnipsel gepostet, der startete eben mit $wkn, deshalb habe ich gleich das aus "Anfang" genommen.

                      perldoc perlre

                      Ja, aber wo ausführren? In SSH geht das nicht, auch nicht mit '$' der 'perl' davor. Wo sonst?

                      Weiss ich leider nicht, aber gibt einfach mal "perldoc perlre" bei Google ein, dann wirst du schon beim ersten Ergebnis fündig. Geht übrigens auch mit Modulbeschreibungen; das ist alles online, sogar tausendmal...

                      Viele Grüsse

                      Philipp

          2. Halihallo

            preg_match ( "/$wkn(.*?)<b>(.*?)</b>/i", $html_body , $kurs);
            echo $kurs[1];

            jetzt verstehe ich gar nichts mehr. ich mache folgendes:
                    preg_match ( "/($wkn).*/i", $html_body , $kurs);
            echo $kurs[0];
            Man sollte ja meinen, dasbrächte mir den in $wkn gespeicherten Wert als  $kurs[0], aber was da raus kommt:

            623100" class="blau11px" target="_blank">Infineon
            623100

            das hängt wohl am .*, welches du noch angehängt hast. Zudem: warum setzt du $wkn in Klammern?

            Viele Grüsse

            Philipp

        2. Halihallo

          ... und ich wollte gerade schlafen gehen...

          Aber du hast mich erwischt, bin nämlich etwa 10 Min. vor deinem Posting ins Bett gehüpft... Und heute morgen, als ich die Postings lesen wollte, bekam ich statt forum.de.selfhtml.org eine unfreundliche Meldung von Bluewin, ich soll doch bitte meine Interneteinstellungen ändern, da sich deren Nummer geändert hat... Na, ja...

          $t =~ s/\n//g;

          BTW. Dieses Ding hab ich auch noch reingepackt, da mir die Zeilenumbruche alles versauten und diese ja nicht zwingend für das auslesen der WKN/Kurse benötigt werden.

          Ich mache das ja in PHP, aber ich verwende da die gleichen Regulären Ausdrücke, hab das noch etwas vereinacht fürs erste:

          Entschuldige, dass ich's mit perl mache, aber bei dieser Programmiersprache fühle ich mich eben zu Hause... Aber die Regexpe gleiben ja dieselben.

          preg_match ( "/$wkn(.*?)<b>(.*?)</b>/i", $html_body , $kurs);
          echo $kurs[1];

          Also da hab ich keinen Schimmer. Bei mir hat's ja so funktioniert (ja sogar noch etwas komplizierter).

          Leider steht dann nichts in $kurs (wird automatisch zum Array mit den gespeicherten Ergebnisse).

          Also meinem Verständnis nach, sollte das so funktionieren.

          Viele Grüsse

          Philipp