Web搜寻器永远运行

问题描述 投票:1回答:1

我写了一个Web搜寻器,该搜寻器应该通过一个域名下的所有超链接进行搜寻。我使用一个非常简单的网页进行了尝试,但是可以正常工作,但是当我尝试使用一个复杂的网站时,它运行了两个小时。

有人可以帮忙看看主要功能,看看是否有什么问题吗?

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
python recursion web-crawler infinite-loop
1个回答
0
投票

递归函数的每次迭代都将有一组新的visitedstoredLinks,因此您将有一个空的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

© www.soinside.com 2019 - 2024. All rights reserved.