我写了一个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
递归函数的每次迭代都将有一组新的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