Python ile Web Otomasyonu

Celal ORMANLI
Kronnika
Published in
3 min readMar 3, 2020

Merhaba, bu yazımızda Kronnika’da çok sık kullandığımız bir çözüm olan web otomasyonuna değineceğiz. Ardından Python ile basit bir web otomasyonu yapacağız. Haydi başlayalım.

Web Otomasyonu Nedir?

Web otomasyonu, bireylerin her gün yaptıkları tekrarlayıcı, sıkıcı ve katma değeri olmayan işlerin yazılımsal robotlar aracılığıyla yapılmasıdır. Her gün aynı adreslere mail gönderme, bu adreslerden gelen mailleri içerikleri ile beraber alma, web siteleri içinde veri toplama, form doldurma, kullanıcı kaydı gibi akla gelebilecek birçok işlemi bu şekilde robotlara yükleyebiliriz. Böylece bu tür rutin işlerden arta kalan zamanlarda katma değeri daha yüksek işlere zaman ayırabiliriz.

Kronnika’da web otomasyonları geliştirmek için en iyi yöntem ve kütüphaneleri araştırıyor, takip ediyor ve kullanıyoruz. Bir projede kullanılabilecek en verimli ve başarılı yöntem ile ürün geliştirmeye önem veriyoruz. Selenium da projelerimizde kullandığımız yöntemlerden biridir.

Selenium Nedir?

Selenium hali hazırda web siteleri için bir test otomasyonu olup, web siteleri içinde bir insanın yaptığı hareketleri tekrar edecek şekilde işlem yapmamızı sağlar. Aşağıda Selenium ile basit bir otomasyon örneği yapacağız. Bu örneğimizi Python üzerinden ilerleteceğiz. Selenium’un Java, C#, Ruby, JavaScript ve Kotlin gibi birçok dil desteği de bulunmaktadır. Ayrıca Selenium dökümantasyon ve kaynak açısından da çok zengin bir kütüphanedir.

Öncelikle Python projemizi oluşturup Selenium kütüphanemizi kuruyoruz.

pip install selenium

komutu ile kütüphanemizi kurmuş oluyoruz. Ardından gerekli web driver dosyasını indiriyoruz. Burada Chrome driver kullanacağız. İndirme linkine buradan ulaşabilirsiniz. Burada indireceğiniz driver ile bilgisayarınızda kurulu olan Google Chrome’nin aynı versiyona sahip olması gerekmektedir.

Kısa bir kod ile Google üzerinde bir arama yapıp gelen ilk siteye girmeyi deneyeceğiz. Kullanmak için aşağıdaki selenium kütüphanelerini import ediyoruz.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

Daha sonra kullanacağımız browser için driver path’ini koda tanıtıp browser’imizi çağırıyoruz.

driver_path = "chromedriver.exe"
browser = webdriver.Chrome(executable_path=driver_path)

İstediğimiz web sitesini açmak için koda

browser.get("https://www.google.com/")

kısmını ekliyoruz. Böylece kodu çalıştırdığımız zaman Google sitesi açılacak şekilde browser karşımıza gelecektir. Web tarayıcıda arama yapabilmek için

browser.find_element_by_css_selector('.gLFyf.gsfi').send_keys("amazon")
browser.find_element_by_css_selector('.gLFyf.gsfi').send_keys(Keys.ENTER)

satırları yeterli olacaktır. İlk satırda aramak istediklerimizi yazıp ikinci satır ile Enter’a basıyoruz. Burada Google üzerindeki elementlere ulaşabilmek için class bilgilerini kullandık. İşlem yaptığımız web sitesine göre id, class, selector ve xpath gibi birçok seçeneğimiz bulunmaktadır. Arama işlemini başlattıktan sonra belli bir süre web sayfasının yüklenmesini beklememiz gerekmektedir.

WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.LC20lb.DKV0Md')))

Kod satırı ile gelecek olan arama sonucunun tam olarak hazır olmasını bekliyoruz.

Gelen arama sonuçlarından ilkine tıklamak için aşağıdaki kod yeterli olacaktır.

browser.find_elements_by_css_selector('.LC20lb.DKV0Md')[0].click()

Kodda aynı class’a sahip bütün elemanları aratıp ilk elamanın olduğu siteye giriyoruz.

Yukarıdaki örnekte basit bir Google araması yapıp karşımıza gelen ilk siteye girmeyi denedik. Selenium’un çalışma mantığını anlatmak için bu küçük örneği kullandık. Kişi ve kurum ihtiyaçlarımıza göre bu otomasyonu istediğimiz şekilde dallandırıp genişletebiliriz. Kronnika’da asıl amacımız rutin web işlerini bu şekilde otomatize ederek kullanıcıların zamanlarını daha verimli işlere ayırmalarını sağlamaktır. Tekrarlayan işlerin insanları robotlaştırması yerine bu işleri direk robotlara yüklemek maliyet açısından da oldukça faydalı bir işlemdir. Ayrıca işlemleri robotlara yaptırdığımızda insanların yapacağı hata oranlarını neredeyse sıfıra indirmiş oluyoruz.

Development ile ilgili bu yazımızda Kronnika olarak kullandığımız başka bir teknoloji üzerine küçük bir örnek yaptık. İnsanların zamanlarını daha verimli olarak kullanabilmelerini sağlamak için yeni teknolojileri sürekli takip edip öğrenmeye devam edeceğiz. Biz öğrendikçe robotlarımızda öğrenmiş ve daha yetenekli olmuş oluyor. Robotlarımızı paylaştığımız gibi öğrendiklerimizi de paylaşmaktan mutluluk duyuyoruz. Bir sonraki yazımızda görüşmek dileğiyle…

--

--