Python ve Selenium ile Twitter Botu Kodlayalım

Emre Can Satık
6 min readJul 31, 2022

--

Selenium Webdriver kullanarak Twitter üzerinden iki örnek göreceğiz.
⚡ Twitter’daki hesabımıza giriş yaptırmak.
⚡ Twitter’dan veri çekmek (örnek: # gündem konuları)

Bu botu yazmak için bize gereken her şeyi aşağıda görebileceksiniz. Gerekenleri kısaca açıkladıktan sonra tüm kodu adım adım birlikte yazacağız.

İçindekiler

• Araç Seçimi: Selenium Webdriver
• Selenium Webdriver Nedir?
• Yazılım Dili Seçimi: Python

• Adım 1: Python’ı İndirin
• Adım 2: Python’ı Kurun
• Adım 3: Selenium Webdriver’ı Kurun
• Adım 4: IDLE’yi Açın

• Adım 5: Chrome Sürücünüze Göre Chromedriver İndirin

• Adım 6: İstenilen Siteye Yönlendirin
• Adım 7: Twitter Hesabına Giriş Yaptırın
• Adım 8: Twitter Sitesinden Veri Çektirin

📝 Programı test edebilmeniz için bir Twitter hesabı oluşturmayı unutmayın.

📝 Python ve Selenium ile ilgili kurulum eksiği olmayanlar Adım 5'ten başlayabilir.

📝 Kodların anlatıldığı kısma erişmek isteyenler Adım 6'ya ilerleyebilir.

💻 Yazdığımız kodun kaynak kodları yazının en altında toplu bir şekilde bulunmaktadır.

Araç Seçimi: Selenium Webdriver

Selenium Webdriver, en genel tabiriyle tarayıcı botu oluşturmayı sağlayan bir modüldür. Tarayıcı botu, dilediğiniz herhangi bir tarayıcıda (chrome, firefox vb.) otomatikleştirilmiş işlemler yapabilmenizi sağlayan yazılım otomasyonlarına denir.

💻 Selenium Webdriver Nedir?

Selenium Webdriver hakkında daha detaylı bilgiye ulaşmak isterseniz diğer yazıma göz atabilirsiniz.

Yazılım Dili Seçimi: Python

Twitter botumuzu yazmak için kullanacağımız Selenium Webdriver modülüne Python dilini kullanarak erişeceğiz. Oldukça basit bir dil olan Python dili yüksek programlama bilgisine gerek duymadan, küçük projeler için, programlama yapmamızı sağlar.

Adım 1: Python’ı İndirin

https://www.python.org/downloads/
Bağlantısına tıklayarak fotoğrafta işaretlenen kutucuğa tıklayın ve dosyayı indirin.

Adım 2: Python’ı Kurun

Oklarda ifade edildiği sıra ile kurulumu tamamlayın.

Adım 3: Selenium Webdriver’ı Kurun

Bilgisayarınızdaki komut istemini açın. Ardından “pip install selenium” yazıp enter tuşuna basın.

Adım 4: IDLE’yi Açın

Arama çubuğunda IDLE yazdığınızda karşınıza gelen programı açın. Ardından File menüsünden New File’ı seçin.

Adım 5: Chrome Sürümünüze Göre Chromedriver İndirin

Yukarıdaki üç fotoğrafı sırayla takip ederseniz Chrome tarayıcınızın sürüm bilgisini öğrenebilirsiniz. Öğrendiğiniz sürüm bilginize uygun dosyayı buraya tıklayarak indirin.

İndirdiğiniz dosyanın içerisindeki chromedriver dosyasını dilediğiniz yere çıkartın. (Yazdığımız kodun çalışması için kod dosyası ile aynı dizinde olması gerekecek)

Adım 6: İstenilen Siteye Yönlendirin

IDLE üzerinde gösterilen şekilde kodu yazın.

🔑 Selenium’un “webdriver” modülü de dahil olmak üzere kullanılacağımız her şeyi projemize dahil ettik.
🔑“tarayici” adında bir değişken tanımladık ve bu değişkenin bir Chrome tarayıcısı olacağını belirttik.
🔑 “get” fonksiyonu ile parantez içinde tırnak işaretleri arasına kod çalıştırıldığında hangi sitenin açılmasını istiyorsak o sitenin bağlantı adresini (linkini) ekledik.
🔑 “time” modülüne ait “sleep” fonksiyonu ile sayfamızın yüklenmesini beklemeyi sağladık.

Çalıştırmak için F5 tuşuna basın. Çalıştırabilmeniz için kaydetmeniz gerektiğini söyleyecektir. Dosyayı dilediğiniz yere, dilediğiniz isimle kaydedin.

📝 Sorunsuz çalışabilmesi için bu kod dosyasının daha önce indirip çıkarttığınız chromedriver dosyası ile aynı dizinde olması gerekmektedir.

Adım 7: Twitter Hesabına Giriş Yaptırın

Programı çalıştırdığınızda açılacak olan tarayıcı sayfasında programa yaptırmak istediğimiz şeyin ne olduğunu düşünüp adım adım bunları koda dökmeliyiz.

Öncelikle sayfanın kodlarına erişelim. Sayfada herhangi bir yere sağ tıklayın. Sağ tarafta veya aşağı tarafta (bilgisayardan bilgisayara değişebilir) kodların açıldığını göreceksiniz. Burada 2 numaralı okun işaret ettiği butona tıklayın.

Ardından ok işareti ile gösterildiği gibi, e posta girişi yapacağımız kutucuğa tıklayın. Yıldız ile işaretlediğim yerde tıkladığınız yerin kodları seçilmiş olacaktır. Gördüğünüz gibi ‘name=”text”’ gibi bir bilgi verilmiş. Bu bilgiyi kullanarak seçili kutucuğa erişim sağlayacağız.

Giriş yapacağınız hesabın bilgilerini yukarıdakine benzer şekilde girin.

📝 Yukarıda verilen hesap bilgileri test amaçlı oluşturulmuş bir hesaba aittir. Giriş yapamamanız durumunda kendi oluşturduğunuz hesap ile deneyin.

🔑 “eposta_giris” adındaki değişkene tarayıcı üzerinde name etiketi “text” olan elemanı atadık. Ardından bu elemente tıklanmasını “click” ile sağladık.
🔑 Yine bu elemana “send_keys” fonksiyonu ile yukarıda tanımladığımız “eposta” bilgisini yolladık.
🔑 Bir saniye bekledikten sonra seçili elemana “Enter” tuşuna basıldığı bilgisini verdik. Bu sayede bir sonraki aşamaya geçmiş olduk.

Çalıştırmak için F5 tuşuna basın ve istenilen noktaya gelinmesini bekleyin.

📝 Chrome test yazılımı (yazmakta olduğumuz bot) tarafından sıklıkla ziyaret edilen bir hesap için yukarıda verilen şekilde sizden kullanıcı adı isteyecektir. Böyle bir durumda karşılaştığınızda programın hata almaması için “bu durumla karşılaşırsan şunu yap” gibi bir çözüm yoluna gideceğiz.

🔑 “try” bloğuna denemek istediğimiz kodu gireriz.
🔑 “except” bloğuna ise denemek istediğimiz kodun hata vermesi durumunda yapılacakları gireriz.

📝 Bu örnekte denemek istediğimiz şey, şifre girmemizi sağlayacak kutucuğa erişmek. Böyle bir kutucuğa erişemememiz durumunda kullanıcı adı bilgisi isteyen sayfaya yönlendirilmişiz demektir. Dolayısıyla kullanıcı adı bilgisini girmek için kodlar yazmalıyız.

📝 Eğer böyle bir hata hiç almamış isek “except” bloğu es geçilecek ve program “except” bloğunun bittiği yerden devam edecektir.

🔑 Yukarıdaki örneklerde olduğu gibi elemanlara eriştik ve bu elemanlara tıklayıp hesap bilgilerimizi yazdırdık. Ardından “Enter” tuşuna basıldı bilgisi vererek sonraki aşamaya geçilmesini sağladık.

Çalıştırmak için F5 tuşuna basın ve istenilen noktaya gelinmesini bekleyin.

Adım 8: Twitter Sitesinden Veri Çektirin

Hesaba giriş yaptırdıktan sonra twitter sitesi üzerindeki # içeren gündem konularını bilgisayarımıza çekmeyi göreceğiz.

📝 Hesaba giriş yaptırma örneğinde elemanlara erişirken “name” bilgisinden yardım alıyorduk. Bazı durumlarda etiket, “name” gibi bir bilgiye sahip olmayabilir. Bu gibi durumlarda ne yapabilliriz? Hadi görelim.

Daha önceki örneklerde olduğu gibi sayfada boş bir alanda sağ tıklayıp “İncele” seçeneğine tıklayalım. Ardından yine 1 numaralı okun işaret ettiği butona tıklayalım. Sonra bilgisini istediğimiz elemana (bu örnekte gündem konularından birine) tıklayalım.

📝 “name” bilgisi göremediğimiz durumlarda “class” bilgisinden yardım alabiliriz.

🔑 “liste” değişkenimize tarayıcı üzerinden “CSS_SELECTOR” tipinde eleman arama ile yukarıda kopyaladığımız “class” bilgisini giriyoruz.

📝 “find_element” yerine “find_elements” fonksiyonunu kullandığımıza dikkat edelim. Birden fazla elemana erişmek için bu fonksiyonu kullanırız.

📝 “class” bilgisini doğrudan koymak yerine, bir tanesi en başa olmak üzere, tüm boşluklara nokta (.) koymalıyız.

🔑 Bir for döngüsü yardımıyla belirtilen “class” bilgisini içeren tüm öğeler arasından içinde “#” karakteri olanları ekrana yazdırdık.

Kodumuzu çalıştırdığımızda “IDLE Shell” üzerinde ekran çıktımızı görebiliriz.

📝 Twitter sitesi güncelleme aldıkça siteye ait kodlar değişebilir. Bu durumda programınızı sitenin yeni haline adapte etmelisiniz.

📝 Chrome tarayıcınız güncelleme aldıkça “chromedriver” dosyanız işe yaramaz hale gelebilir. Bu durumda “chromedriver” dosyanızın yeni sürümünü belirtilen linkten indirmelisiniz.

--

--