Python – Selenium Modülü Kullanımı

Selenium Nedir? Python Selenium Kullanımı

Python Selenium Kullanımı

Selenium Kullanımı ve Selenium ile Yapılabilecekler 

Pythoda Selenium modülünü kullanarak botlar geliştirebiliriz. Selenium modülü nedir nasıl kullanılır?

 Selenium  insan eli ile yapılabilecek işlemleri kod satırları kullanarak yapmamıza olanak sağlayan bir modüldür. Bilgisayarımızdaki bir webdriver yardımı ile seleniumu kullanabiliriz.

Öncelikle seleniumu bilgisayarımıza kurmak için komut terminaline şu kodu yazıyoruz(bilgisayarınızda pip kurulu olmalıdır):

pip3 install selenium


Eğer kurulum tamamsa seleniumu projemize dahil etmek için şu kodu yazıyoruz:


from selenium import webdriver


Tabi ki seleniumu kullanmak için webdriver’a ihtiyacımız var.

Şu linklerden indirebiliriz:


Chrome Webdriver : https://chromedriver.storage.googleapis.com/index.html?path=2.35/

Firefox Webdriver : https://github.com/mozilla/geckodriver/releases

Driver’ı indirdikten sonra selenium ile oluşturacağımız projeyle aynı dizine atmamız bize daha kolaylık sağlayacaktır. Eğer aynı dizine yüklenmezse şu şekilde webdriverın yolunu belirtmeliyiz:

driver_yolu = “(buraya webdriverın bulunduğu dizin)”

browser = webdriver.Chrome(executable_path=driver_yolu)

Ben Chrome webdriver’ı kullandığım için “webdriver.Chrome()” yazdım siz kullandığınız drivere göre değiştirebilirsiniz.

Şimdi dilerseniz selenium metotlarına ve selenium ile neyapılabileceğine bakalım:

Verilen Url’e Erişme(get)

Yukarıdaki kodları yazdıktan sonra şu kodları yazarsanız site verdiğiniz linki açacaktır.
Mesela:

browser.get(“https:kod-akademisi.blogspot.com”)

şeklinde yazabiliriz ama biz kodumuzun daha okunaklı olması için şöyle yapabiliriz:

url = “https://kod-akademisi.blogspot.com”

browser.get(url)

Eğer bu şekilde yazarsak kodumuz daha okunaklı olacaktır.

Pythonda hataların önüne geçmek için try ve expect yapısını kullanırız. Yukarıdaki kodlarda bir hata olması durumunda kullanıcıya hatayı bildirmemiz gerekir onun içinde şöyle yaparız.

try:

    url = “https://kod-akademisi.blogspot.com”

    browser.get(url)

expect:

    print(“URL Açılamadı. Lütfen hataya neden olabilecek şeyleri kontrol edin(internet bağlantısı vs.).”)


Bu şekilde kod yazmak hem bize hemde kullanıcıya yarar sağlayacaktır.

Tarayıcıyı Tam Ekran Yapmak(maximize_window)

Web sitemize eriştikten sonra tarayıcıyı tam ekran yapmak için “maximize=_window” metotunu kullanırız. Kullanımı şöyle:

try:

    url = “https://kod-akademisi.blogspot.com”

    browser.get(url)

    browser.maximize_window()

expect:

    print(“URL Açılamadı. Lütfen hataya neden olabilecek şeyleri kontrol edin(internet bağlantısı vs.).”)

Yukarıda üçüncü satırdaki kodları kullanarak tarayıcımızı tam ekran yaptık.

Sayfa Başlığını Almak(title)

Ziyaret ettiğimiz web sayfasının başlığını almak için şu kodları kullanırız:

try:

    url = “https://kod-akademisi.blogspot.com”

    browser.get(url)

    print(“Sayfanın başlığı : ” + browser.title)

expect:

    print(“Sayfanın başlığına erişemedim.”)

Tarayıcıyı Kapatmak(quit)

Quit komutuyla açık olan tarayıcımızı kapatabiliriz.

browser.quit()
yazarsak tarayıcımız kapanacaktır.
Eğer sadece sekmeyi kapatmak istiyorsak 
browser.close()
kodunu yazmamız yeterlidir.

Tarayıcıda Metin Girme İşlemi

Bunun için şu kodlarla beraber Keys’i import ediyoruz.
from selenium.webdriver.commons.keys import Keys
bu kodlar sayesinde tarayıcimızda ENTER,SPACE gibi klavye tuşlarını otomatik olarak çalıştırabileceğiz.

Selenium’da Elementler

Selenium’da elementleri bulmak ve seçmek için birçok yöntem var bunlar :
Xpath Yöntemi : find_element_by_xpath()
ID Yöntemi : find_element_by_id()
Name Yöntemi : find_element_by_name()
Link Text Yöntemi : find_element_by_link_text()
TagName Yöntemi : find_element_by_tag_name()
Class Name Yöntemi : find_element_by_class_name()
CSS Selector Yöntemi : find_element_by_css_selector()
Partial Link Text Yöntemi : find_element_by_partial_link_text()
Eğer çoklu olarak uygulamak istiyorsak “element” yerine “elements” yazmamız yeterlidir örneğin : find_by_elements_by_name()
Şimdi dilerseniz nasıl kullanabileceğimize bakalım 🙂

Xpath Nasıl Alınır Kullanılır?

Webdriverımız bize tarayıcıda “find_element_by_YÖNTEMADI”  yöntemlerink kullanarak veri almamızı sağlar.
Biz şimdi bu yöntemlerden biri olan xpath yöntemini göreceğiz.
Tarayıcıda belli bir bölgenin (arama butonu , giriş yap tuşu vs.) xpath’ini almak için şu adımları sırasıyla uygulamalıyız.
Öncelikle faremizi xpathini almak istediğimiz yerin üstüne getiriyoruz.
Daha sonra sağ tık yapıyoruz.
Ve en altta incele diyoruz.
Açılan elementler sekmesinde xpathini alacağımız metnin kodlarına gelip sağ tık yaptıktan sonra  “Copy” bölümünden “Copy Xpath” seçeneğini tıklatıyoruz.

Xpath Nasıl Kullanılır?

Xpath aldıktan sonra onu kullanmak için şu yöntemleri uyguluyoruz. Ben  instagrama girmek için giriş butonunun xpathini aldım.
Siz istediğiniz sitenin xpathini alabilirsiniz.
Kodları baştan itibaren yazacak olursak:
from selenium import webdriver

from selenium.webdriver.commons.keys import Keys

browser = webdriver.Chrome()

url = “https://instagram.com/”

browser.get(url)
usernameinput = browser_find_element_by_name(“username”)
usernameinput = browser_find_element_by_name(“password”)
//bu iki kodda “name” metodunu kullandık onuda birazdan göreceğiz.

usernameinput.send_keys(“instagrama giriş yapılacak hesabın k.adı”)
passwordinput.send_keys(“instagrana giriş yapılacak hesabın şifresi”)

login = browser.find_element_by_xpath(“//*[@id=’loginForm’]/div/div[3]“)

//Büyük fontla yazılan bizim xpathimiz.

login.click()
Yukarıdaki kodlarda sırasıyla şöyle yaptık:
Öncelikle seleniumu import ettik.
Sonrasında “browser” isimli değişkene driverımızı belirttik.
Daha sonra “url” isimli değişken bir tanımladık ve bu değişkenin içine gitmek istediğimiz sitenin linkini yazdık.
Ve “get” metodu kullanarak tarayıcımızda url değişkeninin içindeki link olan instagram sayfasını açtırdık.
Sonrasında name metodu kullanarak username ve password input yapacağımız kutucuklara eriştik.
Sonrasında send_keys metodu kullanarak bilgilerimizi kutucuklara yazdık.
Daha sonra “login” isimli değişken tanımladık ve değişkene giriş yap butonunun xpathini yazdık.
Xpathini yazdığımızda faremiz oranın üstüne gelmiş varsayılır. Bize kalan tıklatmak bunun içinde
login.click() kod bloğunu yazdık.
Böylece instagrama giriş yapmış olduk.

ID Yöntemi Nedir ? Nasıl Kullanılır?

Örnek olarak bir formumuz var ve bu formun id değerinin “kodakademisi” olduğunu biliyoruz eğer bilmiyorsak şöyle anlayabiliriz.
Formumuzun HTML kodları şu şekilde:
<html>
<body>
<form id=”kodakademisi”>
</form>
</body>
</html>
Gördüğünüz gibi yukarıdaki kodda sadece form tanımladık fakat input kısmı vs. yok.
ID değerini bulmak için <form> etiketleri arasında id=”herhangi bir id” şeklinde kod görmeliyiz. Eğer bu şekilde bir kod yok ise o sayfada ID yöntemini kullanamayız.
Yukardaki kodlarda yazdığımız “kodakademisi” id değerine sahip olan forma erişmek için şu kodları kullanırız : 

browser.find_element_by_id(“kodakademisi”)
şeklinde kod yazarsak form kısmına erişmiş oluruz.

Name Yöntemi Nedir? Nasıl Kullanılır?

Yazdığımız name değeri ile tanımlanmış ilk kod bloğuna erişir. Yine bir formumuz olduğunu varsayalım.

<html>
<body>
<form id=”kodakademisi”>
<input name=”username” type=”text”/>
<input name=”password” type=”text”/>
</form>
</body>
</html>
Yukardaki formumuza bu sefer kullanıcıdan iki değer isteyen input bölümü ekledik.
Birisi username birisi password.
Yukarıdaki username bölümüne erişmek için şu kodları kullanabiliriz :
browser.find_element_by_name(“username”)
şeklinde kod yazarsak name değeri “username” olan input bölümüne erişmiş oluruz.

Link Text Yöntemi Kullanımı?

Bir sayfada belirli bir bağlantıyı butonu vs. bulmak için kullanılır.
Yazdığımız link text ile tanımlanmış ilk kod bloğuna erişmemizi sağlar.
<a> etiketi yardımıyla bulunabilir.
Örneğin : 
<html>
<body>
  <p>18 yaşından büyük müsün?</p>
  <a href=”yes.html”>EVET</a>
  <a href=”no.html”>HAYIR</a>
</body>
</html>
Şeklinde bir sayfamız olduğunu varsayarsak  biz buradaki yes.html bçlümüne erişmek için şu kodları yazabiliriz.:

find_by_element_link_text(“EVET”)
kodumuzu yazarsak link text yöntemini kullanarak yes.html’e ulaşmış oluruz.

Tag Name Yöntemi Nedir? Nasıl Kullanılır?

Şu şekilde bir HTML sayfamız olduğunu varsayarsak :
<html>
<body>
  <h1> Python – Selenium Modülü Kullanımı</h1>
  <h2> Selenium Kullanımı</p>
  <p> Kod Akademisi </p>
</body>
</html>
Başlığa yani<h1> etiketine ulaşmak için şu kodları yazarız:
find_element_by_tag_name(“h1”)
şekinde kod yazarsak “h1” etiketinin olduğu kod bloğuna erişiriz.
Eğer şu şekilde yazsaydık :
find_element_by_tag_name(“p”)
paragrafa yani <p> etiketine erişmiş olurduk.

 Class Name Yöntemi Kullanımı

Şu şekilde bir HTML sayfamız olduğunu düşünürsek : 
<html>
<body>
  <h1>Selenium Nedir</h1>
  <p class=”kodakademisi”>Python – Selenium Kullanımı</p>
</body>
</html>
Yukarıda <p> etiketi içindeki paragrafa erişmek için class name yöntemini kullanabiliriz.
Şu kodları yazmamız yeterli olacaktır.

find_element_by_class_name(“kodakademisi”)
Bu şekilde içerigi “Python – Selenium Kullanımı”
olan paragrafa erişmiş olacağız.

Css Selector Yöntemi ve Kullanımı

Örnek olarak şöyle bir HTML sayfamız var :

<html>
<body>
  <h1>Selenium Nedir</h1>
  <p class=”kodakademisi”>Python – Selenium Kullanımı</p>
</body>
</html>
Bi yukardaki <p> etiketi içindeki paragrafa erişmek için css selector yöntemini kullanabiliriz. Şöyle :
find_element_by_css_selector(“p.kodakademisi”)
Yazarsak içeriği “Python – Selenium Kullanımı” olan kod bloğuna erişmiş oluruz.

Time Modülü Nedir ? Nasıl Kullanılır?

Bazı web sayfalarının açılması zaman alabilir bu nedenle projemizde birkaç saniyelik aralar vermemiz gerekir , programın sağlığı ve kullanıcı deneyimi için time modülünü kullanmamızın faydası olacaktır
Time modülünu projemize dahil etmek için kodlarımızın en başına gelip şunu yazıyoruz :

from time import sleep
Time modülünu import ettik. Kullanımı ise şöyle:
Mesela bir sayfaya gittik sayfanın açılması için 10saniye beklemek istiyoruz bunun için şu kodları yazabiliriz.

browser.get(“https://kod-akademisi.blogspot.com”)
sleep(10)
yazarsak 10 saniye duraklamış oluruz.

Örnek Bir İnstagram Botu

Şimdi sıra öğrendiklerimizi uygulamaya geldi bunun için instagrama giriş yapıp kullanıcı profiline gidip fotoğraf beğenen bir bot yapmak istedim. 
from selenium import webdriver # seleniumu import ediyoruz
from time import sleep # time modülünü import ediyoruz

browser = webdriver.Chrome() # webdriverımızı tanımlıyoruz benimki aynı klasörde olduğu için ek bir yol belirtmeme gerek yok

url = “https://instagram.com/” # gitmek istediğimiz web sitesinin linkini yazıyoruz

browser.get(url) # urlimizi açıyoruz
sleep(2) # 2saniye bekliyoruz

usernameinput = browser.find_element_by_name(“username”)
usernameinput.send_keys(“Sizin İnstagram Usernameniz”)

passwordinput = browser.find_element_by_name(“password”)
passwordinput.send_keys(“Sizin İnstagram Şifreniz”)


login = browser.find_element_by_xpath(“//*[@id=’loginForm’]/div/div[3]/button/div”) # xpath yöntemiyle Giriş Yap tuşuna erişiyoruz
login.click() # Giriş Yap butonuna tıklıyoruz
sleep(3) # 3sn. bekliyoruz

hedef = str(input(“Hedef Kullanıcı Adını Giriniz : “)) # kullanıcıdan hedef k.adını istiyoruz
browser.get(url + hedef) # hedef kişinin sayfasına gidiyoruz

postaç = browser.find_element_by_class_name(“_9Ah0H”) # class yöntemi ile ilk postu açıyoruz
postaç.click()
sleep(3)

postbeğen = browser.find_element_by_xpath(“/html/body/div[5]/div[2]/div/article/div[3]/section[1]/span[1]/button”) #açtığımız postu beğeniyoruz
postbeğen.click()
sleep(3)

print(“SON POST BEĞENİLDİ”)

Yukarıdaki kodlarda try ve expect kullanmadık çünkü basit bir program bu programın geliştirilmiş hali ilerleyen zamanlarda blogumuzda yer alacak. Yayınlanınca link burayada eklenecek.
Ek olarak yazdığımız programlarda fonksiyonları kullanmamız bize fayda sağlayacaktır. Kafanız karışmasin diye zorlamak istemedim.
Python Selenium Kullanımı yazımız buraya kadardı diğer yazılara bakmayı unutmayın 🙂
Selenium modülü  ile aklımıza gelebilecek her şey  yapılabilir. 
Python Selenium Kullanımı , Python Selenium modülü kullanımı sorularına cevap bulamadıysanız yorum bırakın. 
Etiketler : python selenium kullanımı , python selenium modülü kullanımı , python kod akademisi , python selenium instagram bot , python selenium elementleri

Yorum yapın