Görüyorum ki adblocker kullanıyorsun
"Enter"a basıp içeriğe geçin

Pythonanywhere üzerinde selenium kullanımı

Python üzerinde veri kazıma yapmak isterseniz eğer muhakkak ismini duyup araştırmışsınızdır selenium modülünü. Selenium modülü ile kullanıcı taklit edilecek web sitesi üzerinde testler oluşturabilir ya da veri kazıma işlemleri yapabilirsiniz. Peki bu işlemleri herhangi bir ekrana sahip olmayan uzak sunucu üzerinde yapmak istersek nasıl gerçekleştireceğiz ? Hadi başlayalım.



Python selenium modülü nedir ?

Öncelikle selenium modülünü kısaca tanıyalım.

Python selenium modülü ile bir web sitesi üzerinde testler oluşturabiliriz, nedir bu testler? örnek vermek gerekirse, bir site oluşturduğunuz ve butonları kontrol etmek istiyorsunuz. Bunun için selenium ile bir betik oluşturarak tıpkı gerçek bir insan gibi buton davranışlarını ve işlevlerini test edebilirsiniz. Bunun dışında web sitelerinden veri kazıyabilirsiniz.

Diyelim ki bir haber sitesinden güncel haberler kısmını almak istiyorsunuz. Bunun için python selenium modülünü kullanarak, bir tarayıcı başlatabilir, tıpkı sizin yaptığını gibi belli linklere tıklayarak o sayfa üzerinde ki belli kısımları çekebilirsiniz.

Örnek olması açısından python selenium ile yaptığım twittera giriş yaparak tweet atan şu programı inceleyebilirsiniz.


Bunları yapmak için bir tarayıcıya ihtiyacımız olacak. Ondan da önce bir ekrana. Kullandığınız bilgisayar üzerinde bu işlemi çok rahat bir şekilde yapabilirsiniz fakat yazdığınız kodu uzak bir sunucuda (örnek olarak pythonanywhere) çalıştırmak isterseniz eğer, bir ekran olmadığı için ve kuulu bir tarayıcı olmadığı için hata ile karşılaşırsınız. Python ile ilgili arama yaparken uzak sunucuda selenium ile nasıl çalışabileceğime dair bilgiler buldum. Benim gibi bu şekilde arama yapan kişilere faydalı olması amacıyla bu yazıyı yazıyorum. Bu yazıda örnek olması için pythonanywhere kullandım, eğer sizin kullandığınız sunucu üzerinde selenium desteği varsa, aynı işlemleri yaparak başka sunucular üzerinde de bu işlemleri rahat bir şekilde uygulayabilirsiniz. Bunu öğrenmek için sunucu hizmeti satın aldığınız yerle iletişim kurabilirsiniz.

Pythonanywhere nedir ?

pythonanywhere, python dosyalarını çalıştırmayı sağlayan bir bulut hizmetidir. Web siteleri üzerinden python consolu oluşturabilir, python dosyaları gönderebilir, sağladıkları editör sayesinde çevrimiçi olarak python kodlaması yapabilirsiniz. Daha fazla bilgiyi websitelerinden alabilrisiniz.

Ücretisz başlangıç paketi ile küçük ölçekli uygulamalarınızı çalıştırabilirsiniz. Daha ağır ve yüksek kaynak gerektiren uygulamalarınız için ücretli paketlerden birini seçerek kullanabilirsiniz. Daha detaylı bilgi için tıklayın.


Pythonanywhere üzerinde selenium modülünü kullanmak

Gelelim asıl konumuza, bir pythonanywhere hesabı açtığınızı varsayarak anlatmaya devam ediyorum. Resimlerle konuyu destekleyeceğim.

Selenium modülünü kullanmak için bir ekrana sahip olmamız gerektiğini söylemiştim. Sunucu üzerinde bunu kullanmak için sanal bir ekran oluşturma modülünü kullanmamız gerekiyor(pyVirtualDisplay). Bu modül sayesinde sanal olarak bir ekran oluşturmuş oluyoruz. Bu sayede selenium kullanmak mümkün oluyor.

Şu adreste pythonanywhere işin naısl olacağını anlatmış. Bu kaynak üzerinden devam edersek verdikleri örneği bilgisayarımda bir .py dosyası haline getirip pythonanywhere üzerinde “files” kısmına gelerek dosyayı gönderiyorum.

Verdiğim linkte örnek olması için yazılmış python kodları şu şekilde:

from pyvirtualdisplay import Display
from selenium import webdriver

with Display():
    browser = webdriver.Firefox()

    try:
        browser.get('http://www.google.com')
        print(browser.title)
        browser.save_screenshot("screenshot.png") # bu kısmı ben ekledim, bu kod selenium modülünün bir fonksiyonu. Bu kod o anda ki ekranın resmini kayıt ediyor.

    finally:
        browser.quit()
Pythonanywhere dosya ekranı
Pythonanywhere dosya ekranı

Kendi bilgisayarınız üzerinde dosya oluşturup göndermekle uğraşmadan, pythonanywhere üzerinde dosya oluşturup, bu dosyanın içine verdiğim linkteki kodları da yazabilrsiniz.

Dosyayı oluşturduk, kodumuzu yazdık ya da .py dosyasını sunucuya gönderdik. Şimdi pythonanywhere üzerinden bir konsol açalım ve gönderdiğimiz dosyayı çalıştıralım.

Pythonanywhere üzerinde python çalıştırma
Pythonanywhere üzerinde python çalıştırma

Konsol üzerinde dosyayı gönderdiğimiz dizine giderek python kodunu çalıştırdığımızda biraz bekliyoruz, arkaplanda bir firefox tarayıcısı açılıyor, google anasayfasına gidiyor ve tarayıcının başlık ksımını alıp ekran resmini kayıt ediyor, sonrasında tarayıcıyı kapatıyor.

Verilen kod içinde ekran kayıt etmesi için bir satır eklemiştim. Şimdi pythonanywhere üzerinde dosyaları görüntülediğimiz “files” kısmına giderek python dosyasını attığımız klasöre bir bakalım:

pythonanywhere dosya sistemi
pythonanywhere dosya sistemi

Dosya yönetimi ekranında, python dosyasının altında “screnshot” adında bir resim oluşturulmuş. Şimdi bu resmi indirip bir bakalım:

pythonanywhere üzerinde selenium kullanımı
pythonanywhere üzerinde selenium kullanımı

Gördüğünüz gibi selenium modülü çalıştı firefox tarayıcısı üzerinde google anasayfasına gitti ve tarayıcı başlığını konsol ekranında yazdı, bunun yanında eklediğimiz kod sayesinde o anda ki ekranın resmini kayıt etti. Diğer ayrıntılara verdiğim link üzerinden ulaşabilirsiniz.

Dezavantajları

  • Küçük projelerde bu şekilde kullanarak işinizi halledebilirsiniz fakat büyük projelerde bu şekilde bir kullanım işinizi görmeyebilir.
  • Pythonanywhere üzerinde korumalı alan gerekçesi ile sadece firefox tarayıcısının 17. sürümü çalıştırabiliyor. Chrome, PhantomJS  ve diğerleri desteklenmiyor.
  • Ücretsiz kullanıcılar için belli web siteleri üzerinde veri kazıma işlemlerine izin veriliyor. Diğer web siteleri için ücretli bir pakete yükseltme gerekiyor. İzin verilen web siteleri için tıklayınız.
  • Selenium ile web kazıma işlemleri biraz yavaş olmakta, bunu hızlandırmak için iş kuyrukları oluşturmak gerekiyor. Bununla ilgili bilgilerde verdiğim bağlantıda mevcut.

İşin özü, küçük çaplı projelerinizi bu şekilde sunucuya göndererek halledebilirsiniz. Bir sonraki yazıda görüşmek dileğiyle, bol kodlu günler

İlk Yorumu Siz Yapın

    Bir Cevap Yazın