Веб-сканер работает вечно - PullRequest
1 голос
/ 30 октября 2019

Я написал веб-сканер, который должен сканировать все гиперссылки под одним доменным именем. Я попробовал это с очень простой веб-страницей, она работала, но когда я пробовал сложный веб-сайт, он работал в течение двух часов.

Может кто-нибудь помочь взглянуть на основную функцию, посмотреть, есть личто не так?

def crawler(url):                                                                   

    visited = set()
    storedlinks = set()
    visited.add(url)                                                            
    if linkchunk in url:
        storedlinks.add(url)
        print(url)

    links = analyze(url)                                                            

    for link in links:                                                              
        if link not in visited:                                                     
            try:                                                                    
                crawler(link)
            except:                                                                 
                pass

    return storedlinks

1 Ответ

0 голосов
/ 30 октября 2019

Каждая итерация вашей рекурсивной функции будет иметь новый набор visited и storedLinks, поэтому у вас будет пустой набор для вызова evey.

Я думаю, что перемещение посещенных и сохраненных ссылок за пределысфера действия должна помочь вам.

visited = set()
storedLinks = set()

def crawler(url): 
    visited.add(url)
    if linkchunk in url:
        storedLinks.add(url)
        print(url)
        links = analyze(url)
        for link in links:
            if link not in visited:
                try: crawler(link)
            except:
                pass
    return storedLinks

...