Dönem projesi çalışmalarımın sürdüğü şu günlerde yine uzun zamandır yazı yazmadığımı fark ettim. 15 ay olmuş blog sahibi olalı bu uzun bir süre yazmaya alışmak için ama alışamadık vesselam
Dönem projen de nedir diyenler olmuştur belki (?) açıklayayım sizi meraka teşvik edecek değilim . Hoşlandığım bir alan olduğunu fark etmem sonucu ve hazırlamayı düşündüğüm uygulama için temel olacak “Veri madenciliği” hakkında bir kaynak hazırlama. İkinci dönem uygulamaya dökeceğim kısmetse
. Neyse konuyu bu kadar saptırmak yeterli sanırım
.
Python Python Python…
Ya ben sana ne diyebilirim ki bir dil anca bu kadar güzel bu kadar mı kendini sevdirir sahibine. Bugün anlaşılan garip garip cümleler yazacağım, alışık değilsiniz ama arada olur sanırım bu tarz tuhaflıklar.
Sevgili arkadaşım Talat‘ın bana sunduğu html çözümleme kütüphanesinden size biraz bahsedeceğim. Pythonda htmlparsing modül sayısı baya bir fazladır. Bizim kullandındığımız htmldata kütüphanesidir.
Bu kütüphane ile en basitinden açılan linkin (urllib2 modulu ile açıp içeriğini okudğumuz ve gerektiğinde kodlamasını değiştirdiğimiz veri ) içeriği verildiğinde çeşitli şekillerde kaynak koduna erişebiliyorsunuz. Ben neden bu konuya geldim hemen açıklayayım xml sayfasını çözümlemem gerekiyordu pythonda xml parsing modülüde var elbetteki. Ancak benim inceleyeceğim şey 3-4 satırlık bir şeydi python-xml i olaya hiç karıştırmadan htmldata yardımıyla almam gereken verileri alabiliyorum.
htmldata ile ilgili olarak daha önce bir soru üzerinde hazırladığım kodu buraya koyuyorum. Verilen bir url yi çözümleyip “a href” tagındaki url değerlerini ekrana yazdıran basit bir program.
# -*- coding: utf-8 -*-
#**************************
# ornek calisma
#**************************
import htmldata
import urllib2
if __name__== “__main__”:
#kaynak kodu alinacak url
url= “http://www.connellybarnes.com/code/htmldata/”
req = urllib2.Request(url)
#url icerigi contents degerine aktariliyor
contents = urllib2.urlopen(req).read()
#htmldata modulu ile kaynak kod taglara parcalaniyor
# L= dizi, tag iceren L[indis] de bir dizi
#karakter kodlamasi sorunu olursa sayfa kodlamasini alip istedigin kodlama turune cevirebilirsin
# bu durumda tagextract() metotdunda kodlanmis halini parametre olarak gonderirsin
#u = unicode(contents, encoding=”iso-8859-9″) # sayfa karakter kodlamasi
#us= u.encode(”utf-8″) # yeni karakter kodlaman
L = htmldata.tagextract(contents)
for satirno in range(len(L)):
#L[satirno] dizisinin ilk elemani a ve bu string href takisi iceriyor mu
# orrnek L[satirno]= (’a', {’href’: ‘http://www.connellybarnes.com/’})
# ornekte goruldugu uzere tagin parametreleri sozluk olarak tanimlanmis
# href => L[satirno] dizisinin ikinci elemaninin alt indisidir
if L[satirno][0] == “a” and str(L[satirno]).find(”href”) != -1:
print L[satirno][1]["href"] # ile href degerini basiyoruz
Not: girintiler belli olmuyor c/p yaparken girintilere dikkat ederseniz sizin için iyi olur
htmldata için bıraktığım linkten htmldata.py yi indirip program dizininde yer alması gerekmektedir sadece. htmldata.py yi inceleyerek ve verilen linkteki metotları incelerseniz neler yapabileceğinize şahit olacaksınız . Python ve güzellikleri konulu ilk yazım bu olsun öncekileri değiştirmeyeyim şimdi:). Ondaki güzellikler bitmez ben keşfettikçe size yazacağım umarım bu kadar geç olmaz (htmldata yı yaklaşık 10 ay önce öğrendim).