🤖Selenium
🗽 Açıklama
Python dili ve Chromedriver baz alınmıştır.
Seleinium Kurulumu
Selenium tarayıcı driver'ı kullanarak çalışmaktadır
- ChromeDriver'ı buradan indirin 
- ChromeDriver'ınızı uygun bir konuma koyun, ileride yol verisi selenium'a aktarılacaktır 
Projenizin içerisinde
utilsdizini açıp içinechromedriveradlı dosyayı atabilirsiniz, ileride bu şekilde değerlendirilecektir
Conda Üzerinden Kurulum
Selenium için özel ortam oluştururak kurulum yapmak daha sağlıklıdır.
conda create -n selenium seleniumKurulum sonrasında ortamı
conda activate seleniumile aktif etmeyi unutmayın.
Chromedriver'ı Yapılandırma
Arayüz Olmadan Chromedriver'ı Kullanma (İsteğe Bağlı)
Selenium aracı chrome üzerinde çeşitli özelliklerle çalışabilmekte (örn: arayüz olmadan, sessizce çalışabilir)
Google colab üzerinde kullanmak istersen bu ayarlar zorunludur, kaynağa buradan erişebilirsin.
options = webdriver.ChromeOptions()options.add_argument('--headless')options.add_argument('--no-sandbox')options.add_argument('--disable-gpu')options.add_argument('--disable-setuid-sandbox')Chromedriver'ı oluşturma
Chromedriver öğesini oluşturmak için alttaki yapıyı kullanmak zorundayız:
Tüm işlemleri oluşturduğumuz
driverobjesi ile yapmaktayız.
from selenium import webdriverdriver = webdriver.Chrome(    executable_path=<chromedriver_yolu>,    options=<ek_ayarlar>)- <chromedriver_yolu>Chromedriver dosyasının yolu- Örn: - "utils/chromedriver"
 
- <ek_ayarlar>Ek yapılandırma ayarları (İsteğe bağlı)- Örn: Yukarıdaki alanda tanımlanan - optionsobjesi
 
Websitesine Erişme
- <URL>Girmek istediğimiz sitenin adresi- Örn: - "www.yemreak.com"
 
Websitesinde Eleman Bulma
Kullanım şekli driver.<eleman_bulma_metodu> şeklindedir.
Kaynak için buraya bakabilirsin.
- find_element_by_id 
- find_element_by_name 
- find_element_by_xpath 
- find_element_by_link_text 
- find_element_by_partial_link_text 
- find_element_by_tag_name 
- find_element_by_class_name 
- find_element_by_css_selector 
Websitesinde Çoklu Eleman Bulma
- find_elements_by_name 
- find_elements_by_xpath 
- find_elements_by_link_text 
- find_elements_by_partial_link_text 
- find_elements_by_tag_name 
- find_elements_by_class_name 
- find_elements_by_css_selector 
Websitesine İçerik Bekleyerek Erişme
Bazen websiteleriindeki içerikler yüklenmeden işlem yapmak istemeyiz. Bunun için WebDriverWait objesini kullanmaktayız.
Temel kullanım:
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.ui import WebDriverWaitWebDriverWait(driver, <bekleme_süresi>).<bekleme_şekli>(    EC.<koşul>(<tanımlayıcı>))- <bekleme_süresi>En uzun bekleme süresi. Eğer bu vakte kadar istenen sağlanmazsa hata fırlatır (TimoutException)- Örn: - 1010 saniye bekler, koşul sağlanmazsa hata fırlatır
 
- <bekleme_şekli>Koşul olana kadar ya da olmayana kadar bekleme- untilKoşul olana kadar bekle
- until_notKoşul olmayana kadar bekle
 
Tüm işlemler
try-exceptbloğu arasında yapılamlıdır, aksi takdirde ufak sorunlarda programınız kapanacaktır.
Eleman Oluşana Kadar Bekleme
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.ui import WebDriverWaittry:    driver.get(config.URL)     WebDriverWait(driver, 10).until(        EC.presence_of_element_located((By.ID, "yemreak"))    )    WebDriverWait(driver, 10).until(        EC.presence_of_element_located((By.CLASS_NAME, "active"))    )    WebDriverWait(driver, 10).until(        EC.presence_of_element_located((By.CSS_SELECTOR, "div.yemreak"))    )finally:    driver.close() Websitesinde Javascript Derleme
Javascript'i driver.execute_script("<script>") metodu ile derleyebilirsin.
- <script>Javascript metni
Dosyadan Javascript Derleme
Dosyada javascript derlemek için dosyayı jsmin modülü ile minify etmen gerekmektedir.
from jsmin import jsmindef minify(file_path):    """ Dosyayı minify etme    """    with open(file_path) as js_file:        return jsmin(js_file.read(), quote_chars="'\"`")driver.execute_script(minify(<dosya_yolu>))- <dosya_yolu>Minify edilecek ve derlenecek dosyanın yolu- Örn: - javascripts/yemreak.js
 
Javascript İşlemleri
Javascript için önemli notlar:
- Javascript objelerinin tanımlanması için - window.ön eki ile yapman gerekmekte, aksi takdirde selenium içerisinde kullanamazsın.- Objeleri kullanırken - window.ön ekini kullanmana gerek yoktur.
 
- Javascript verilerini python koduna almak için scriptine - returnanahtar kelimesi eklemen gerekmektedir.
window.temp = () => {    console.log("Yemreak")}window.deger = 5function calismas() {    console.log("Bu metodu selenium bulamaz")}driver.execute_script(minify("main.js"))) driver.execute_script("temp()") driver.execute_script("calismaz()") driver.execute_script("return deger") Harici Bağlantılar
Last updated
Was this helpful?