­čĄľ Selenium

­čŚŻ A├ž─▒klama

  • Selenium'un python dok├╝mantasyonu i├žin buraya bakabilirsin

    • ─░tici bir dok├╝mantasyon ar─▒yorsan buraya bakabilirsin ­čśĺ

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 utils dizini a├ž─▒p i├žine chromedriver adl─▒ 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 selenium

Kurulum sonras─▒nda ortam─▒ conda activate selenium ile 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 driver objesi ile yapmaktay─▒z.

from selenium import webdriverÔÇődriver = 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 options objesi

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 WebDriverWaitÔÇőWebDriverWait(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: 10 10 saniye bekler, ko┼čul sa─članmazsa hata f─▒rlat─▒r

  • <bekleme_┼čekli> Ko┼čul olana kadar ya da olmayana kadar bekleme

    • until Ko┼čul olana kadar bekle

    • until_not Ko┼čul olmayana kadar bekle

  • <ko┼čul> Selenium'a ├Âzg├╝ bekleme ko┼čulu

    • Selenium ko┼čullar─▒n─▒n listesine buradan eri┼čebilirsin.

    • Selenium bekleme ko┼čullar─▒n─▒n detay─▒ i├žin buraya bakabilirsin.

    • ├ľrn: presence_of_element_located Eleman olu┼čana kadar bekleme

T├╝m i┼člemler try - except blo─č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 WebDriverWaitÔÇőtry: 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 jsminÔÇődef 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 return anahtar kelimesi eklemen gerekmektedir.

window.temp = () => { console.log("Yemreak")}ÔÇőwindow.deger = 5ÔÇőfunction 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