1 Ekim 2008 Çarşamba

Mechanize Modülü ve Vodafon Örneği

Bildiğiniz gibi Vodafone kullancılarının günlük sadece bir mesaj hakkı vardır. Ancak bu mesaj hakkını 1 tane olmasından ve uğraşmak istemediğimizden kullanmayız. Bu python betiği ise üşengeç olup bir tanede olsa kullanırım diyenler için işe yarayabilir ama daha çok Python'dan anlayan insanların "Mechanize" modülüne örnek olması amaçlanmıştır.

Mechanize modülü kurulumu:
- Pardus'da konsoldan "sudo pisi it mechanize".
- Windows'da setup. direk kuruluma sahibtir.

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import mechanize
#modülümüz yüklendi
def baglan():
global b
b=mechanize.Browser()
b.open('https://www.vodafone.com.tr/MyVodafone/login.php')
b.select_form(nr=1)


mechanize.Browser() ile tarayıcımızı oluşturduk, open ile sayfayı açtık, select_form ile sayfadaki 1. formu seçtik. Peki nedir bu form? Bu form bizim vodafona giriş için kullanacağımız kullanıcı adı ve şifresi bölümüdür. Daha açık bir şekilde bu form aşağıdaki gibidir;

>>> b.select_form(nr=1)
>>> print b
<browser visiting="" tr="" myvodafone="" php="" selected="">
<post tr="" myvodafone="" php="" application="" urlencoded="">
<textcontrol(gsmno=)>
<passwordcontrol(mypass=)>
</passwordcontrol(mypass=)></textcontrol(gsmno=)></post></browser>


Görüldüğü üzere sayfanın yukardan aşağıya doğru sıralamasında 1. form statüsünde olan formu seçtik çünkü vodafona giriş yapmak üzereyiz. Bu formda iki alan gözüküyor, bunlardan birincisi GsmNo diğeri MyPass. Sorumuz ise bu form girişlerini nasıl yapacağımız olacak !
Devam edelim!

def giris():
global b
gsmno=raw_input("GSM NO :") # numara girişi(543)
vodos=raw_input("Vodafon Şifreniz:") #-->şifre
b["GsmNo"]=gsmno # form girişi yapılıyor
b["MyPass"]=vodos
print "Bağlaniyor"
r=b.submit() # form bilgileri yollanıyor

try:
b.open('https://www.vodafone.com.tr/MyVodafone/myvodafone.php?pageId=WebSms') # websms sayfası
b.select_form(nr=1) #--------------->websms sayfasındaki (mesaj yollama) formumuz
except:
print "Bağlandi"
print "Hatalı Numara veya Şifre"
exit(1)

Buraya kadar yaptıklarımızı özetleyelim.
1. Vodafon sayfasını açıldı,
2. Vodafon sayfasına giriş yapıldı,
3. Girişimiz hatalı değil ise mesaj yollama sayfası açıldı,
Geriye sadece mesaj yollamak kaldı.
def mesaj_cek():
global b
try:
print "Mesaj Yollanacak Numaranın(Örn 543) kodu:"
yolk1=raw_input()
print "Mesaj Yollanacak Numara(Örn 4658758) kodu:"
yolk2=raw_input() #Örnein 4658758
try:
b["WebSimSmsUserGsmPrefix"]=[yolk1] #---->Numaramızın ilk 3 hanesi
b["WebSimSmsUserGsmNo"]=yolk2 #-------->Numaramızın devamı
except:
print "yanlis giris yaptiniz!"
exit(1)
print "Yollacak Mesajı Giriniz:"
mesaj=raw_input() #------------------------->Yollanacak mesaj
b["WebSimSmsText"]=mesaj #------------------>Mesajımız forma girildi
print "Mesaj yollanıyor"
r=b.submit() #------------------------------>Mesaj yollandı
print "Mesaj yollandı"
except:
print "GUNLUK SADECE 1 MESAJ HAKKINIZ VAR!!!"
exit(1)
b.close()
baglan()
giris()
mesaj_cek()


Bu kodun tamamı Burada
Neler yapılabilir;
  • Sınırsız mesaj sayfasından,sınırsız mesaj çekilebilir
  • Diğer operatörlerden benzer uygulamalar yapılabilir
  • Bayram,kandil,yıl başı gibi toplu mesaj atılmak istendiğinde bir veritabanı oluşturup,veritabanındaki listedeki kullanıcılara mesaj atılabilir
  • İstediğimiz web sayfasından istediğimiz bilgiyi alabilir ve web sayfalarını otomatikleştirebiliriz

3 yorum:

  1. selamlar örnek için teşekkürler.
    ben windows altında python ıdle kullanıyorum mechanize diye bir modül yok diyor.nasıl halledebilirim.

    YanıtlayınSil
  2. http://wwwsearch.sourceforge.net/mechanize/#source

    bu adresten indirip kurabilirsiniz.

    YanıtlayınSil
  3. elinize sağlık...

    birde bir anket için nasıl bir betik hazırlamalıyız bunun örneğini verirseniz çok sevinirim

    mesela 4 tane radiobutton ve bir gönder butonu olan formda radibuttonlardan birini seçip gönder butonuna basmak gibi...

    YanıtlayınSil