Python’da Mechanize ve BeautifulSoup Modülleri

Örnek olarak hazırlanmış python scriptindeki kodları görmeden önce kullanılan kütüphanelerin ne işe yaradığı hakkında kısaca bilgi verelim.

Mechanize Kütüphanesi

Mechanize kütüphanesi kısaca görsel bir arayüzü olmayan kod tarafında çalışan çok basit bir tarayıcı yaratmanızı sağlar. Mechanize kütüphanesi kendi içinde bulunan “urllib2” kütüphanesinide destekleyerek kullanır. Mechanize’nin bize yani programcıya sağladığı kolaylıkları ve barındırdığı özellikleri sıralayacak olursak :

  • URL şemalarını çıkarma
  • Cookie ve session tutma
  • robots.txt dosyası çıkarma
  • Yeniden yönlendirmeleri tanıma
  • Proxy kullanma
  • FTP ve HTTP bağlantı kurma

Kütüphane Gisle Aas, Johnny Lee ve Andy Lester tarafından Perl ile yazılmıştır.
Kütüphaneyi sistemimize kurmak için linux ortamında şu kodu kullanabiliriz:
$ pip install mechanize
Kütüphaneyle ilgili dökümantasyona ve github deposuna başlıktaki linkten ulaşabilirsiniz.

Beautiful Soup Kütüphanesi

Beautiful Soup kütüphanesinin genel kullanım amacı HTML ve XML verileri parse etmektir yani örneğin parametre olarak girilen bir XML verisini anlamlı hale getirebilmektir. Burada bize sağladığı en büyük avantaj girilen HTML yada XML verisi içerisinde hatalı girdilerin olması ihtimaline karşı yinede girilen veriyi başarılı bir şekilde anlamlandırabilmesi ayrıştırabilmesidir.
Beautiful Soup Python dili ile geliştirilmiştir ve sloganı ise “A tremendous boon”dur yani Muhteşem bir nimet 🙂 .
Kütüphaneyi sistemimize kurmak için linux ortamında şu kodu kullanabiliriz:
$ pip install beautifulsoup4
Kütüphaneyle ilgili dökümantasyona ve github deposuna başlıktaki linkten ulaşabilirsiniz.

Modüller hakkında bilgi verdikten sonra gelelim python scrtiptimize.

Ne yapıyor bu program ?
Programın amacı çok basit. İnternetin olduğu her ortamda ki işletim sistemi farkı problem olmadan ister grafiksel arayüz olmadan ister konsol üzerinden girilen dili algılayarak istenilen dile çeviren bir script.

Peki bunu nasıl yapıyor ?
Aslında herşey bu satırda bitiyor.

_url = "https://translate.google.com.tr/m?hl=tr&sl=auto&tl={0}&ie=UTF-8&prev=_m&q=".format(self.to_language)

Dilin algılanması işlemi URL üzerinden otomatik olarak zaten yapılıyor, bize sadece çevirileccek dili girmek kalıyor. Devamında ise

html_codes = browser.open(_url).read()
soup = BeautifulSoup(html_codes, 'html.parser')
translate_word = soup.find_all('div', attrs={'class': 't0'})

kodu önce siteyi okuyup ardından parse ediyor ki elimizde anlamlı ve sade veriler kalsın.

Son olarak parse edilmiş veri içerisinden class ismi t0 olan div i seçip ufak string temizleme işlemleri ile userın anlayabileceği bir hale getiriyor ardından return ediyoruz.

clear_text = str(translate_word[0])
clear_text = clear_text[26:len(clear_text)]
clear_text = clear_text[:-6]
browser.close()
return clear_text

Aslında program temel olarak mechanize ile bir browser açıyor, ardından hedef URL’in kaynak kod bilgilerini ediniyor, bu esnada BeautifulSoup modülü gelen HTML verisini html.parser ile temizleyerek yeniden html_codes değişkenine atıyor. Son olarak çevirilmesi tamamlanmış kelimeyi temizleyerek kullanıcıya sunmak kalıyor.

Projenin tüm kodlarını görmek için github/tlhcelik/term-translator adresine gitmeniz yeterli olacaktır.

Okuduğunuz için teşekkürler 🙂