【发布时间】:2022-01-19 06:46:30
【问题描述】:
我正在开发一个有两个类的网络抓取工具。一个获取数据,另一个类处理它。第一个类的最终结果是一个元素列表,例如results = [1, 2, 3, 4, 5, ...] 。问题是有时,由于服务器端错误,列表可能为空。如何循环遍历此过程以重新启动该过程,直到列表不为空?
我有点像这样解决了它。但我不确定这是有效还是好的做法。
class DataScrapper:
def __init__(self):
...
def getData(self):
self.results = []
while not self.results:
...
return self.results
这是解决问题的pythonic方法吗?还有其他更有效的方法吗?非常感谢。
【问题讨论】:
-
这似乎更像是一个商业逻辑,而不是python技术问题。
-
如果
...是服务器端调用,由于对服务器的请求过多,这可能会将您列入黑名单。您最好接受空列表并将其作为回报 - 或引发异常。 -
这似乎是一个很好且明确的方法。您可能希望在尝试之间添加延迟和最大尝试次数,但这看起来不错。
-
看看这个来自 AWS 的简短 API 指南(建议我上面的评论者的建议):docs.aws.amazon.com/general/latest/gr/api-retries.html
-
谢谢大家!在重构代码时,我会牢记这一点。非常感谢!!