E-Okula Toplu Veli Telefon Nosu Girme

Kodla Büyü

s_kajmeran

Hiperaktif Üye
Hiperaktif
Mesajlar
3,863
Elimde excelde hazırlanmış veli Telefon numaraları var.
No-adı soyadı-Anne telefon-babaTelefon

Böyle bir listeyi en kolay yoldan e okula nasıl ekleyebilirim. E okuldaki listeler eski düzenlemek istiyoruz.
 
1-şube rehber öğrermenlerine verebilirsiniz, en bilinen yol, resmi olarak da görevleridir.
2-web sayfalarındaki hareketleri hafızaya alıp işlem yapan programlar var, birçok arkadaşımızın buraya eklediği dosyalar vardı. Böyle birşey kullanabilirsiniz.
 
Kullanimini anlatan video veya görsel var mi?
Hocam öncelikle Excel dosyasını okumak için openpyxl kütüphanesini, selenium için selenium kütüphanesini kuralım.
geckodriver dosyasını download edelim. Ben firefox kullandım isteyen chrome da kullanabilir.
İndirdiğim geckodriver.exe yi masaüstüme kopyaladım. Umarım işinizi görür.
Not: Bu arada e-okul sayfası açılınca güvenlik kodunu elle girmeniz gerekiyor. Gerisini kodlarımız hallediyor.
Excel şablonum aşağıdaki gibidir.
e83hsc5.png

Kod:
#Excel dosyasını okumak için kullandığımızı kütüphane
import openpyxl
#Selenium Browser kütüphanesini ekleyelim
from selenium import webdriver
#Zaman işlemleri için "time" kütüphanesini ekleyelim.
import time


#Eleman kontrol fonksiyonu 120 saniye boyunca kontrol eder
def FindElem(Driver: webdriver, XPath: str, Timeout: int = 60):
    while Timeout > 0:
        try:
            return Driver.find_element_by_xpath(XPath)
        except: # if element isn't already loaded or doesn't exist
            time.sleep(1)
            Timeout -= 1
    raise RuntimeError(f"Page loading timeout")


book = openpyxl.load_workbook('dosyalar/telefonlar.xlsx')

#Sayfa adı "Sayfa1" olan excel dosyasını seçelim
sheet1 = book['Sayfa1']
#Toplam satır sayısını bulalım
toplam=sheet1.max_row

#for x in range(2,toplam+1):
#    print('Okul No: '+str(sheet1['A'+str(x)].value)+', Ad Soyad: '+sheet1['B'+str(x)].value+', Anne Cep: '+str(sheet1['C'+str(x)].value)+', Baba Cep: '+str(sheet1['C'+str(x)].value))

browser=webdriver.Firefox(executable_path=r'C:\Users\EFA\Desktop\geckodriver.exe')

browser.get("https://e-okul.meb.gov.tr/")
giris=browser.find_element_by_xpath('//*[@data-target="#LoginModalKurum"]')
giris.click()

time.sleep(5)
user=browser.find_element_by_name('txtKullaniciAd')
sifre=browser.find_element_by_name('txtSifre')
#Kullanıcı adımızı ve şifremizi girelim
user.send_keys('xxxxxxx')
sifre.send_keys('xxxxxxxx')
girisYap=browser.find_element_by_xpath('//*[@id="btnEokulGiris"]')
girisYap.click()

Ogrenci=FindElem(browser,'/html/body/form/nav/div/div/ul[1]/li[3]/a/span[2]')
Ogrenci.click()

sayi=1;
#Şimdi excel dosyasındaki öğrenci no larını aratıp tek tek veli telefonlarının eklenmesini bekleyelim.
for x in range(2,toplam+1):
    okulno=browser.find_element_by_id('OGRMenu1_txtTC')
    okulno.send_keys(str(sheet1['A'+str(x)].value))
    ara=FindElem(browser,'//*[@id="OGRMenu1_btnAra"]')
    ara.click()

    anne=FindElem(browser,'/html/body/form[2]/table/tbody/tr[3]/td[1]/div/div/table/tbody/tr[5]/td/table/tbody/tr[2]/td/table[2]/tbody/tr[6]/td')
    anne.click()
    time.sleep(2)
    #Anne telefon bilgisi girelim
    browser.find_element_by_id('txtTelCep').clear()
    annecep=browser.find_element_by_name('txtTelCep')
    annecep.send_keys(str(sheet1['C'+str(x)].value))
    kaydet=browser.find_element_by_id('IOMToolbarActive1_kaydet_b')
    kaydet.click()
    time.sleep(3)


    baba=FindElem(browser,'/html/body/form[2]/table/tbody/tr[3]/td[1]/div/div/table/tbody/tr[5]/td/table/tbody/tr[2]/td/table[2]/tbody/tr[5]/td')
    baba.click()
    time.sleep(2)
    #Anne telefon bilgisi girelim
    browser.find_element_by_id('txtTelCep').clear()
    babacep=browser.find_element_by_name('txtTelCep')
    babacep.send_keys(str(sheet1['C'+str(x)].value))
    kaydet=browser.find_element_by_id('IOMToolbarActive1_kaydet_b')
    kaydet.click()
    time.sleep(3)

    print(str(sheet1['A'+str(x)].value)+' nolu öğrencinin anne baba telefon bilgisi eklendi.')

    #40 öğrencide bir, sistemi 5 sn dinlendirelim...
    if sayi%40==0:
        print('Sistemi 5 sn dinlendirelim.')
        sayi+=1
        time.sleep(5)
 
Hocam öncelikle Excel dosyasını okumak için openpyxl kütüphanesini, selenium için selenium kütüphanesini kuralım.
geckodriver dosyasını download edelim. Ben firefox kullandım isteyen chrome da kullanabilir.
İndirdiğim geckodriver.exe yi masaüstüme kopyaladım. Umarım işinizi görür.
Not: Bu arada e-okul sayfası açılınca güvenlik kodunu elle girmeniz gerekiyor. Gerisini kodlarımız hallediyor.
Excel şablonum aşağıdaki gibidir.
e83hsc5.png

Kod:
#Excel dosyasını okumak için kullandığımızı kütüphane
import openpyxl
#Selenium Browser kütüphanesini ekleyelim
from selenium import webdriver
#Zaman işlemleri için "time" kütüphanesini ekleyelim.
import time


#Eleman kontrol fonksiyonu 120 saniye boyunca kontrol eder
def FindElem(Driver: webdriver, XPath: str, Timeout: int = 60):
    while Timeout > 0:
        try:
            return Driver.find_element_by_xpath(XPath)
        except: # if element isn't already loaded or doesn't exist
            time.sleep(1)
            Timeout -= 1
    raise RuntimeError(f"Page loading timeout")


book = openpyxl.load_workbook('dosyalar/telefonlar.xlsx')

#Sayfa adı "Sayfa1" olan excel dosyasını seçelim
sheet1 = book['Sayfa1']
#Toplam satır sayısını bulalım
toplam=sheet1.max_row

#for x in range(2,toplam+1):
#    print('Okul No: '+str(sheet1['A'+str(x)].value)+', Ad Soyad: '+sheet1['B'+str(x)].value+', Anne Cep: '+str(sheet1['C'+str(x)].value)+', Baba Cep: '+str(sheet1['C'+str(x)].value))

browser=webdriver.Firefox(executable_path=r'C:\Users\EFA\Desktop\geckodriver.exe')

browser.get("https://e-okul.meb.gov.tr/")
giris=browser.find_element_by_xpath('//*[@data-target="#LoginModalKurum"]')
giris.click()

time.sleep(5)
user=browser.find_element_by_name('txtKullaniciAd')
sifre=browser.find_element_by_name('txtSifre')
#Kullanıcı adımızı ve şifremizi girelim
user.send_keys('xxxxxxx')
sifre.send_keys('xxxxxxxx')
girisYap=browser.find_element_by_xpath('//*[@id="btnEokulGiris"]')
girisYap.click()

Ogrenci=FindElem(browser,'/html/body/form/nav/div/div/ul[1]/li[3]/a/span[2]')
Ogrenci.click()

sayi=1;
#Şimdi excel dosyasındaki öğrenci no larını aratıp tek tek veli telefonlarının eklenmesini bekleyelim.
for x in range(2,toplam+1):
    okulno=browser.find_element_by_id('OGRMenu1_txtTC')
    okulno.send_keys(str(sheet1['A'+str(x)].value))
    ara=FindElem(browser,'//*[@id="OGRMenu1_btnAra"]')
    ara.click()

    anne=FindElem(browser,'/html/body/form[2]/table/tbody/tr[3]/td[1]/div/div/table/tbody/tr[5]/td/table/tbody/tr[2]/td/table[2]/tbody/tr[6]/td')
    anne.click()
    time.sleep(2)
    #Anne telefon bilgisi girelim
    browser.find_element_by_id('txtTelCep').clear()
    annecep=browser.find_element_by_name('txtTelCep')
    annecep.send_keys(str(sheet1['C'+str(x)].value))
    kaydet=browser.find_element_by_id('IOMToolbarActive1_kaydet_b')
    kaydet.click()
    time.sleep(3)


    baba=FindElem(browser,'/html/body/form[2]/table/tbody/tr[3]/td[1]/div/div/table/tbody/tr[5]/td/table/tbody/tr[2]/td/table[2]/tbody/tr[5]/td')
    baba.click()
    time.sleep(2)
    #Anne telefon bilgisi girelim
    browser.find_element_by_id('txtTelCep').clear()
    babacep=browser.find_element_by_name('txtTelCep')
    babacep.send_keys(str(sheet1['C'+str(x)].value))
    kaydet=browser.find_element_by_id('IOMToolbarActive1_kaydet_b')
    kaydet.click()
    time.sleep(3)

    print(str(sheet1['A'+str(x)].value)+' nolu öğrencinin anne baba telefon bilgisi eklendi.')

    #40 öğrencide bir, sistemi 5 sn dinlendirelim...
    if sayi%40==0:
        print('Sistemi 5 sn dinlendirelim.')
        sayi+=1
        time.sleep(5)


tebrikler hocam. çok açıklayıcı bir çözüm olmuş.

eokul sayfasındaki anne telefonun yazıldığı kutuların veya diğer bileşenlerin isimlerini bulmaya yönelik nasıl bir yol izlemek gerekir.

Bu tür programlarda bileşen isimlerini tespit etmek çok önemli oluyor. Sayfanın yapısı dolayısıyla kolayca isim tespit etmek mümkün olmuyor çoğu zaman
 
Öğeyi incele deyip copy ->xpath yapabilirsiniz hocam, id ye göre de yapılabilir, duruma göre kara verilebilirsiniz. Selenium find element ifadesini arattığınızda diğer yöntemleri de bulabilirsiniz.
 
Geri
Üst