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
Aktienwert anzeigen, loggen, auswerten
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Aktienwert anzeigen, loggen, auswerten
Plane die GUI soweit schonmal.+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?
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Aktienwert anzeigen, loggen, auswerten
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.
Ein "richtige" Schnittstelle wird Dir kaum ein Kurslieferant zur Verfügung stellen, da diese selbst bei 15 Minuten zeitverzögerten Kursen Gebührenpflichtig sind.
Re: Aktienwert anzeigen, loggen, auswerten
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
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
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Aktienwert anzeigen, loggen, auswerten
Es lässt sich von einer XML-Library parsen. ^^+Fuss+ hat geschrieben:Jetzt zu den Fragen:
- Wodran erkenne ich "sauberes XML" ?
Parameter werden mit Anführungszeichen gesetzt:
Code: Alles auswählen
<tag parameter="value" />
statt
<tag parameter=value />
Ansonsten müssen Tags abgeschlossen werden:
Code: Alles auswählen
<br />
statt
<br>
bzw.
<div><span> ... </span></div>
statt
<div><span> ... </div>
Das HTTP-Protokoll ist sehr einfach.+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.
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 );
}
Kann Gtk Netzwerkzugriffe?+Fuss+ hat geschrieben:Am besten wäre es ja dann in Sachen Sockets etc. auf die eh schon verwendete GTK/Glib-Bibliothek zurückzugreifen.
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Aktienwert anzeigen, loggen, auswerten
Anscheinend schon: http://library.gnome.org/devel/gio/2.26/Xin hat geschrieben:Kann Gtk Netzwerkzugriffe?
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.
MfG Fuss
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Aktienwert anzeigen, loggen, auswerten
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.
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.
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Aktienwert anzeigen, loggen, auswerten
Webbrowser sind da sehr tolerant.+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.
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.