Python ile Hisse Verilerini 5dk da bir çekme

Arkadaşlar merhaba. Selenium ile Günlük Hisse Senedi Fiyatları | İş Yatırım sayfasından hisse verilerini çekiyorum. PyQt5 ile masaüstü program yapacağım. Sormak istediğim şu:

Masaüstü programı çalıştırdığımda anasayfa (main) açılacak. Program açıkken 5 dk da bir verileri çekip veritabanına otomatik kaydetmek istiyorum. Tabi bu arada başka pencerelerde de çalışma yapabilirim.

Pc saatine bakarak saat 10.00 da başlayıp 18.00 a kadar 5dk arayla verileri çekeceğim.

Şu şekilde verileri çektim. Aşağıdaki kodu bir fonksiyon olarak yazacağım ama sürekli çalışabilmesi için PyQT5 de nerede çağırmalıyım ?

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from time import sleep

driver = webdriver.Chrome(options=Options())

driver.get(‘Günlük Hisse Senedi Fiyatları | İş Yatırım’)

sleep(2)

tbody = driver.find_element(By.XPATH, ‘//*[@id=“DataTables_Table_0”]/tbody’)

rows = len(tbody.find_elements(By.XPATH, ‘//tr’))

for r in range(1,rows):

path = '//*[@id="DataTables_Table_0"]/tbody/tr[' + str(r) + ']/td[' + str(1) + ']'
hisseAdi = driver.find_element(By.XPATH, path).text

path1 = '//*[@id="DataTables_Table_0"]/tbody/tr[' + str(r) + ']/td[' + str(2) + ']'
hisseFiyat = driver.find_element(By.XPATH, path1).text.replace(".","")
hisseFiyat = hisseFiyat.replace(",",".")


path2 = '//*[@id="DataTables_Table_0"]/tbody/tr[' + str(r) + ']/td[' + str(3) + ']'
degisimYuzde = driver.find_element(By.XPATH, path2).text

path3 = '//*[@id="DataTables_Table_0"]/tbody/tr[' + str(r) + ']/td[' + str(4) + ']'
degisimPara = driver.find_element(By.XPATH, path3).text

path4 = '//*[@id="DataTables_Table_0"]/tbody/tr[' + str(r) + ']/td[' + str(5) + ']'
hacimPara = driver.find_element(By.XPATH, path4).text

path5 = '//*[@id="DataTables_Table_0"]/tbody/tr[' + str(r) + ']/td[' + str(6) + ']'
hacimAdet = driver.find_element(By.XPATH, path5).text

print(hisseAdi, hisseFiyat, degisimYuzde, degisimPara, hacimPara, hacimAdet)

Thread kullanarak fonksiyonunu çağırırsan, fonksiyon arka planda çalışır, sen de arayüzde işini görürsün. Fonksiyonu çağırmayı nerede yapacağına gelelim, yani o sana kalmış, yani program çalışınca fonksiyonunun çalışmasını istiyorsan ona uygun yerleştirmen lazım ( mesela arayüz elemanlarının olduğu fonksiyonun sonuna ), ya da bir buttona bağlayarak, buttona tıkladığında çalışmasını sağlaya bilirsin.

2 Beğeni

Hisse değerinin eklenme zamanını sqlite veritabanında nasıl tutayım? Veri tipi TEXT mi DATETİME mı olsun? Saat aralığına veya tarih aralığına göre veri çekeceğim.

İki veri türününde nasıl kullanıldığına neler yapabildiğine bak hangisi daha kolaya geliyorsa onu kullan bence.

Eğer iki tarih aralığına göre sorgu yapacaksan datetime olarak tut

1 Beğeni

Hocam aşağıdaki sql kodu ile veri çekemiyorum koyu alan çalışmıyor.Timestamp veri tipi DATETİME

Select Sembol, Son, Alis, Satis,Kar, Hacim, Adet, Timestamp from bist where Sembol=‘A1CAP’ and Timestamp between ‘2024-01-05 10:00:00’ and ‘2024-01-07 18:30:00’

Çekemiyorumdan kasdın ne hatamı veriyor? Veriyorsa ne hata veriyor?

1 Beğeni

Hata vermiyor boş dönüyor.
Şu şekilde de denedim.

text = “Select Sembol, Son, Alis, Satis,Kar, Hacim, Adet, Timestamp from bist where Sembol=” + “'” + item + “'” + " and Timestamp>=" + “'” + t1 + “'” + " and Timestamp<=" + “'” + t2 + “'”

Aa 24 diye kaydetmişim pardon.Düzeltip hemen bakıyorum.