Using Mechanize modul with Python
Merhaba arkadaşlar son zamanlarda ilgilendiğim web üzerinden veri çekme,login olma gibi bir takım işlemlerde kullandığım bir modülü sizinle paylaşmak istedim. Bugün ki Konumuz Mechanize Modülü. Daha sonra BeautifulSoup ve Selenium gibi modullere de bakacağız. Artık Başlayalım çok basit bir şekilde istediğimizi elde edeceğiz Mechanize Modülüyle.
Mechanize Modülü Nedir?
John J. Lee tarafından geliştirilen, web siteleri üzerinde browser gibi davranarak işlemler yapmamızı sağlayan python2x modülüdür. Aynı zamanda perl ve ruby dilleri için de yazılmıştır. Python kurulumuyla beraber gelen urllib standart modülü ile de aynı işlemleri yapabilirsiniz fakat mechanize kadar pratik değildir. Mechanize sayesinde web siteleri üzerinde proxy, cookie, header, user-agent gibi bilgileri bir kaç satır kodla yazarak zamandan kazanabilirsiniz.
Neler Yapabilirim?
- İstediğiniz bir web sitesi hakkında günün belli saatlerinde bilgi alabilir veya bilgi gönderebilirsiniz.
- Haftalık hava durumu takibi
- Yorum yazma
- Mesaj gönderme
- Bildirimleri okuma
- Makaleleri kaydetme vs.
- Brute force aracı yazabilirsiniz.(uzman kullanıcılar)
- Cookie engellerini aşma
- robots.txt dosya engelini atlatma
- Çok sayıda User-Agent tanımlayarak farklı tarayıcılar gibi davranma
- Wordlist yükleyerek olasılığı arttırma
- Proxy listesi ekleyerek anonimliği arttırma
- Yapacağınız işlemleri random modülü kullanarak ip engelinden korunma
Daha fazla bilgi için lütfen burayı ziyaret ediniz: http://python4hackers.com/genel/python-mechanize-modulu.html
Artık koda geçmek istiyorum…
Diyelim ki Facebook’a Login olmak istiyorsunuz…
Ben ide olarak Pycharm kullanıyorum. Onun için mechanize modülünü bilgisayarıma kuruyorum.
Fotoğrafta görüldüğü gibi bende kurulu olduğu için mavi olarak gözüküyor ama sizde ilk seferde beyaz bir renkte olucak diğer modüller gibi.
Daha sonra kod ekranına gelerek 1.satıra import mechanize yazarak kodumuza modülümüzü dahil ediyoruz.
Mechanize modülü sanki bir browser gibi davrandığı için 2.satıra brows(herhangi bir değişken olabilir)=mechanize.Browser()
3.satırda ise Browser nesnesinin set_handle_robots metodunu kullanarak robots.txt engeli için False değerini veriyoruz
4.satırda Referer bilgisi ve header için gerekli olan tanımlamaları yapabiliriz. Ben Chrome kullandığım için böyle tanımlamayı uygun gördüm siz değiştirebilirsiniz.
brows.addheaders=[(‘User-agent’,’Chrome’)]
5.satırda Facebook’a login işlemini yapıcak komutu yazıyoruz.Bu işlemi yapan komut open komutu.
brows.open(‘http://www.facebook.com/login.php’)
6.satırda ise Post yapacağımız form kısmının html kodunda kaçıncı sırada olduğunu belirtiyoruz. Sayfa içerisinde birden fazla form kısmı olabilir. Html kaynak kodunu inceleyerek öğreniyoruz. İlk sıradaysa sıfır yazıyoruz.
brows.select_form(nr=0)
Artık login için email adresinizi ve şifrenizi girmeye geldi ama email yerine facebook ID ile de girebilirsiniz ben öyle yaptım. ID değerinizi öğrenmek için facebook profilinize girip sağ tıklayıp incele dedikten sonra ctrl+f yapıp ORİGİNAL_USER_İD yazarsanız ID nizi öğrenmiş olursunuz.
Gelelim login işlemine tekrar.
brows.form[’email’]= ‘User id buraya gelecek’
brows.form[‘pass’]=’şifre burada olacak’
Peki bu email ve pass in nereden geldiğini sorduğunuzu duyar gibiyim…Hemen açıklayalım…
Email ve pass www.facebook.com/login.php sayfasına giderek email kısmına sağ tıklayıp incele yaparak name değişkenine tanımlı olan değeri alıyorum yani emaili.Şifre içinde aynı işlemi yapıyoruz.
Bu işlemleri bitirdikten sonra browser isteğini artık gönderiyoruz.
send(herhangi bir değişken olabilir)= brows.submit()
Son satırdaki kodumuz ise gerçekten giriş yapıp yapmadığımızı anlamak için eğer giriş yaptıysak bize ana sayfadaki tüm html kodlarını getiricek.
print brows.open (“http://www.facebook.com”).read()
Son olarak arkadaşlar kodların tamamını paylaşıyorum.
Umarım yardımcı olabilmişimdir.Önümüzde ki günlerde daha kapsamlı örneklerle birlikte olucaz.Gerek BeautifulSoup gerek Selenium modüllerinide zamanı gelince kullanıcaz.Sevgiyle Kalın.
import mechanize
brows = mechanize.Browser()
brows.set_handle_robots(False)
brows.addheaders=[('User-agent','Chrome')]
brows.open('http://www.facebook.com/login.php')
brows.select_form(nr=0)
brows.form['email'] = 'email kod'
brows.form['pass'] = 'şifre'
send = brows.submit()
print brows.open("http://www.facebook.com").read()