Matti Maekitalo: Aktienkurse automatisch von Internetseite abfragen

Beitrag lesen

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);

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