Python异常重试retry,轻松解决爬虫过程中遇到的异常

接触这个包最初是因为爬虫过程中,经常会碰到各种反爬虫,或者是网络连接异常,导致爬虫受阻。这个时候,我一般写一个回调函数,当程序抛出异常的时候,让程序休息几秒钟,重新运行爬虫若干次。

import time

# 爬虫代码,这里没有写中间过程
def spider():
  xxx

for i in range(5):
  try:
    spider()
    break
  except:
    time.sleep(2)

这种方法明显不符合Python的简介风格,我在网上找了一下,果然找到了一个神奇的包——retry,正如它的名字,retry是用来实现重试的。

from retry import retry

@retry(tries=5, delay=2)
# 爬虫代码,这里没有写中间过程
def spider():
    xxx

spider()

使用retry实现这个功能,循环次数与delay时间都可以很方便定制,如果你不指定tries与delay,那么相当于加了一个死循环。在括号里还可以添加异常捕获的类型,具体使用方法,可以参考retry的github页面:https://github.com/invl/retry 

这种写法明显简介多了,调试起来也变得非常容易。

The End


已发布

分类

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注