­čĄľ
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.
1
conda create -n selenium selenium
Copied!
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.
1
options = webdriver.ChromeOptions()options.add_argument('--headless')options.add_argument('--no-sandbox')options.add_argument('--disable-gpu')options.add_argument('--disable-setuid-sandbox')
Copied!

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.
1
from selenium import webdriverÔÇődriver = webdriver.Chrome( executable_path=<chromedriver_yolu>, options=<ek_ayarlar>)
Copied!
  • <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:
1
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─▒>))
Copied!
  • <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

1
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()
Copied!

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.
1
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>))
Copied!
  • <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.
1
window.temp = () => { console.log("Yemreak")}ÔÇőwindow.deger = 5ÔÇőfunction calismas() { console.log("Bu metodu selenium bulamaz")}
Copied!
1
driver.execute_script(minify("main.js"))) driver.execute_script("temp()") driver.execute_script("calismaz()") driver.execute_script("return deger")
Copied!

Harici Ba─člant─▒lar

Last modified 2yr ago