Skip to content

Instantly share code, notes, and snippets.

@erenhatirnaz
Last active May 30, 2016 06:15
Show Gist options
  • Save erenhatirnaz/bd31490b1a97890e69c4 to your computer and use it in GitHub Desktop.
Save erenhatirnaz/bd31490b1a97890e69c4 to your computer and use it in GitHub Desktop.
Web Crawler Döngüsü
for site in sites: # sites dizisinin içerisinden linkleri tek tek getiriyoruz
if not site in visited: # eğer link visited dizisinin içerisinde yok ise(yani daha önce ziyaret edilmemiş ise):
status, response = http.request(site) # http.request fonksiyonu ile linki GET methodu ile ziyaret ediyoruz ve sitenin bize verdiği status kodunu status; bize verdiği html içerikli cevabı ise response değişkenine atıyoruz.
print("Scanning "+site+": ") # ekrana taradığımız linki yazdırıyoruz
for link in BeautifulSoup(response, parseOnlyThese=SoupStrainer('a')): # sitenin bize verdiği response'un içerisinden tüm a taglarını çekiyoruz(yani tüm linkleri)
if link.has_attr('href'): # ve href attribute'u(özelliği) varmı diye kontrol ediyoruz yani <a href='burada bişey varsa'></a>
url = urljoin(site, link['href']) # linkler site içerisinden /dosyaismi.html şeklinde geldiği için bunun önüne domain eklemek gerekiyor bu nedenle urllib kütüphanesinin urljoin fonksiyonundan yararlanarak düzgün linkimizi oluşturuyoruz
fileExtension = os.path.splitext(url)[1] # url içerisinden dosya türünü alıyoruz
if not url in visited : # ve url daha önce bulunmamış ise
file.write(url+"\n") # links.txt dosyasına yazıyoruz ve
print("\t |-> Founded: "+url) # ekrana bulduğumuz linki yazdırıyoruz
if fileExtension in ['.html','.htm'] and not url in founded: # sonrasında dosya uzantısının html yada htm olup olmadığını ve daha önce bulunup bulunmadığını kontrol ediyoruz eğer html yada html ise ve daha önce bulunmamış ise:
sites.append(url) # sites dizisine ekliyoruz
founded.append(url) # ve founded dizisine ekliyoruz
visited.append(site) # son olarak linkimizi de ziyaret edilmiş linkler arasına ekliyoruz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment