23 Kasım 2008Python ile Site Bilgileri Hakkında Bilgi
Merhabalar yine baya bir uzun aradan sonra geçenlerde boş boş otururken python ve pyqt kullanarak site bilgilerini çeken bir ui uygulama yapmaya karar verdim. Program siteyle iligili günceler bilgiler olan google pagerank, google backlink, google index, alexa rank ve dmoz kaydının olup olmadığını kontrol ederek elde ettiği bilgileri sunmakta.
Yazımın başında da söylemiştim php ile iletişime geçiyor diye öncelikle php ile oturup bu bilgileri çeken bir betik oluşturup fonksiyonel hale getirdikten sonra python ile bilgileri istenen sitenin istekleri bu php ye iletiliyor php de kendisine gelen istekler doğrultusunda gerekli bilgileri alıp ekrana yazıyor python ile de bu dönen sonucu alıp kullanıcıya yansıtıyor.
Betiğimiz bir adet sınıfdan oluşmakta ve thread kullanmaktadır. Thread kullanmaktaki amacım ise tek seferde bütün istekleri yapmak yerine tek tek parçalara bölüp istek yapmak ki böylece python betiğinin performansı da sağlanmış olmaktadır.
#!/usr/bin/env python # -*- coding: utf-8 -*- #---------------------------------------------------------- # Yazar: Yusuf KOÇ ( Raiden ) # Web : http://www.ysfkc.com # --------------------------------------------------------- # Copyright 2008 ysfkc.com # Licensed under the GNU General Public License, version 2. # See the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt import sys, re, urllib, thread from PyQt4 import QtCore, QtGui # Hadi Başlayalım class siteInfo: def __init__(self, ui): self.ui = ui self.site = "http://www.ysfkc.com/dosyalar/siteinfo/" # Site adresinde http:// yoksa uyarılıyor... def httpKontrol(self): self.httpDurum = re.search("^(http:\/\/)?", str(self.ui.lineEdit.text())).group(1) if self.httpDurum == None: return False; else: return True; def basla(self): if str(self.ui.lineEdit.text()) == '': self.hata('Lütfen Kutucuğa Site Adresinizi Giriniz') else: if self.httpKontrol() == False: self.hata('Lütfen Site Adresine Http:// eklemeyi unutmayınız!') else: thread.start_new_thread(self.pagerank, ()) thread.start_new_thread(self.backlink, ()) thread.start_new_thread(self.gindex, ()) thread.start_new_thread(self.alexa, ()) thread.start_new_thread(self.dmoz, ()) def pagerank(self): self.ui.pr.setText(unicode("Bilgiler Alınıyor...", "utf-8")) self._pagerank = urllib.urlopen(self.site + "?i=googleP&u=%s" % str(self.ui.lineEdit.text())) self.ui.pr.setText(self._pagerank.read()) def backlink(self): self.ui.bl.setText(unicode("Bilgiler Alınıyor...", "utf-8")) self._backlink = urllib.urlopen(self.site + "?i=googleB&u=%s" % str(self.ui.lineEdit.text())) self.ui.bl.setText(self._backlink.read()) def gindex(self): self.ui.gi.setText(unicode("Bilgiler Alınıyor...", "utf-8")) self._gindex = urllib.urlopen(self.site + "?i=googleI&u=%s" % str(self.ui.lineEdit.text())) self.ui.gi.setText(self._gindex.read()) def alexa(self): self.ui.as.setText(unicode("Bilgiler Alınıyor...", "utf-8")) self._alexa = urllib.urlopen(self.site + "?i=alexa&u=%s" % str(self.ui.lineEdit.text())) self.ui.as.setText(self._alexa.read()) def dmoz(self): self.ui.dk.setText(unicode("Bilgiler Alınıyor...", "utf-8")) self._dmoz = urllib.urlopen(self.site + "?i=dmoz&u=%s" % str(self.ui.lineEdit.text())) self.ui.dk.setText(self._dmoz.read()) def temizle(self): self.ui.lineEdit.clear() def hakkinda(self,): mesaj = QtGui.QMessageBox() mesaj.setWindowTitle(unicode('Hakkında', 'utf-8')) mesaj.setText(unicode('Info:\nBu program python bilgilerimi pekiştirmek amacıyla kobay-02 olarak adlandırılıp yazılmıştır. :) Çalışma şekli PHP betiği ile iletişime geçip belirtilen site bilgilerini alır ve size sunar.\n\nDenek-No:\nPython-02\n\nYazar:\nYusuf KOÇ\n\nWeb:\nhttp://www.ysfkc.com', 'utf-8')) mesaj.exec_() def hata(self,yazi): mesaj = QtGui.QMessageBox() mesaj.setWindowTitle(unicode("Uyarı","utf-8")) mesaj.setText(unicode(yazi,"utf-8")) mesaj.exec_()
Bu betikte sys, re, urllib, thread ve pyqt olarak beş adet modülden yararlanılmıştır.. Linux da çalışması için PyQt’nin kurulu olması gerekmektedir.
Windows da programımızın çalışabilmesi için Python ve PyQt4 modülünün kurulu olması gerekmektedir. Bu ikisini buraya tıklayarak indirip kurabilirsiniz.
Ve son olarak programımızdan bir görüntü koyarak yazımı noktalıyorum.. Resme tıklayarak büyük halini görebilirsiniz…


şu php betiğinide yazsaydın hocam
Php ile de daha sonra bir api şeklinde hizmet sağlamayı düşünüyorum..
Merhaba;
Teşekkürler,Python kendi kodları ile yapmıyor sanırım, ” http://www.ysfkc.com/dosyalar/siteinfo/ ” adresine bağlanıp adres üzerinden sorgulama yapıyor değilmi ?
@Mancho Bo.
Evet kendi kodları ile yapmıyor dediğiniz adrese bağlanıp alıyor bilgileri.
thread kullanımına hastayım birader
@Abdurrahman
kıskanmayalım kardeş
Kardeşiniz sizden iyi yapıyorsa hizmeti:
“Kardeşlerinizin meziyetlerini şahıslarınızda ve faziletlerini kendinizde tasavvur edip, onların şerefleriyle şâkirâne iftihar etmektir.” (Said Nursi)
Ya işte böyle
Windows da programımızın çalışabilmesi için Python ve PyQt4 modülünün kurulu olması gerekmektedir. Bu ikisini buraya tıklayarak indirip kurabilirsiniz.
Buradaki link hatalı. Yenisi
http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-win-gpl-4.5.4.zip
Paylaşım için teşekkürler.
@HepYek
Teşekkürler yazıdaki link güncellendi.
teşekkürler…
hocam *.ui dosayasından *.py kodlarını nasıl aldınız bende bi uygulama yapmaya çalışıyorum ama ui dosyası hazıur içindeki py kodlarını alamıyorum bi turlu yardımcı olursanız sevinirim
@yasin pyuic ile ui dosyasını py olarak dönüştürüyorsun. tabi ben PyQt kullanmıştım.
http://qt.gitorious.org/pyside/pyside-tools/blobs/d69daf4a4261b4361dc97474b0be57c58b9de55c/pyuic.py