Aktienwert anzeigen, loggen, auswerten

Präsentation und Organisation von eigenen Projekten
Antworten
Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Aktienwert anzeigen, loggen, auswerten

Beitrag von +Fuss+ » Mi Jan 19, 2011 8:30 pm

Hallo,
wie an anderer Stelle schon beschrieben, plane ich mal wieder ein kleines Projekt.

Da ich durch meine Tante schon seit der Vorweihnachtszeit bei 2-3 Aktien täglich mal die Werte anschau und eventuell 50-100€ zum Spaß, bzw. zum Verstehen des dahinterliegenden Systems, investieren wollte, hab ich mir gedacht ich schreibe mal wieder ein Programm.

Zuerst sollte es reichen, wenn mir ein Hauptfenster, was sich in die Taskleiste minimieren lässt, einen möglichst aktuellen Aktienwert anzeigt.
Programmiersprache ist C, GUI wird mittels GTK+ realisiert.

Das Problem liegt jetzt beim Beziehen der aktuellen Aktienwerte. Kennt dort jemand eine gute API oder ähnliches?
Sonst würde ja nur noch die Möglichkeit bleiben, den Wert von einer Webseite a'la finanzen.net etc. auszulesen. Mit soetwas habe ich allerdings noch keine Erfahrungen gesammelt. Gibts es da Tutorials, fertige Bibliotheken oder ähnliches?

MfG Fuss

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aktienwert anzeigen, loggen, auswerten

Beitrag von Xin » Mi Jan 19, 2011 8:45 pm

+Fuss+ hat geschrieben:Das Problem liegt jetzt beim Beziehen der aktuellen Aktienwerte. Kennt dort jemand eine gute API oder ähnliches?
Sonst würde ja nur noch die Möglichkeit bleiben, den Wert von einer Webseite a'la finanzen.net etc. auszulesen. Mit soetwas habe ich allerdings noch keine Erfahrungen gesammelt. Gibts es da Tutorials, fertige Bibliotheken oder ähnliches?
Plane die GUI soweit schonmal.

Die API würde Dir ein Aktien-Provider vorgeben, also ein gewisses Protokoll, mit dem Du die Abfragen leisten könntest.
Findest Du keinen Provider, so solltest Du dir eine zuverlässige Seite suchen, die sauberes XML liefert. Das könntest Du dann parsen und Dir aus dem Baum die jeweilen Informationen auslesen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

C@mper
Beiträge: 88
Registriert: Mo Nov 15, 2010 3:30 pm

Re: Aktienwert anzeigen, loggen, auswerten

Beitrag von C@mper » Mi Jan 19, 2011 11:27 pm

Eine Seite aufrufen (z.B. Telekom http://de.finance.yahoo.com/lookup?s=555750 ) 's=WKN' oder (http://de.finance.yahoo.com/q?s=DTE.DE) und den ankommenden Stream scannen sollte doch ein einfacher Weg sein.
Ein "richtige" Schnittstelle wird Dir kaum ein Kurslieferant zur Verfügung stellen, da diese selbst bei 15 Minuten zeitverzögerten Kursen Gebührenpflichtig sind.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Aktienwert anzeigen, loggen, auswerten

Beitrag von +Fuss+ » So Jan 23, 2011 5:57 pm

Da nach längerer Suche keine verwendbare API gefunden wurde, muss ich aufs Parsen zurückgreifen.
Die GUI ist in den Grundzügen schon programmiert.

Jetzt zu den Fragen:
- Wodran erkenne ich "sauberes XML" ?
- Wie genau läuft das mit dem Zugriff auf die Internetseite? Hab in die Richtung leider noch keine Erfahrungen sammeln können.
Die Internetseite muss ja eigentlich nur Zwischengespeichert werden, aber bisherige Kenntnisse in Sachen Netzwerkverbindungen beschränken sich auf Intranet mittels einer veralteten SDL-Bibliothek.

Am besten wäre es ja dann in Sachen Sockets etc. auf die eh schon verwendete GTK/Glib-Bibliothek zurückzugreifen.

MfG Fuss

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aktienwert anzeigen, loggen, auswerten

Beitrag von Xin » So Jan 23, 2011 7:09 pm

+Fuss+ hat geschrieben:Jetzt zu den Fragen:
- Wodran erkenne ich "sauberes XML" ?
Es lässt sich von einer XML-Library parsen. ^^

Parameter werden mit Anführungszeichen gesetzt:

Code: Alles auswählen

<tag parameter="value" />
statt
<tag parameter=value />
Letzteres ist in HTML geduldet.

Ansonsten müssen Tags abgeschlossen werden:

Code: Alles auswählen

<br />
statt
<br>


bzw.

<div><span> ... </span></div>
statt
<div><span> ... </div>
+Fuss+ hat geschrieben:- Wie genau läuft das mit dem Zugriff auf die Internetseite? Hab in die Richtung leider noch keine Erfahrungen sammeln können.
Das HTTP-Protokoll ist sehr einfach.

Hier ein Linux-Beispiel, dass ich noch auf der Platte liegen habe:

Code: Alles auswählen

#include "netdb.h"
#include "sys/types.h"
#include "sys/socket.h"

  /* Erstellt Verbindung */

#define SERVER_PORT 80

int main( int argc, char ** argv )
{
  long x = 5;
  struct hostent * hostent;
  struct sockaddr_in servaddr;
  int sockfd;
  char Command[8192];
  char Buffer[1024];
  
  if( argc > 1 )
  { 
    hostent = gethostbyname( argv[1] );
  
    printf("Name    : %s\n", hostent->h_name );

    printf("Addr    : %d.%d.%d.%d\n", 
              (unsigned char) hostent->h_addr_list[0][0],
              (unsigned char) hostent->h_addr_list[0][1],
              (unsigned char) hostent->h_addr_list[0][2],
              (unsigned char) hostent->h_addr_list[0][3] );
    }
  else
  { printf("zuwenig Argumente\n");
    exit(0);
    }
  if( (sockfd = socket( PF_INET, SOCK_STREAM, 0 )) == -1 )
  {
    printf("Socket konnte nicht geoeffnet werden\n");
    exit(0);
    }
  else
  {
    printf("Socket wurde geoeffnet\n");

    servaddr.sin_family = AF_INET;
    servaddr.sin_port   = htons( SERVER_PORT );
    servaddr.sin_addr   = * (struct in_addr*)hostent->h_addr_list[0];   // Erste Adresse einkopieren
    
    if( connect( sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr) ) == -1 )
    {
      printf("Verbindung konnte nicht erstellt werden\n");
      exit(0);
      }
    
    printf("Verbindung besteht.\n");
    }

    sprintf(Command, "GET http://%s%s HTTP/1.0\n"
                     "Host : %d.%d.%d.%d:%s\n"
		     "Connection: Keep alive\n\n", 
		     argv[1],
		     (argv[2]) ? argv[2]
		               : "/",
                     (unsigned char) hostent->h_addr_list[0][0],
                     (unsigned char) hostent->h_addr_list[0][1],
                     (unsigned char) hostent->h_addr_list[0][2],
                     (unsigned char) hostent->h_addr_list[0][3],
		     (argv[2]) ? (argv[3])
		                 ? argv[3]
				 : "80"
			       : "80" );
    
    printf("Request: %s\n", Command);
    
    write( sockfd, &Command, sizeof( Command ) );
    
    while( x = read(sockfd, &Buffer, 1024 ) )
    {
      printf("%s\n", Buffer);
      }
     
    close( sockfd );
  
  }
Statt die Seite mit printf() auszugeben, musst Du sie halt parsen.
+Fuss+ hat geschrieben:Am besten wäre es ja dann in Sachen Sockets etc. auf die eh schon verwendete GTK/Glib-Bibliothek zurückzugreifen.
Kann Gtk Netzwerkzugriffe?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Aktienwert anzeigen, loggen, auswerten

Beitrag von +Fuss+ » Mi Jan 26, 2011 5:48 pm

Xin hat geschrieben:Kann Gtk Netzwerkzugriffe?
Anscheinend schon: http://library.gnome.org/devel/gio/2.26/
Lowlevel sollte da reichen... Für das Parsen gibt's anscheinend auch Funktionen, ich wusste ja, dass das Gnome Projekt sehr umfangreich ist, aber so umfangreich hätte ich dann doch nicht erwartet.

Danke für das Beispiel, hat sehr geholfen.

Mit dem "sauberen" XML sieht das schon schwieriger aus. Webseiten, bei denen die Parameter in "" stehen findet man jede Menge, aber bei <br /> sieht das schon anders aus. :o


MfG Fuss

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Aktienwert anzeigen, loggen, auswerten

Beitrag von Dirty Oerti » Mi Jan 26, 2011 8:10 pm

Wenns nur daran scheitert die Webseite einfach vorher einmal durchgehen und alle <br> durch br /> ersetzen lassen ;)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Aktienwert anzeigen, loggen, auswerten

Beitrag von Xin » Fr Jan 28, 2011 9:45 am

+Fuss+ hat geschrieben:Mit dem "sauberen" XML sieht das schon schwieriger aus. Webseiten, bei denen die Parameter in "" stehen findet man jede Menge, aber bei <br /> sieht das schon anders aus. :o
Webbrowser sind da sehr tolerant.

Schlussendlich kannst Du Dir aber einen Parser schaffen, der das Zeug wie auch immer geartet einliest und dann per XPath darauf zugreifen.

Der Pfad sollte sich - egal, wie der Baum interpretiert wird - nicht ändern.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten