Hocam kodlarınızı biraz düzenledim. Kodlarınızı
fonksiyon ve
class yapılarını kullanarak yazmanız, koların anlaşılırlığı arttıracak ve sonradan yapacağınız değişiklikler açısından büyük kolaylık sağlayacaktır.
Son olarak bu tür çoklu işlemleri yaparken
thread kullanmanız çok büyük bir verim sağlayacaktır. İyi çalışmalar.
#-*- coding: utf-8 -*-
from urllib import *
from urlparse import urljoin
from bs4 import BeautifulSoup
def Info(url):
try:
site = urlopen(url)
html = site.read()
except:
return 'Bağlantı Hatası'
soup = BeautifulSoup(html)
title = soup.title.string
desc = soup("meta", {"name":"description"})[0]['content']
tags = soup.findAll('a', href=True)
return (title, desc, tags)
def Scan(url):
urls = [url]
visited = [url]
while len(urls) > 0:
url = urls[0]
info = Info(url)
if type(info) == type('str'):
print info
return
print 'Title: ' + info[0]
print 'Description: ' + info[1]
print '~'*20
urls.remove(url)
tags = info[2]
for tag in tags:
tag['href'] = urljoin(url, tag['href'])
if url in tag['href'] and tag['href'] not in visited:
urls.append(tag['href'])
visited.append(tag['href'])
if __name__ == '__main__':
while True:
url = raw_input('URL: ')
Scan(url)