Ben kısaca, urlgrabber modulünden bahsedeceğim yazı boyunca. urlgrabber, urllib2 kütüphanesinin daha kullanıcı-dostu şekilde düzenlenmiş ve salt python ile yazılmış hali. yapmak istediğiniz işlemleri daha basitçe ve hızlı bir şekilde yapabiliyorsunuz. klasik olarak ilk önce, "pythontr.blogspot.com" adresine GET isteğinde bulunup kaynak kodlarını alalım:
from urlgrabber import urlopen
pytr = urlopen("http://pythontr.blogspot.com")
veri = pytr.read()
pytr.close()
print veri
kodu çalıştırdığınızda bloğumuzun HTML kaynak kodları ekrana basılacaktır. biraz daha pythonic yazarsak;
from urlgrabber import urlopen
print urlopen("http://pythontr.blogspot.com").read()
basit bir GET isteğinden sonra artık, daha komplike işlemlere geçelim. eğer istek yapacağımız sayfaya sağlıklı bir şekilde girebilmek için çerez yollamamız gerekiyorsa, HTTP_USER_AGENT değiştirmeliysek, ya da başka bir HTTP başlığı değiştirmek istersek ne yapmalıyız?
urlgrabber, bu konuda çok fazla seçenek sunuyor. örneğin HTTP_USER_AGENT bilgisini değiştirmek istediğimizi düşünelim;
from urlgrabber.grabber import URLGrabber
istek = URLGrabber(user_agent = 'pythontr python bot')
sonuc = istek.urlopen("http://pythontr.blogspot.com").read()
sadece 1 parametre eklemiş olmamız yetti. diğer parametrelere bu adresten göz atabilirsiniz.
örnek uygulama
python-challenge.com adresinde python programcılarının pratik yapmaları için seviyelerle hazırlanmış bir site var. python ile ipuçlarını yorumlayıp çözüme ulaşıyorsunuz. o siteden 4.seviyeye bakıyoruz hemen. gördüğünüz üzere. bağlantılara tıklasak bile bir sonuç alamıyoruz, tekrardan başka random bir sayı çıkıyor. anlıyoruz ki, bu işi elle yapmak yorucu olacak.
python ile her seferinde gördüğü bağlantıya istek yapan, gelen sayfaya aynı şekilde bir bağlantı daha varsa yine istek yapan ama yoksa durup, URL adresini veren bir uygulama yapalım. uygulama hem çerez yollasın, hemde regex ile değişiklik var mı yok mu kontrol etsin, duruma göre işlemi durdurup devam edeceğine karar versin.
from urlgrabber.grabber import URLGrabber
import re
def istekYap(sonGelen):
istek = URLGrabber(http_headers = (('info', 'you+should+have+followed+busynothing...'),))
sonuc =istek.urlopen("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="+sonGelen).read()
try:
yeni = re.search("and the next nothing is ([0-9]{1,5})", sonuc).group(1)
print "%s rakami bulundu, yeni istek yapiliyor." % yeni
istekYap(yeni)
except:
print "son uygun rakam: " + sonGelen
istekYap("12345")
özyinelemeli çalışan bu fonksiyon ile, yüzlerce istekten sonra gerçek adrese ulaşıyorsunuz :)
dip notlar
http://linux.duke.edu/projects/urlgrabber/comparison.ptml
http://linux.duke.edu/projects/urlgrabber/help/urlgrabber.grabber.html
http://linux.duke.edu/projects/urlgrabber/examples.ptml
I used to be able to find good info from your content.
YanıtlaSilAlso see my page :: perfumes baratos