在使用python抓取网络内容的时候,如遇网络问题常常需要重复提交,而不是简单退出。考虑到重用性,可利用python装饰器实现。
class retry(object):
def __init__(self,*,times):
self._cnt=times
def __call__(self,func):
def wrapper(*args,**kw):
data=None
cnt=self._cnt
while data==None and cnt>0:
data=func(*args,**kw)
cnt-=1
return data
return wrapper
装饰器接收times参数,可控制重复次数,如果函数返回None则重复执行,否则返回结果。
封装请求函数:
@retry(times=3)
def getUrl(url):
try:
return requests.get(url,timeout=60)
except requests.exceptions.ConnectionError:
return None
except requests.exceptions.ConnectTimeout:
return None
except requests.exceptions.Timeout:
return None
如果希望终止重复,则可以直接抛出异常。
来源:CSDN
作者:maidou0921
链接:https://blog.csdn.net/maidou0921/article/details/78553976