Kirjoittaja Aihe: Osakekurssien (Helsingin pörssi) hakeminen pythonilla  (Luettu 8950 kertaa)

Jantunen

  • Käyttäjä
  • Viestejä: 254
  • Hö.
    • Profiili
    • Strobotti.com: Valokuvausta ja kameraharrastusta
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

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

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
Lenovo Thinkpad T420 Intel i5 16Gt/SSD512GB+HDD2TB, Ubuntu 16.04 Xenial Xerus 64bit; Kuvia ja lätinää valokuvauksesta: https://www.strobotti.com/

Jantunen

  • Käyttäjä
  • Viestejä: 254
  • Hö.
    • Profiili
    • Strobotti.com: Valokuvausta ja kameraharrastusta
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #1 : 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

Eli tuonne kun syöttää esim GOOG, niin hakukoneen tähtitieteellisen kallis arvopaperihan se sieltä tupsahtaa ruutuun.
Lenovo Thinkpad T420 Intel i5 16Gt/SSD512GB+HDD2TB, Ubuntu 16.04 Xenial Xerus 64bit; Kuvia ja lätinää valokuvauksesta: https://www.strobotti.com/

Jantunen

  • Käyttäjä
  • Viestejä: 254
  • Hö.
    • Profiili
    • Strobotti.com: Valokuvausta ja kameraharrastusta
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #2 : 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

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?
Lenovo Thinkpad T420 Intel i5 16Gt/SSD512GB+HDD2TB, Ubuntu 16.04 Xenial Xerus 64bit; Kuvia ja lätinää valokuvauksesta: https://www.strobotti.com/

Jantunen

  • Käyttäjä
  • Viestejä: 254
  • Hö.
    • Profiili
    • Strobotti.com: Valokuvausta ja kameraharrastusta
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #3 : 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...
Lenovo Thinkpad T420 Intel i5 16Gt/SSD512GB+HDD2TB, Ubuntu 16.04 Xenial Xerus 64bit; Kuvia ja lätinää valokuvauksesta: https://www.strobotti.com/

sniveri

  • Käyttäjä
  • Viestejä: 322
    • Profiili
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #4 : 22.02.11 - klo:23.49 »
Asiallinen projekti. Onko mitään kuvakaappauksia olemassa tästä sovelluksesta?
Ubuntu 10.04 64-bit Desktop
Ubuntu 10.04 32-bit Desktop x 2
Ubuntu 10.04 32-bit Server

sniveri@diasp.eu

Jantunen

  • Käyttäjä
  • Viestejä: 254
  • Hö.
    • Profiili
    • Strobotti.com: Valokuvausta ja kameraharrastusta
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #5 : 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
Lenovo Thinkpad T420 Intel i5 16Gt/SSD512GB+HDD2TB, Ubuntu 16.04 Xenial Xerus 64bit; Kuvia ja lätinää valokuvauksesta: https://www.strobotti.com/

sniveri

  • Käyttäjä
  • Viestejä: 322
    • Profiili
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #6 : 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?

Ubuntu 10.04 64-bit Desktop
Ubuntu 10.04 32-bit Desktop x 2
Ubuntu 10.04 32-bit Server

sniveri@diasp.eu

Jantunen

  • Käyttäjä
  • Viestejä: 254
  • Hö.
    • Profiili
    • Strobotti.com: Valokuvausta ja kameraharrastusta
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #7 : 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
Lenovo Thinkpad T420 Intel i5 16Gt/SSD512GB+HDD2TB, Ubuntu 16.04 Xenial Xerus 64bit; Kuvia ja lätinää valokuvauksesta: https://www.strobotti.com/

sniveri

  • Käyttäjä
  • Viestejä: 322
    • Profiili
Vs: Osakekurssien (Helsingin pörssi) hakeminen pythonilla
« Vastaus #8 : 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
Ubuntu 10.04 64-bit Desktop
Ubuntu 10.04 32-bit Desktop x 2
Ubuntu 10.04 32-bit Server

sniveri@diasp.eu