我有一个脚本可以递归地分析链接中的 javascript,所以如果它找到一个 javascript,它就会分析该 javascript,如果它正在分析的 javascript 包含更多的 javascript,它就会继续分析,依此类推。但是,我遇到了这个递归永远不会停止的问题,有没有办法为这个递归添加超时?
请您参考如下方法:
Python 有一个内置的递归限制,如果超过这个限制将引发 RuntimeError。默认情况下,它的堆栈限制是 1000。所以:
try:
func_that_may_recurse_infinitely() # i.e., your JavaScript crawler func
except RuntimeError as e:
if "recursion" in str(e):
print "stop all the downloadin'!"
如果您需要更深或更浅,您可以使用 sys.setrecursionlimit() 修改初始递归限制。
但是,更好的方法可能是保留您已经看到的项目的 set() 并简单地拒绝处理您已经处理过的任何项目。这可以防止您首先陷入递归情况。
