python - python,当调用函数x次时,递归限制错误

标签 python recursion

我有一些代码可以从互联网获取一些资源,如下所示:

def ScrapeFromUrl(url):
    with urllib.request.urlopen(url) as response:
        html = response.read()
        urlToFile('main', html.decode('utf-8'))
        webSoup = BeautifulSoup(html, 'html.parser')
        mainContent = webSoup.find("div", { "id" : "main" })
        generalImdbData['nextPageUrl'] = mainContent.findChildren()[0].findChildren()[2].find('a').get('href')
        generalImdbData['totalResults'] = int(re.search( r'(\d+)(?!.*\d)', mainContent.findChildren()[0].findChildren()[2].span.contents[0]).group(1)) 
        generalImdbData['loadedResults'] = int(re.search( r'\-(\d+)', mainContent.findChildren()[0].findChildren()[2].span.contents[0]).group(1))

        actorsContainer = mainContent.findAll("div", {"class": "lister-list"})[0]
        for actor in actorsContainer.findAll("div", {"class": "lister-item"}):
            SearchResultsToActorObjects(actor)

        urlToFile('data', str(mainContent))
        GoToNextPageUrl(generalImdbData['loadedResults'], generalImdbData['nextPageUrl'])

def GoToNextPageUrl(loadedResultsCount, nextUrl):
    if loadedResultsCount >= generalImdbData['totalResults']:
        for a in actorObjectList:
            a.printActor()
            a.insertIntoDB()
        actorObjectList.clear()
    else: 
        for a in actorObjectList:
            a.printActor()
            a.insertIntoDB()

        actorObjectList.clear() 
        ScrapeFromUrl(generalImdbData['baseUrl'] + nextUrl)

函数被这样调用:

ScrapeFromUrl(generalImdbData['originalSearchUrl'])

但我遇到的问题是这些函数被调用了大约 50k 次。所以我得到了这个递归限制错误。

如何防止这种情况发生?

最佳答案

ScrapeFromUrl() 调用 GoToNextPageUrl(),后者又调用 ScrapeFromUrl(),后者又调用 GoToNextPageUrl()等等等等等等

这会创建无限递归。

您需要重新组织代码,以便函数不会无休止地相互调用。

关于python - python,当调用函数x次时,递归限制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611264/

相关文章:

python - 我无法修复的 Pygame2Exe 错误

python Pandas : Split a time series per month or week

java - 二分查找 树查找返回 Null

java - 我该如何着手弄清楚这个复杂的递归算法?

json - 如何将庞大的 Elisp 数据结构转换为 JSON?

python - 使用随机选择函数时出现错误

python - PyQt 如何在 closeEvent 中获取发件人(小部件)?

python - 在 Python 中递归求解数学方程

python - python 3.x 中的递归 is_prime 函数

python - 为什么 Python 3 中不再提供编译器包?