Selenium İnstagram Bot Yapımı

Sosyal medyada paylaşın

Selenium İnstagram Bot Yapımı

Bu yazıda Selenium kütüphanesini kullanarak ufak çapta bir bot yapmaya çalışacağız. Daha fazla bilgi için dökümantasyon sitesini ziyaret edebilirsiniz.

Bot Özellikleri:

  • Takip etme
  • Takipten çıkma
  • Profil analizi
  • Hesap gizliliği tespiti
  • Takip edilenleri, takipçileri ve takip etmeyenleri listeleme

Selenium Kurulumu

pip install selenium

Veya benim gibi PyCharm kullanıyorsanız File>Settings>Project>Pyhton Interpreter bu konumdan “+” butonuna tıklayıp kütüphane ismini yazıp kurabilirsiniz. Kütüphaneyi kurduktan sonra ek olarak tarayıcı driver’i kurmamız gerekiyor. Bu driver tarayıcı işlemleri için gerekiyor. Aşağıda bazı tarayıcılar için driver indirme linkleri verilmiştir. Hangi tarayıcıdan işlem yapmak istiyorsanız linke tıklayıp driver’i indirin.

Chrome:https://sites.google.com/chromium.org/driver/
Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox:https://github.com/mozilla/geckodriver/releases
Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Driver’in yolunu belirtmek için iki seçeneğimiz var. İlk olarak indirdiğiniz driver dosyasını kendi yöntemim olan Ortam Değişkenlerindeki Path yoluna atmak. İkinci olarak ise kodlarda driver’in yolunu belirtmek. Ben ilk yöntemi kullanıyorum eğer ikinci yöntemi kullanmak isterseniz aşağıya kod bloğu bırakıyorum.

self.tarayici = webdriver.Chrome(executable_path="C:\Users\angel\OneDrive\Masaüstü\Pyhton\chromedriver.exe")

Kütüphanelerin Eklenmesi

from selenium import webdriver #Selenium web driver kütüphanesi
import time #Bazen sayfa geç yüklenebiliyor işlemi yapmadan önce şu kadar bekle diye komutları bu kütüphane sayesinde verebiliyoruz

Class Oluşturup Kodlamaya Başlıyoruz

class Instagram:
    def __init__(self, url="https://www.instagram.com/", kullaniciAdi="beyhude", sifre="beyhude"):
        self.tarayici = webdriver.Chrome()
        self.url = url
        self.kullaniciAdi = kullaniciAdi
        self.sifre = sifre
        self.girisYapilmismi = False
        self.tumTakipciler = []
        self.tumTakipEdilenler = []

“def __init__ (self, a,b,c)” metodu python ile OOP kodu yazarken bir nesne hafızada oluşturulduğu zaman ilk çalıştırılacak kod oluyor. Yani bizim kurucu(constructor) metodumuzdur. OOP’de Bütün sınıflar __init__ metoduna sahiptir. Class’a özgü değişkenler atamamıza yardımcı olur. Ve bazı değişkenleri kullanıcıya sormadan buradan direkt alabiliriz.

Tarayıcıyıcı Açma ve Kapatma


    def TarayiciAc(self):
        try:
            self.tarayici.get(self.url)
            self.tarayici.implicitly_wait(5)
            print("Tarayıcı başarıyla açıldı")
        except:
            print("Tarayıcı açılırken HATA ile karşılaşıldı")

    def TarayiciKapat(self):
        try:
            self.tarayici.implicitly_wait(2)
            self.tarayici.close()
            print("Tarayıcı başarıyla kapatıldı")
        except:
            print("Tarayıcı kapatılırken HATA ile karşılaşıldı")

Öncelikle neden try except komutlarını kullandığımı açıklamak istiyorum. Try’ın içindeyken bir hata yaşandığı zaman break verip çökmesi yerine bir mesaj gösterip bilgilendirmek için yazılan komutlar bunlar.

“self.tarayici.get(self.url)” tarayıcımızı __init__ fonksiyonunda tanımlamıştık. Şimdi ise .get(“siteadresi”) ile tarayıcı açılır ve girilen adrese gidilir.

” self.tarayici.implicitly_wait(5) ” Bazen çeşitli etkenlerden dolayı sayfaların geç açılma durumu olabiliyor. Buna önlem almak için örneğin 5 saniye bekle diyorum. Hatta bu kodun bir muadili ise “time.sleep(saniye)”dir. İkiside aynı kapıya çıkar.

Instagram Hesabına Giriş Yapma

    def GirisYap(self):
        try:
            self.tarayici.get(self.url)
            self.tarayici.implicitly_wait(5)
            kullaniciAdi = self.tarayici.find_element_by_xpath("//*[@id='loginForm']/div/div[1]/div/label/input")
            sifre = self.tarayici.find_element_by_xpath("//*[@id='loginForm']/div/div[2]/div/label/input")
            girisButon = self.tarayici.find_element_by_xpath(
                "/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[3]/button/div")

            kullaniciAdi.send_keys(self.kullaniciAdi)
            sifre.send_keys(self.sifre)
            girisButon.click()
            self.girisYapilmismi = True

            time.sleep(4)

            sifreKaydedilsinmiButon = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/div/div/div/button")
            if (sifreKaydedilsinmiButon.text == "Şimdi Değil"):
                sifreKaydedilsinmiButon.click()

            bildirimButon = self.tarayici.find_element_by_xpath("/html/body/div[5]/div/div/div/div[3]/button[2]")
            if (bildirimButon.text == "Şimdi Değil"):
                bildirimButon.click()

            self.tarayici.get("https://www.instagram.com/deletedx112/")
            
            print("İnstangram'a başarıyla giriş yapıldı")

        except:
            print("İnstangram'a giriş yapılırken HATA ile karşılaşıldı")

“GirisYap(self,)” isminde fonksiyon tanımladık. self parametresi ile __init__ içinde tanımladığımız değişkenlere ulaşabiliyoruz. İnstagram anasayfasına giriş yaptık, sonrasında kullanıcı adı ve şifre girerek hesabımıza girişi sağlayacağız. kullaniciAdi ve sifre adlı iki değişken oluşturduk. Bunlar bizim bilgilerimizi girdiğimiz inputları temsil ediyor. Buradaki önemli nokta bu butonları nasıl seçeceğiz ? Yani ya sayfada başka bir input daha varsa ?

İnstagram giriş sayfasında f12 tuşuna basıp istediğiniz inputun üzerine gelip sağ tıklayın ve “incele” diyin. Açılan pencerede mavi renkte imleç içine alınmış kod bloğu göreceksiniz. Ona sağ tıklayıp “copy” dedikten sonra hangisini kullanmak istiyorsanız onu seçin. Ben çoğunlukta “xpath” kullandım ve kodlarım ona göre düzenlendi. Örneğin element ismine göre seçecekseniz find_element_by_xpath( “”) yerine find_element_by_name(“”) kullanmalısınız.

Kullanıcı adı ve şifre inputları bu şekilde bulduktan sonra “send_keys(self.sifre)” diyerek __init__’de tanımladığımız bilgilerimizi bu inputlara yazdırıyoruz. Ek olarak aynı şekilde giriş yap butonunu bulup ona tıklamamız gerekiyor. “girisButon.click()” diyerek butona tıklatıyoruz ve hesabımıza giriş yapıyoruz. Son olarak __init__’de giriş yapılıp yapılmama durumu için tanımlağımız Bool değerini True yapıyoruz. İleride bu bool değerini kullanacağız.

Takip Et ve Takipten Çıkma

    def TakipEt(self, kullaniciAdiTakip):
        if self.girisYapilmismi == True:
            try:
                self.tarayici.get(self.url + kullaniciAdiTakip)
                self.tarayici.implicitly_wait(4)
                takipEtButon = self.tarayici.find_element_by_xpath(
                    "//*[@id='react-root']/section/main/div/header/section/div[1]/div[1]/div/div/div/span/span[1]/button")
                if (takipEtButon.text == "Takip Et"):
                    takipEtButon.click()
                    print(kullaniciAdiTakip + "adlı kullanıcı takip edildi")
                else:
                    print(kullaniciAdiTakip + "adlı kullanıcı zaten takip ediliyor")
            except:
                print(kullaniciAdiTakip + "adlı kullanıcı takip edilirken hata oluştu")
        else:
            print("Lütfen birini takip etmek için önce giriş yapın!")

    def TakiptenCik(self, kullaniciAdiTakipCik):
        if self.girisYapilmismi == True:
            try:
                self.tarayici.get(self.url + kullaniciAdiTakipCik)
                self.tarayici.implicitly_wait(4)
                takiptenCikButon = self.tarayici.find_element_by_xpath(
                    "//*[@id='react-root']/section/main/div/header/section/div[1]/div[1]/div/div[2]/div/span/span[1]/button")
                takiptenCikButon.click()
                self.tarayici.implicitly_wait(3)
                takiptenCikButon2 = self.tarayici.find_element_by_xpath(
                    "/html/body/div[6]/div/div/div/div[3]/button[1]")

                if takiptenCikButon2.text == "Takibi Bırak":
                    takiptenCikButon2.click()
                    self.tarayici.implicitly_wait(10)
                    print(kullaniciAdiTakipCik + " adlı kullancıı takipten çıkıldı.")
            except:
                print("Takipten çıkma işlemi sırasında hata ile karşılaşıldı.")
        else:
            print("Lütfen birini takipten çıkmak için önce bir hesap ile giriş yapın!")

Bu kısımda öncelikle herhangi bir hataya karşı giriş yapılmış mı diye kontrol ettiriyoruz. Sorun yoksa try’ın içine girip işlemleri gerçekleştiriyoruz. “TakipEt” fonksiyonunu çağırırken ek olarak hangi kullanıcıyı takip edeceğimizi(kullanıcı ismini) belirten bir string alıyoruz.

Takip et kısmı için takip et butonunun xpath konumunu alıp butonun yazısı “Takip Et” ise takip et butonuna tıklıyoruz. Eğer değilse zaten takip ediliyor yazdırıp işlemi bitiriyoruz.

Takipten çık kısmı içinde takipten çıkma butonuna tıklatıp açılan pencerede ikinci takipten çık butonuna tıklatıp işlemi bitiriyoruz.

Profil Analizi

    def Analiz(self, kullaniciAdi):
        try:
            self.tarayici.get(self.url + kullaniciAdi)
            self.tarayici.implicitly_wait(3)
            gonderiSayisi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[1]/span/span")

            takipciSayisi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[2]/a/span")

            takipSayisi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[3]/a/span")
            isim = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/div[2]/h1")
            bio = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/div[2]/span")
            url = "https://www.instagram.com/" + kullaniciAdi

            print("Gönderi Sayısı: {} Takipçi Sayısı:{} Takip Sayısı: {} İsim {} Bio: {} Url{} ".format(
                gonderiSayisi.text, takipciSayisi.text,
                takipSayisi.text, isim.text, bio.text, url))


        except:
            print("İlgili kullanıcının profil analizi yapılırken hata ile karşılaşıldı")

Herhangi bir kullanıcının profil analizini yapmak için bu fonksiyonu kullanıyoruz. Yine tarayıcıyı açıp girilen kullanıcının profili gidip gönderi sayısı, takipçi sayısı gibi verilerini xpath yöntemi ile bulup print ile ekrana yazdırıyoruz. Ekrana yazdırırken “değişken.text” dememizin sebebi ise o elementin text özelliğine erişmek. Örneğin direkt print(bio) derseniz size selenium.webdriver.remote.webelement.WebElement (session=’43752586217ba48b22e71aaafb86e762’…” şeklinde bir çıktı verecektir.

Hesap Gizlimi

    def HesapGizlimi(self, kullaniciAdi):
        try:
            self.tarayici.get(self.url + kullaniciAdi)
            self.tarayici.implicitly_wait(5)
            hesapGizlimi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/div/article/div[1]/div/h2")
            if hesapGizlimi.text == "Bu Hesap Gizli":
                print("Bu hesap gizli")
                return True

            else:
                print("Bu hesap gizli değil")
                return False

        except:
            print("Hesap gizlimi diye kontrol edilirken bir hata ile karşılaşıldı")

Burada yine aynı işlemleri tekrarlayıp hesabın gizli olup olmadığını belirten text’e erişip içeriğine göre işlem yaptırıyoruz. Eğer hesap gizli ise true, gizli değil ise false döndürüyoruz. Bunu return ettiğimiz değeri sonraki fonksiyonlarda kullanacağız.

Takip Edilenler

    def TakipEdilenler(self,kullaniciAdi):
        if self.HesapGizlimi(kullaniciAdi):
            print("Bu hesap gizli olduğu için takip ettiği kişileri görüntüleyemiyorum.")
        else:
            print("____----TAKİP EDİLENLER----____")
            self.tarayici.get(self.url + "deletedx112")

            followers_panel = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[3]/a")
            followers_panel.click()
            time.sleep(2)
            jsKomut = """
                                   sayfa=document.querySelector(".isgrP");
                                   sayfa.scrollTo(0,sayfa.scrollHeight);
                                   var sayfaSonu=sayfa.scrollHeight;
                                   return sayfaSonu;
                                   """
            sayfaSonu = self.tarayici.execute_script(jsKomut)

            while True:
                son = sayfaSonu
                time.sleep(2)
                sayfaSonu = self.tarayici.execute_script(jsKomut)
                if son == sayfaSonu:
                    break
            takipler = self.tarayici.find_elements_by_css_selector(".FPmhX.notranslate._0imsa")

            textfile = open("takipedilenler", "w")
            sayac = 0

            for t in takipler:
                sayac += 1
                self.tumTakipEdilenler.append(t.text)
                print("{} -->\n".format(sayac) + t.text)
                textfile.write("\n" + t.text)
            textfile.write("\n {} takip edilen kullanıcı var".format(sayac))

            time.sleep(2)
            kapatmaButonu =        self.tarayici.find_element_by_xpath("/html/body/div[6]/div/div/div[1]/div/div[2]/button")
            kapatmaButonu.click()

HesapGizlimi adlı fonksiyondan bir değer almıştık. Eğer bu değer false dönerse işlemlere başlıyoruz. Kullanıcının takip ettiklerini gösteren panele ulaşıp onu açıyoruz. Sonrasında açılan paneldeki scrool özelliğini kullanabilmek için ufak bi JavaScript kodu yazıp bunu .execute_script(jsKomut) kodu ile tarayıcı konsolunda (f12>Console) çalıştırıyoruz. While döngüsü kullanarak sayfa sonuna gelene kadar içeriyi çalıştırıyoruz. İçeride iki saniyede bir scrool down yapıyoruz ki alttan yeni yüklenen kullanıcıları okumakta sorun yaşamayalım. Bu açılan takip edilenler panelindeki her kişinin isminin class’ı aynı. Bu değişkene class’ın yolunu buldurup atıyoruz ve for döngüsü ile scrool yaptıkça yukarıdan aşağıya doğru her ismi class yolundan bulup bir listeye atıyoruz ve ek olarak ben dosyaya yazdırıyorum. En son işimiz bitince paneli kapattırıyoruz. Takip edilenleri sonradan içeriğini kullanmak için __init__’de tanımladığımız tumTakipEdilenler adlı listeye atıyorum.

Takip Edenler

def TakipEdenler(self,kullaniciAdi):

if self.HesapGizlimi(kullaniciAdi):
print("Bu hesap gizli olduğu için takip ettiği kişileri görüntüleyemiyorum.")
else:
print("____----TAKİP EDENLER----____")
self.tarayici.get(self.url + kullaniciAdi)

followers_panel = self.tarayici.find_element_by_xpath(
"//*[@id='react-root']/section/main/div/header/section/ul/li[2]/a")
followers_panel.click()
time.sleep(2)
jsKomut = """
sayfa=document.querySelector(".isgrP");
sayfa.scrollTo(0,sayfa.scrollHeight);
var sayfaSonu=sayfa.scrollHeight;
return sayfaSonu;
"""
sayfaSonu = self.tarayici.execute_script(jsKomut)

while True:
son = sayfaSonu
time.sleep(2)
sayfaSonu = self.tarayici.execute_script(jsKomut)
if son == sayfaSonu:
break
takipciler = self.tarayici.find_elements_by_css_selector(".FPmhX.notranslate._0imsa")

textfile = open("takipciler", "w")
sayac = 0

for t in takipciler:
sayac += 1
self.tumTakipciler.append(t.text)
print("{} -->\n".format(sayac) + t.text)
textfile.write("\n" + t.text)
textfile.write("\n {} takipciniz var".format(sayac))
time.sleep(2)

kapatmaButonu = self.tarayici.find_element_by_xpath("/html/body/div[6]/div/div/div[1]/div/div[2]/button")
kapatmaButonu.click()

Burada da takip edilenler kısmındaki aynı işlemleri tekrarlıyoruz. Takip edenleri sonradan içeriğini kullanmak için __init__’de tanımladığımız tumTakipciler adlı listeye atıyorum.

Takip Etmeyenler

    def TakipEtmeyenler(self):
        print("____----TAKİP ETMEYENLER----____")
        try:
            textfile = open("takipetmeyenler", "w")
            print("Takip Etmeyenler")
            if len(self.tumTakipEdilenler) != 0 and len(self.tumTakipciler) != 0:
                for takipEdilenler in self.tumTakipEdilenler:
                    if takipEdilenler not in self.tumTakipciler:
                        print(takipEdilenler)
                        textfile.write("\n" + takipEdilenler)


        except:
            print("yeter da ")

Burası en kolay kısım. Yukarıda takip edenleri ve takip ettiklerimizi listelere atamıştık. Şimdi takip ettiğimiz kişiler takipçilerimizde var mı diye bakıyoruz. Yoksa o kişi takip etmiyor diye yazdırıyoruz.

Kodların Tümü

from selenium import webdriver
import time


class Instagram:
    def __init__(self, url="https://www.instagram.com/", kullaniciAdi="deletedx112", sifre="abc123abcSs"):
        self.tarayici = webdriver.Chrome()
        self.url = url
        self.kullaniciAdi = kullaniciAdi
        self.sifre = sifre
        self.girisYapilmismi = False
        self.tumTakipciler = []
        self.tumTakipEdilenler = []

    def TarayiciAc(self):
        try:
            self.tarayici.get(self.url)
            self.tarayici.implicitly_wait(5)
            print("Tarayıcı başarıyla açıldı")
        except:
            print("Tarayıcı açılırken HATA ile karşılaşıldı")

    def TarayiciKapat(self):
        try:
            self.tarayici.implicitly_wait(2)
            self.tarayici.close()
            print("Tarayıcı başarıyla kapatıldı")
        except:
            print("Tarayıcı kapatılırken HATA ile karşılaşıldı")

    def GirisYap(self):
        try:
            self.tarayici.get(self.url)
            self.tarayici.implicitly_wait(5)
            kullaniciAdi = self.tarayici.find_element_by_xpath("//*[@id='loginForm']/div/div[1]/div/label/input")
            sifre = self.tarayici.find_element_by_xpath("//*[@id='loginForm']/div/div[2]/div/label/input")
            girisButon = self.tarayici.find_element_by_xpath(
                "/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[3]/button/div")

            kullaniciAdi.send_keys(self.kullaniciAdi)
            sifre.send_keys(self.sifre)
            girisButon.click()
            time.sleep(4)

            sifreKaydedilsinmiButon = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/div/div/div/button")
            if (sifreKaydedilsinmiButon.text == "Şimdi Değil"):
                sifreKaydedilsinmiButon.click()

            bildirimButon = self.tarayici.find_element_by_xpath("/html/body/div[5]/div/div/div/div[3]/button[2]")
            if (bildirimButon.text == "Şimdi Değil"):
                bildirimButon.click()

            self.tarayici.get("https://www.instagram.com/deletedx112/")
            self.girisYapilmismi = True
            print("İnstangram'a başarıyla giriş yapıldı")

        except:
            print("İnstangram'a giriş yapılırken HATA ile karşılaşıldı")

    def TakipEt(self, kullaniciAdiTakip):
        if self.girisYapilmismi == True:
            try:
                self.tarayici.get(self.url + kullaniciAdiTakip)
                self.tarayici.implicitly_wait(4)
                takipEtButon = self.tarayici.find_element_by_xpath(
                    "//*[@id='react-root']/section/main/div/header/section/div[1]/div[1]/div/div/div/span/span[1]/button")
                if (takipEtButon.text == "Takip Et"):
                    takipEtButon.click()
                    print(kullaniciAdiTakip + "adlı kullanıcı takip edildi")
                else:
                    print(kullaniciAdiTakip + "adlı kullanıcı zaten takip ediliyor")
            except:
                print(kullaniciAdiTakip + "adlı kullanıcı takip edilirken hata oluştu")
        else:
            print("Lütfen birini takip etmek için önce giriş yapın!")

    def TakiptenCik(self, kullaniciAdiTakipCik):
        if self.girisYapilmismi == True:
            try:
                self.tarayici.get(self.url + kullaniciAdiTakipCik)
                self.tarayici.implicitly_wait(4)
                takiptenCikButon = self.tarayici.find_element_by_xpath(
                    "//*[@id='react-root']/section/main/div/header/section/div[1]/div[1]/div/div[2]/div/span/span[1]/button")
                takiptenCikButon.click()
                self.tarayici.implicitly_wait(3)
                takiptenCikButon2 = self.tarayici.find_element_by_xpath(
                    "/html/body/div[6]/div/div/div/div[3]/button[1]")

                if takiptenCikButon2.text == "Takibi Bırak":
                    takiptenCikButon2.click()
                    self.tarayici.implicitly_wait(10)
                    print(kullaniciAdiTakipCik + " adlı kullancıı takipten çıkıldı.")
            except:
                print("Takipten çıkma işlemi sırasında hata ile karşılaşıldı.")
        else:
            print("Lütfen birini takipten çıkmak için önce bir hesap ile giriş yapın!")

    def Analiz(self, kullaniciAdi):
        try:
            self.tarayici.get(self.url + kullaniciAdi)
            self.tarayici.implicitly_wait(3)
            gonderiSayisi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[1]/span/span")

            takipciSayisi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[2]/a/span")

            takipSayisi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[3]/a/span")
            isim = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/div[2]/h1")
            bio = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/div[2]/span")
            url = "https://www.instagram.com/" + kullaniciAdi

            print("Gönderi Sayısı: {} Takipçi Sayısı:{} Takip Sayısı: {} İsim {} Bio: {} Url{} ".format(
                gonderiSayisi.text, takipciSayisi.text,
                takipSayisi.text, isim.text, bio, url))


        except:
            print("İlgili kullanıcının profil analizi yapılırken hata ile karşılaşıldı")

    def HesapGizlimi(self, kullaniciAdi):
        try:
            self.tarayici.get(self.url + kullaniciAdi)
            self.tarayici.implicitly_wait(5)
            hesapGizlimi = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/div/article/div[1]/div/h2")
            if hesapGizlimi.text == "Bu Hesap Gizli":
                print("Bu hesap gizli")
                return True

            else:
                print("Bu hesap gizli değil")
                return False

        except:
            print("Hesap gizlimi diye kontrol edilirken bir hata ile karşılaşıldı")

    def TakipEdilenler(self, kullaniciAdi):
        if self.HesapGizlimi(kullaniciAdi):
            print("Bu hesap gizli olduğu için takip ettiği kişileri görüntüleyemiyorum.")
        else:
            print("____----TAKİP EDİLENLER----____")
            self.tarayici.get(self.url + kullaniciAdi)

            followers_panel = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[3]/a")
            followers_panel.click()
            time.sleep(2)
            jsKomut = """
                                   sayfa=document.querySelector(".isgrP");
                                   sayfa.scrollTo(0,sayfa.scrollHeight);
                                   var sayfaSonu=sayfa.scrollHeight;
                                   return sayfaSonu;
                                   """

            sayfaSonu = self.tarayici.execute_script(jsKomut)
            while True:
                son = sayfaSonu
                time.sleep(2)
                sayfaSonu = self.tarayici.execute_script(jsKomut)
                if son == sayfaSonu:
                    break
            takipler = self.tarayici.find_elements_by_css_selector(".FPmhX.notranslate._0imsa")

            textfile = open("takipedilenler", "w")
            sayac = 0

            for t in takipler:
                sayac += 1
                self.tumTakipEdilenler.append(t.text)
                print("{} -->\n".format(sayac) + t.text)
                textfile.write("\n" + t.text)
            textfile.write("\n {} takip edilen kullanıcı var".format(sayac))

            time.sleep(2)
            kapatmaButonu = self.tarayici.find_element_by_xpath("/html/body/div[6]/div/div/div[1]/div/div[2]/button")
            kapatmaButonu.click()

    def TakipEdenler(self, kullaniciAdi):

        if self.HesapGizlimi(kullaniciAdi):
            print("Bu hesap gizli olduğu için takip ettiği kişileri görüntüleyemiyorum.")
        else:
            print("____----TAKİP EDENLER----____")
            self.tarayici.get(self.url + kullaniciAdi)

            followers_panel = self.tarayici.find_element_by_xpath(
                "//*[@id='react-root']/section/main/div/header/section/ul/li[2]/a")
            followers_panel.click()
            time.sleep(2)
            jsKomut = """
                                   sayfa=document.querySelector(".isgrP");
                                   sayfa.scrollTo(0,sayfa.scrollHeight);
                                   var sayfaSonu=sayfa.scrollHeight;
                                   return sayfaSonu;
                                   """
            sayfaSonu = self.tarayici.execute_script(jsKomut)

            while True:
                son = sayfaSonu
                time.sleep(2)
                sayfaSonu = self.tarayici.execute_script(jsKomut)
                if son == sayfaSonu:
                    break
            takipciler = self.tarayici.find_elements_by_css_selector(".FPmhX.notranslate._0imsa")

            textfile = open("takipciler", "w")
            sayac = 0

            for t in takipciler:
                sayac += 1
                self.tumTakipciler.append(t.text)
                print("{} -->\n".format(sayac) + t.text)
                textfile.write("\n" + t.text)
            textfile.write("\n {} takipciniz var".format(sayac))
            time.sleep(2)

            kapatmaButonu = self.tarayici.find_element_by_xpath("/html/body/div[6]/div/div/div[1]/div/div[2]/button")
            kapatmaButonu.click()

    def TakipEtmeyenler(self):
        print("____----TAKİP ETMEYENLER----____")
        try:
            textfile = open("takipetmeyenler", "w")
            print("Takip Etmeyenler")
            if len(self.tumTakipEdilenler) != 0 and len(self.tumTakipciler) != 0:
                for takipEdilenler in self.tumTakipEdilenler:
                    if takipEdilenler not in self.tumTakipciler:
                        print(takipEdilenler)
                        textfile.write("\n" + takipEdilenler)
        except:
            print("yeter da ")


Ins = Instagram("https://www.instagram.com/", "beyhude", "beyhude")
Ins.TarayiciAc()
Ins.GirisYap()
Ins.TakipEt("izzetyildirim")
Ins.TakiptenCik("izzetyildirim")
Ins.Analiz("uygar_aesthetics/")
Ins.HesapGizlimi("tbyldrm")
Ins.TakipEdilenler("deletedx112")
Ins.TakipEdenler()
Ins.TakipEtmeyenler()
Ins.TarayiciAc()