Python Mechanize ile Hayatı Kolaylaştırmak

3-5 satır Python yazmayı bilen herkesin ilk öğrenmesi gereken şey, bana kalırsa Mechanize kütüphanesi. Mechanize hem hızlı, hem etkili, hem çok kolay hem de Python üzerinde kullanıyorsunuz, ki bu da onu daha da kolay yapıyor. Peki nedir Mechanize? Mechanize, -daha çok benim onu kullandığım ve öğrendiğim haliyle- web tabanlı işlemlerinizi, 10 satırlık kodlarla otomatikleştirebileceğiniz bir araç. Tamamen metin tabanlı, sisteminize en ufak bir etki etmeden, bir tarayıcıymış gibi sayfalara bağlanıp, istediğiniz yerlere tıklıyor, formları doldurup gönderebiliyor.

Kullanım alanları neredeyse limitsiz. Mesela bir veriyi sürekli kontrol etmeniz gereken bir sayfa var, Mechanize ile otomatik bağlanıp o veriyi her seferinde kontrol ettirebilir, basit bir Python koduyla değişmeleri günlükleştirebilir, kendinize mail atabilir, wall komutu (ve KDE’nin wall komutlarını okuması) yardımıyla tek satır kodla uyarı kutuları oluşturabilirsiniz. Sadece değişimleri takip etmek ya da bir  veriyi okutmak değil, onu bir monitoring aracı olarak da kullanabilirsiniz. Ya da sizin için ısrarla bir sayfayı zorlayıp, formları doldurmasını sağlayabilirsiniz, mesela dershanelerde, üniversitelerde vardır bu, gecenin bir saati açılan sistemlere uyumaksızın girip ders almak. Mechanize sizin için gecenin bir saatine kadar bekler, defalarca kez ardı ardına dener ve diğer adaylar tek tek formu doldururken, formu saniyede doldurup gönderir, ne isterseniz onu almış olursunuz. Ki bu da neredeyse her daim çöken devlet sitelerinde sizin baş yardımcınız olabileceği demek oluyor.

Bunlar sadece bazı örnekler. Bir başka örnek olarak, benim N900 için yazdığım VodaSMS, Mechanize  yardımıyla Vodafone’un sitesine giriş yapıp bedava SMS hizmetini tüm o menüler, reklamlar arasında dolaşmadan tek tıkla yapabilmenizi sağlıyordu mesela. Bu basit bir örnek, isterseniz mechanize ile fatura detaylarını okutursunuz, isterseniz onu bir site için istemci yapmakta kullanırsınız. Gzip sıkıştırma, cookieler, HTTP refresh gibi badireleri sorunsuz atlattığı gibi, isterseniz User-agent ‘ı bir satırla değiştirir, kendisini bir Firefox veya Chrome olarak göstermesini sağlarsınız ki, ısrarlı denemeleriniz loglarda göze çok batmasın. Örnek arttırılabilir, bir web örümceği de yapmaya çalışabilirsiniz, YemekSepeti’nden sipariş de verdirebilirsiniz.

Övülebilecek daha çok yanı var, sağolsun hayatımı birden fazla kez kurtardı şimdiye kadar, göz önünde olmayışına daha  fazla izin veremezdim. Mechanize ile ne yapılamaz/yapması 10 satırdan fazlasını alır derseniz, aşırı JavaScript’li sayfalar, Flash, CAPTCHA gibi olaylar mechanize’ın kabiliyet alanının dışına çıkıyor. En büyük artısı, neredeyse hiç zamanınızı almadan, masal yazar gibi kod yazıp hayat kurtaran sonuçlar alınabilmesi, ki benim Python ‘a bakış açım zaten bu yönde olduğu için, ne kadar memnun olduğumu anlatmaya kelimeler yetmez. Hazırda karman çorman bir örnek olarak VodaSMS ‘in kodlarını inceleyebilirsiniz,  Vodafone Türkiye sitesini değiştirmediyse halen çalışıyor olmalı.

4 yorum yapılmış

  1. Burada: https://github.com/AranelSurion/vodasms :)

    Çok zaman önce yazdığım bir koddu, pek temiz değil ama şöyle bir baktım, okunaklı sayılır.

  2. oda uçmuş be

  3. Epey detaylı, hatta var olan, yazılmış kullanılmış bir yazılımın komple kodunu verdim ama? Olmaz mı? :)
    Belki Mechanize kullanımına dair bir şeyler karalar, manual-imsi bir yazı hazırlarım daha sonra. Gerçi Türkçe böyle kaynaklar da vardır muhtemelen, yoksa şayet yapılabilir ama.

  4. Basit bir kod örneği ve projenin sayfasına link verseymişsin yazı da çok daha güzel bir yazı olurmuş.

Yorum Yazın