Kapanış verileri ile çalışmaya yeni başlayan arkadaşlar için IMKB sitesinden verileri otomatik olarak çekip bir klasöre kaydeden pratik bir python kod örneği.
IMKB sitesinde, yatırımcılar ve data işleme firmalarının faydalanabileceği, piyasa ile ilgili pek çok bilgi bulunuyor.
Biz sadece Hisse Senetleri Piyasası Bültenlerini çekiyoruz. Bunlar .zip uzantılı sıkıştırılmış excel dosyaları. Daha sonraki yazılarda bu dosyaların nasıl işleneceğini de bulabileceksiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | # -*- coding: utf-8 -*- # +-----------------------------------------------------------------------------------+ # IMKB sitesinden belirli tarihler arasındaki... # günlük kapanış bültenlerini indiren kod örneği. # # Hazırlayan : FVolkanY // www.globalekonomi.com # +-----------------------------------------------------------------------------------+ import sys import urllib # Önce indirme adresimizin kodlarını hazırlıyoruz # .zip dosyalar için for döngüsü # 2000 yılından başla, 2010 yılına kadar devam et (2010 hariç) for yil in range(2000, 2010): # 1. aydan başla, 13.aya kadar devam et (13.ay hariç) for ay in range(1,13): # 1. günden başla, 32. güne kadar devam et (32.gün hariç) for gun in range(1,32): # 1.seansdan başla, 3.seansa kadar devam et (3.seans hariç) for seans in range(1,3): # yıl ismini string yapalım ki adres satırına yazabilelim yilx=str(yil) # eğer ay 10dan küçükse başına 0 koyalım ve ayı stringe çevirelim if ay<10: ayx="0"+str(ay) if ay>=10: ayx=str(ay) # eğer gün 10dan küçükse başına 0 koyup günü stringe çevirelim if gun<10: gunx="0"+str(gun) if gun>=10: gunx=str(gun) # seans bilgisini de stringe çeviriyoruz seansx=str(seans) # elimizde döngü içinde değişen yıl, ay,gün ve seans bilgisi var # veri çekeceğimiz adresi belirtelim adres="http://www.imkb.gov.tr/data/thb/"+yilx+"/"+ayx+"/thb"+yilx+ayx+gunx+seansx+".zip" # artık verileri çekmeyi deneyebiliriz try: # deniyoruz indir=urllib.urlopen(adres) oku=indir.read() # durumdan haberdar olalım print "Dosya okunuyor" # belirtilen adresde karşınmıza ne çıkacak? # galiba .zip yerine <html> ile başlayan gibi bir sayfaya gittik, belki tatil günü olabilir if oku.startswith("< "): print "Belirtilen adres üzerinde bu isimde bir dosya yok. Bir sonraki dosya ile işlem devam edecek." # 404 not found ile de karşılaşabiliriz elif oku.startswith("4"): print "Belirtilen adres üzerinde bu isimde bir dosya yok. Bir sonraki dosya ile işlem devam edecek." # herşey yolunda ise else: # çektiğimiz dosyayı klasörümüze kaydedelim dosya=open("./veriler/"+yilx+ayx+gunx+seansx+".zip","wb") dosya.write(oku) dosya.close() # işlem tamam print "İşlem tamamlandı. Bir sonraki dosya ile işleme devam ediliyor." # tahmin edemediğimiz bir hata oluştuğunda except: print "Dosya Okuma/Yazma hatası!!!" # for döngüsü sona erdiğinde haberimiz olsun print "Tüm dosyalar indirildi." |
Sürekli Dosya Okuma/Yazma hatası!!! almamak için .py uzantılı scriptinizin bulunduğu dizinde, dosyaların kaydedileceği veriler isimli bir klasör oluşturmanız gerekiyor.
Pythonun girintili yazım kurallarına dikkat edip girintilerde 4′er boşluk yerleştirmeyi unutmayın.
Komple kopyala yapıştır yaparsanız, satır numaralarını da alıcağı için scriptiniz çalışmaz. 27 ve 32. satırlardaki küçüktür işareti < olarak çıkıyor yazarken düzeltmelisiniz.
Programı çalıştırdığınızda veriler klasörü içinde hisse senetleri piyasası bültenlerinin bulunduğu .zip dosyalarını göreceksiniz.
Bu kodlar ile bir program hazırlayıp IMKB sitesinden veri çekmek istediğinizde Telif Hakkı ve Çekince İhbarında bulunan şartları kabul etmelisiniz.
Kullanım izni ve şartları
Kullanıcılar bilgi ve dokümanları, sadece bilgi edinme amacıyla kullanabilir. Burada mevcut bulunan bilgiler, İMKB’nin önceden yazılı olarak izni alınmadan kısmen veya tamamen kopya edilemez, uygulamaya konulamaz, dağıtılamaz, kiralanamaz, çoğaltılamaz, alt lisansla kullandırılamaz, değiştirilemez, ileride kullanılmak üzere saklanamaz. Bilgi sayfalarındaki tüm görüntüler İMKB adına tescilli olup, İMKB’nin önceden yazılı izni alınmadan ticari amaçlı olarak kullanılamaz.Bu web sitesinde yer alan bütün ürün ve hizmetler önceden bildirimde bulunmaksızın değiştirilebilir.
Çekinceler
İMKB’nin bu bilgilerin doğruluğu ve tamlığı hususlarına açık veya zımni şekilde kefil veya garantör olduğu yolunda hiçbir taahhüdü bulunmamaktadır. İMKB tarafindan yayınlanan bilgilerin kullanıcıları sarih bir şekilde kabul ederler ki, bu bilgiler kim tarafindan kullanılırsa kullanılsın, kullanım neticesi doğrudan, dolaylı veya netice olarak bir kayıp veya zarar doğması halinde bu durum İMKB’ye hiçbir borç, sorumluluk veya mükellefiyet yüklemez.İnsan hataları, teknik nedenler veya diğer faktörler nedeniyle her tür hata veya bilgi eksikliğinin vuku bulabileceği gerçeğinden hareketle, İMKB kendi yayınladığı veya bilgi sağladığı kaynaklardan temin edilen bilgilerdeki hata ve eksikliklerden sorumlu bulunmamaktadır.
Kolay gelsin.








