File "D:\pycharm\crawer\utils\url_manager.py", line 14, in add_new_url self.add_new_urls(url) File "D:\pycharm\crawer\utils\url_manager.py", line 21, in add_new_urls self.add_new_url(url) File "D:\pycharm\crawer\utils\url_manager.py", line 9, in add_new_url if url is None or len(url)==0: RecursionError: maximum recursion depth exceeded while calling a Python object这哪错了
时间: 2023-10-08 15:07:51 浏览: 158
根据错误信息,程序在`add_new_url`方法中发生了递归调用,导致`RecursionError: maximum recursion depth exceeded`错误。
问题出现在`add_new_url`方法中的递归调用`self.add_new_urls(url)`,以及`add_new_urls`方法中的递归调用`self.add_new_url(url)`。由于没有正确地终止递归调用,导致了无限递归,最终超过了Python的最大递归深度。
为了解决这个问题,你需要修改递归调用的方法名,使其与实际的方法名匹配。你可以将`add_new_urls`方法中的递归调用改为`self.add_new_url(url)`,代码应该如下所示:
```python
def add_new_urls(self, urls):
if urls is None or len(urls) == 0:
return
for url in urls:
self.add_new_url(url)
```
同样,你还需要将`add_new_url`方法中的递归调用改为`self.new_urls.add(url)`,代码应该如下所示:
```python
def add_new_url(self, url):
if url is None or len(url) == 0:
return
if url in self.new_urls or url in self.old_urls:
return
self.new_urls.add(url)
```
通过这些修正,应该能够避免递归调用错误,并使代码正常运行。
阅读全文