Python ve Urllib ile Bot Yapımı

Kullanmak nasip olmadı ancak bir siteden verileri çeken bir bot yapmıştım. Kodları verip kısaca açıklayayım. Tkinter kullanmıştım ancak ekleme sayısı düzgün çalışmıyor. Başlangıç numarasının verildiği dosyadan veriyi alıp program kapatılana kadar seri bir şekilde ekliyor. Verileri de re modülünün nimetlerinden yararlanarak ayrıştırdım. Aslında çok kısa sürede binlerce veri çekebiliyor ve çekilen sitenin de sağlığı düşünülürse ana döngüye time.sleep() eklemek mantıklı geldi. Kendi sitenizse bunu kaldırıp işleminizi hızlı yapabilirsiniz tabii ki sizin seçiminiz.

bot.py dosyası şu şekilde:

#-*-coding:utf8-*-

from Tkinter import *
import urllib
import re,time

def icerikal(sayfa,idimiz):
    try:
        hamicerik=re.search('<p id="sinifadi">.*</p>',sayfa,re.DOTALL).group()
        icerigimiz=re.sub("<br />","n",hamicerik)
        icerigimiz=re.sub('<p id="sinifadi">|</p>',"",icerigimiz)

        baslik=re.search("<title>.*</title>",sayfa).group()
        basliks=baslik[7:-8]
        dosyakaydet(idimiz,basliks,icerigimiz)
        eklendi(idimiz,basliks)
        sonhaliyaz(idimiz)
    except:
        pass

def ilk():
    dosya=open("kalan.txt","r")
    basla=dosya.readline()
    dosya.close()
    return basla

# GELEN VERİLERİ DOSYAYA İŞLEYELİM.
def dosyakaydet(idimiz,baslik,icerik):
    dosya=open("cekilenler/%s.txt" % (idimiz),"w")
    dosya.write("%s-%s" %(idimiz,baslik))
    dosya.write("n")
    dosya.write(icerik)
    dosya.close()

# FİNALDE DOSYA NUMARASINI KAYDEDELİM.

def sonhaliyaz(son):
    dosya=open("kalan.txt","w")
    dosya.write(son)
    dosya.close()

def eklendi(idimiz,baslik):
    gosterge.config(text="Son Eklenen: %s - %s" %(idimiz,baslik))

def isle():
    kactane=sayi.get()

    idimiz=ilk()
    idimiz=int(idimiz)
    x=0
    while x

Aslında daha parçalı ve düzenliydi ancak yeni başladığım için düzeni koruyarak çalıştıramadım maalesef. Yazdığım özellikler dahilinde Windows altında sorunsuz çalıştı. Siteden içerik alırken yukarıda bahsettiğim sistemi, yani re modülünü kullandık. urllib ile aldığımız verileri düzenleyen re modülü sayesinde başlığı ve istediğimiz html etiketi ile css sınıfı arasında kalan kısmı alıp içeriğin yer aldığı sayfa numarasıyla birlikte cekilenler/dosya-no.txt olarak bilgisayarımıza kaydettik. WordPress için bunu uyarlamak hiç de zor olmayacaktır. Yani biraz düzenleyerek blogunuzdaki yazılarınızı id lerine göre bilgisayarınıza kaydedebilirsiniz. Kaydedilen içeriğin mysql e aktarılması konusunda birkaç problem yaşadım, isteyen olursa üzerinde çalışıp elimden geldiğince onu da hazırlamaya çalışırım.

Kodların satır satır açıklamasını yapmadım. İstek üzerine onu da açıklayabilirim.

 
comments powered by Disqus