超时后继续尝试请求

时间:2017-11-23 02:35:28

标签: python web-scraping

我刚开始使用Python来抓取数据。但是我的代码如下所示在工作期间冻结,我猜这是因为某些网址没有响应任何内容;我想如果我再试一次这个网址会有用。我的问题是,如果我只修改代码, reshomee = requests.get(homeUrl,headers = headerss,timeout = 10) 然后这段代码在10秒后再次尝试该URL而没有响应?我只是担心如果不再尝试就会结束......? 我忍不住问这个,因为我不知道如何尝试这个代码,因为url冻结非常罕见和随机。谢谢!

def reshome(tries=0):
    try:
         reshomee = requests.get(homeUrl, headers=headerss)
         return reshomee
    except Exception as e:
         print(e)
         if tries < 10:
            print('try:' + str(tries))
            sleep(tries*30+100)
            return reshome(tries+1)
         else:
            print('cannot make it')

1 个答案:

答案 0 :(得分:0)

您可以在模块中使用requests.exceptions。

def reshome(tries=0):
try:
     reshomee = requests.get(homeUrl, headers=headerss, timeout=0.001)
     return reshomee
except requests.exceptions.Timeout as e:
        return reshome(tries+1)