Selenium, Writing Instagram Followers to a File

Kategori: Python , 13 Eylül 2019 , JanFranco


Önceki yazının üzerinden devam ediyoruz, Instagram'a hesabımızı kullanarak giriş yaptık. Karşımıza tarayıcı bildirimleri ile ilgili bir pencere çıkacaktır. Bunu kapatmak için kapatma butonunu xpath ile çekelim ve tıklayalım:


skipButton = browser.find_element_by_xpath("/html/body/div[2]/div/div/div[3]/button[2]")
skipButton.click()
time.sleep(2)
Profil butonunu xpath ile çekelim ve tıklayalım:


profileButton = browser.find_element_by_xpath("/html/body/span/section/nav/div[2]/div/div/div[3]/div/div[3]/a")
profileButton.click()
time.sleep(10)
Takipçiler butonunu xpath ile çekelim ve tıklayalım:


followersButton = browser.find_element_by_xpath("/html/body/span/section/main/div/header/section/ul/li[2]/a")
followersButton.click()
time.sleep(10)
Takipçiler listesinde tüm takipçiler gözükmemekte, aşağı indikçe yeni takipçiler yüklenmektedir. Bu nedenle otomatik olarak scroll down edecek bir javascript kodu yazalım. Bu kodun Selenium ile bir ilgisi yoktur, bilmek zorunda değiliz:


jsCode = """followers = document.querySelector(".isgrP");
            followers.scrollTo(0, followers.scrollHeight);         
            var lenOfPage = followers.scrollHeight;
            return lenOfPage;"""
Bu kodu tarayıcı tarafından çalıştıralım. Yukarıdaki kod bloğunda son uzunluk return edilir. Bir while döngüsü açalım. Bu döngüde her bir iteration'da script'i tekrar çalıştıralım. Eğer son konumumuz değişmez ise döngü sonlanacaktır. Bu şekilde listenin sonuna geldiğimizi anlayabiliriz:


lenOfPage = browser.execute_script(jsCode)
match = False
while(match == False):
    lastCount = lenOfPage
    time.sleep(1)
    lenOfPage = browser.execute_script(jsCode)
    if lastCount == lenOfPage:
        match = True
Bir liste tanımlayalım. Takipçi isimlerini Css selector ile alalım ve listeye atalım:


followersList = []

followers = browser.find_element_by_css_selector(".wFPL8 ")
for follower in followers:
    followersList.append(follower.text)
Son olarak listedeki isimleri bir dosyaya kaydedelim:


with open("followers.txt", "w") as file:
    for follower in followersList:
        file.write(follower + "\n")
Burada kullandığımız Javascript kodunu bilmemiz gerekmiyor, Selenium ile bir ilgisi yok fakat script'leri nasıl çalıştırdığımızı bilmemiz gerekli ve bunu gördük. Javascript ile ilgili bir bölüm daha sonra açacağım, yazılar paylaşacağım. CSS ve XPath selector ile ilgili sorunlar yaşarsanız yorum olarak belirtebilirsiniz, ayrı bir yazıda açıklayabilirim.


Sonraki Yazı: Scrapy, Installation
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın