Для академичности и производительности, учитывая эту рекурсивную функцию сканирования в Интернете (которая сканирует только в пределах данного домена), какой будет лучший подход, чтобы сделать его итеративным? В настоящее время, когда он работает, к моменту его завершения Python использует более 1 ГБ памяти, что неприемлемо для работы в общей среде.
def crawl(self, url):
"Get all URLS from which to scrape categories."
try:
links = BeautifulSoup(urllib2.urlopen(url)).findAll(Crawler._match_tag)
except urllib2.HTTPError:
return
for link in links:
for attr in link.attrs:
if Crawler._match_attr(attr):
if Crawler._is_category(attr):
pass
elif attr[1] not in self._crawled:
self._crawled.append(attr[1])
self.crawl(attr[1])