Grapborsa | Günlük Borsa Verilerini Tutan Script [Python]
-
Aslında amacım günlük borsa verilerini db’de tutup ay sonu bunu grafiğe dökmekti fakat şuan ki haliyle paylaşmak istedim.
Database oluşturma kısmında şirket isimlerini xpath ile çekemediğim için regex kullandım bu da scriptin yavaşlamasına sebep olmuş olabilir.
Scripti yazma kısmında yardımlarından dolayı Yasin Yaman ve 0x7000‘a teşekkürlerimi sunarım.Trollüğe hep destek tam destek

Github sayfası : https://github.com/ka1nsha/grapborsa
#İsmi neden böyle? : Graph yazıcağım yerde grap yazmışım böyle daha iyi boşverin


Kodlara gelirsek ilk kodlar şirket isimleriyle database oluşturmak için.
#-*-coding:utf-8-*- import urllib.request import sqlite3 import string import re import os kontrol = os.path.exists("db.db") if kontrol == True: pass else: basharfler = list(string.ascii_lowercase) for i in basharfler: ac = urllib.request.urlopen("http://uzmanpara.milliyet.com.tr/canli-borsa/?Harf="+i) ac = ac.read() p = re.compile('id=\"h_tr_id_([A-Z].+)\" ', re.MULTILINE) p = re.findall(p,ac.decode("cp1254")) ac = sqlite3.connect("db.db") cs = ac.cursor() for i in p: try: cs.execute("CREATE TABLE %s(tarih text,oran text,durum text)" %i) ac.commit() except sqlite3.OperationalError: pass print("hata")2.koda gelirsek o da database üzerinden tablodan şirket isimlerini seçip o sayfaya gidip gerekli verileri alıyor.
#-*-coding:utf-8-*- import datetime import sqlite3 import requests from lxml import html tarih = datetime.datetime.now().strftime("%Y-%m-%d") ac = sqlite3.connect("db.db") cs = ac.cursor() sorgu = cs.execute("SELECT * FROM sqlite_master where type='table' ") liste = [] for i in sorgu: liste.append(i[1]) cs.close() ac.close() for i in liste: firmaad = i ac = sqlite3.connect("db.db") cs = ac.cursor() url = requests.get("http://uzmanpara.milliyet.com.tr/borsa/hisse-senetleri/%s/" %firmaad) source = html.fromstring(url.text) fiyat = source.xpath('/html/body/div[4]/div[9]/div[3]/div[1]/span[1]/text()') degisim = source.xpath('/html/body/div[4]/div[9]/div[3]/div[1]/table/tbody/tr[1]/td[2]/span[1]/text()') fiyat = ''.join(fiyat) degisim = ''.join(degisim) firmaad = ''.join(firmaad) (firmaad,fiyat,degisim)) cs.execute("INSERT INTO {} VALUES (?,?,?)".format(firmaad),(tarih,degisim,fiyat)) ac.commit() cs.close() ac.close() -
ellerine sağlık güzel uygulama kodlara bakarak artık diğer uygulama dillerindede yazabiliriz.
-
lxml'yi geliştiren adam o xpath'i görse kendini sikerek intihar ederdi
-
Daft bunu yazdı
lxml'yi geliştiren adam o xpath'i görse kendini sikerek intihar ederdi
zuhahah olm nereden bulunuyonuz şu lafları...
-
Daft bunu yazdı
lxml'yi geliştiren adam o xpath'i görse kendini sikerek intihar ederdi
Herkes kendi sikinden sorumlu isterse 100 kişiye siktirsin benim için sıkıntı yok :D
bu arada gayet temiz kodmuş eyvallah :) -
edit.. bi deneme yaptim sadece :) ilgim yok ama paylasimin icin tesekkurler hoca, acik kaynaklari desteklemek lazim.
unbalanced tarafından 04/Eyl/15 22:13 tarihinde düzenlenmiştir -
Eğer lazım olursa hisselerin tüm geçmiş verilerini çeken bi eklenti yazmıştım verebilirim.
-
Tayga bunu yazdı
Eğer lazım olursa hisselerin tüm geçmiş verilerini çeken bi eklenti yazmıştım verebilirim.
Borsayla işim olmuyor hocam @daft hocanın söylediği gibi götten proje uyduruyordum.
-
İlerlet böyle bırakma.
