Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Jantunen - 13.02.11 - klo:20.15

Otsikko: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: Jantunen - 13.02.11 - klo:20.15
Moikka,

Opiskelen huvikseni Gnome panel applettien tekemistä pythonilla ja ajattelin, että olisi mielenkiintoista vääntää sellainen appletti, joka hakee määrättyjen osakkeiden kurssit helsingin pörssistä. Ongelma ei näemmä ole itse toteutuksessa, vaan siitä, mistä Nasdaq OMX:n kursseihin pääsee käsiksi. Yahoo Financella saa kyllä jenkki-osakkeiden kursseja:

http://benjisimon.blogspot.com/2009/01/truly-simple-stock-api.html (http://benjisimon.blogspot.com/2009/01/truly-simple-stock-api.html)

Mutta kun tuonne syöttää Helsingin pörssin osakkeen symbolin, saa nollia vastaukseksi. Outoahan tässä on se, että kun esim Kone Oy:n osakkeen symbolin syöttää tuonne itse sivuston hakuun, se hakee kyllä nimen oikein, mutta itse kurssitiedot jäävät uupumaan:

http://finance.yahoo.com/q?s=KNEBV&ql=1 (http://finance.yahoo.com/q?s=KNEBV&ql=1)

Itse kysymys kuuluu siis: onko kenelläkään kokemusta tai tietoa mistä saisi osakekurssit ilmaiseksi, edes viivästettynä (reaaliaikaisuutta en tarvitse tähän harjoitukseen) ja nimenomaan ilmaiseksi, koska kyseessä on opiskelumielessä tehtävästä sovelmasta, jonka mikäli joskus jopa saan valmiiksi, aion laittaa avoimella lähdekoodilla kaikkien saataville.

Tarve olisi siis saada edellinen päätöskurssi sekä muutos, per osake, ideaalitilanteessa myös lista osake-symboleista, jolloin käytettävyys saadaan paremmaksi, kun seurattavien osakkeiden symboleita ei tarvitsisi syöttää käsin.

Ps. mikäli löydän/saan vastauksen tuohon em. kysymykseen, laitan tähän ketjuun myös infoa edistyksesta - mikäli sitä siis ikinä tosiaan tapahtuu
Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: Jantunen - 13.02.11 - klo:20.47
Taas yksi muuten hyvä osuma, mutta Helsingin pörssistä tuo ei valitettavasti tiedä mitään:

http://www.webservicex.net/stockquote.asmx?op=GetQuote (http://www.webservicex.net/stockquote.asmx?op=GetQuote)

Eli tuonne kun syöttää esim GOOG, niin hakukoneen tähtitieteellisen kallis arvopaperihan se sieltä tupsahtaa ruutuun.
Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: Jantunen - 19.02.11 - klo:11.27
Edistystä on tullut jonkin verran, vaikka aikaa ei ole ollut juuri tuon kanssa leikkiä, eli jouduin tukeutumaan plan-Ö:hön, eli parsin nyt osakkeiden kurssit suoraan tuolta:

http://www.nasdaqomxnordic.com/shares?languageId=1 (http://www.nasdaqomxnordic.com/shares?languageId=1)

Ei mikään elegantti ratkaisu ja sehän kosahtaa heti kun nuo päättävät tehdä vähänkään isomman kotisivurempan...

Nyt ongelmaksi on muodostunut tuon vastauksen parserointi, eli koitan käyttää tidyä + minidom -kirjastoa, joista ensimmäinen rokkaa kuin hirvi, mutta jälkimmäisen käyttäminen saa aikaan virheilmoitusta, esimerkkikoodia:

Koodia: [Valitse]
#!/usr/bin/env python

import xml.dom.minidom
import tidy

xhtml = '<html><head><title>testi</title></head><body><h1>test</h1><p>some content</p></body></html>'

tidyOptions = dict(output_xhtml=1,  add_xml_decl=1,  indent=1,  tidy_mark=0)
tidyRes = tidy.parseString(xhtml,  **tidyOptions)

doc = xml.dom.minidom.parseString(tidyRes)

print(doc)

Kuolee seuraavaan virheilmoon:

Koodia: [Valitse]
$ ./testxml.py
Traceback (most recent call last):
  File "./testxml.py", line 11, in <module>
    doc = xml.dom.minidom.parseString(tidyRes)
  File "/usr/lib/python2.6/xml/dom/minidom.py", line 1928, in parseString
    return expatbuilder.parseString(string)
  File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 940, in parseString
    return builder.parseString(string)
  File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 223, in parseString
    parser.Parse(string, True)
TypeError: Parse() argument 1 must be string or read-only buffer, not _Document

Varsinainen kysymys/kysymykset: onko tuo minidom oikea kirjasto käytettäväksi, kun pythonin versio on 2.6.6 ja mikäli tuo on käyttökelpoinen, niin mitä ihmettä teen väärin?
Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: Jantunen - 22.02.11 - klo:20.58
Heh, tästähän tuli sitten päiväkirja, mutta samapa tuo, laitetaan nyt vähän taas edistyksestä kertomusta tänne  ;D

XML-ongelma selvitetty, eli jätin kokonaan tuon tidyn käyttämättä, se kun näemmä sekoitti pakan pahasti ja ilman sitä toimii vallan mainiosti, koodasin vielä pikku-funktion joka poistaa DOM-puusta kaikki nodet, joissa ei ole muuta kuin whitespacea, niin muuttui XML:n käsittely hiukan helpommaksi. Tämänhetkinen tilanne on se, että haen kerralla kaikki Nasdaq OMX nordiciin listatut "tickerit" collectionissa indeksoituna symbolin mukaan, eli yksittäinen rivi tuolla collectionissa näyttää nyt suunnilleen tältä:

Koodia: [Valitse]
{'title': u'KONE Oyj', 'symbol': u'KNEBV', 'currency': u'EUR', 'change_percentage': u'-0,33', 'price': u'39,67', 'change': u'-0,13'}

Seuraavaksi alan selvittelemään miksi ihmeessä tuo appletti ei näytä tuota popup-valikkoa hiirellä klikatessa vaikka koodi näyttää mielestäni oikealta...
Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: sniveri - 22.02.11 - klo:23.49
Asiallinen projekti. Onko mitään kuvakaappauksia olemassa tästä sovelluksesta?
Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: Jantunen - 23.02.11 - klo:08.20
Asiallinen projekti. Onko mitään kuvakaappauksia olemassa tästä sovelluksesta?

Kuvankaappauksia ei ihan vielä ole tarjolla, on vasta nuo "peruskirjastot" koodattuna, mutta ajattelin samankaltaista lähestymistapaa, mikä on tuolla Ubuntussa vakiona tulevalla Invest-appletilla, mutta toimisi pohjoismaisilla markkinoilla ja olisi hieman helppokäyttöisempi (ei tarvitsisi mm tietää symbolia, jotta voi lisätä osakkeen seurattavaksi yms). Katsotaan nyt mitä sitä saa aikaiseksi kun oikein innostuu...  :D
Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: sniveri - 23.02.11 - klo:17.43
Kuvankaappauksia ei ihan vielä ole tarjolla, on vasta nuo "peruskirjastot" koodattuna, mutta ajattelin samankaltaista lähestymistapaa, mikä on tuolla Ubuntussa vakiona tulevalla Invest-appletilla, mutta toimisi pohjoismaisilla markkinoilla ja olisi hieman helppokäyttöisempi (ei tarvitsisi mm tietää symbolia, jotta voi lisätä osakkeen seurattavaksi yms). Katsotaan nyt mitä sitä saa aikaiseksi kun oikein innostuu...  :D

Pistä toki linkkiä kun saat toimivaksi! Vai meneekö tämä suoraan software-centeriin hintalapun kera?

Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: Jantunen - 23.02.11 - klo:21.35
Kuvankaappauksia ei ihan vielä ole tarjolla, on vasta nuo "peruskirjastot" koodattuna, mutta ajattelin samankaltaista lähestymistapaa, mikä on tuolla Ubuntussa vakiona tulevalla Invest-appletilla, mutta toimisi pohjoismaisilla markkinoilla ja olisi hieman helppokäyttöisempi (ei tarvitsisi mm tietää symbolia, jotta voi lisätä osakkeen seurattavaksi yms). Katsotaan nyt mitä sitä saa aikaiseksi kun oikein innostuu...  :D

Pistä toki linkkiä kun saat toimivaksi! Vai meneekö tämä suoraan software-centeriin hintalapun kera?

Ilmaiseksi lähtee ja lähdekoodihan tulee yllättäen mukana, kun skriptikieli on kyseessä (täytynee panostaa tuohon "käsialaan"  :P)

Tämänhetkinen tilanne on se, että olen jopa saanut kuvakkeen tuonne gnome-paneliin, sille konteksti-menuun preferences- ja about-kohdat sekä Gladella piirrellyt käytettävät dialogit. Hommaa hidastaa tosiaan allekirjoittaneen nollatietämys niin pythonista, GTK:sta kuin Gnomen appleteistakin, vaikka ohjelmointikokemusta muuten onkin vaikka muille jakaa; mutta ei lannistuta  :D
Otsikko: Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
Kirjoitti: sniveri - 27.02.11 - klo:13.35
Tämänhetkinen tilanne on se, että olen jopa saanut kuvakkeen tuonne gnome-paneliin, sille konteksti-menuun preferences- ja about-kohdat sekä Gladella piirrellyt käytettävät dialogit. Hommaa hidastaa tosiaan allekirjoittaneen nollatietämys niin pythonista, GTK:sta kuin Gnomen appleteistakin, vaikka ohjelmointikokemusta muuten onkin vaikka muille jakaa; mutta ei lannistuta  :D

Nojuu eihän se ole aina helpoimmasta päästä alkaa täysin uusiin hommiin se on varma. Tiedä sitten auttaisiko jos lataat muutaman pikku-appletin koodit jotka olisi vastaavalla kielellä kirjoiteltu ja katsastaisi niistä idean? Python on kaiketi helpoimmasta päästä tässä projektissa, tärkeintä kai olisi saada ne "liityntä kohdat" tuonne gnome-paneliin pelaamaan jotakuinkin yleisesti hyväksytyllä tavalla :D