python 3请求try-except失败

时间:2015-05-18 09:46:10

标签: python-3.x python-requests try-except

我有一个程序从网站下载页面,查找其中的图片链接并下载这些图片。如果我尝试在具有快速和稳定的互联网连接的计算机上运行此程序 - 一切都可以正常工作数天和数周。但是,如果我在具有缓慢或不稳定的Internet连接的计算机上尝试此程序 - 我有一个问题 - “try-except”模块似乎无法正常工作。

---此功能下载内容 - 任何内容(页面或图片)

def downl(self,addr,cook,head2,errmess):
    global result
    try:
        result=requests.get(addr, cookies=cook, headers=head2)
    except:
        print(errmess) # error message
        time.sleep(5)
    return result

我发送到此功能链接到该页面,然后其他功能在该页面中查找picture_link,然后我发送到相同的功能(downl)picture_link。在此之后,我将函数(downl)的结果保存为.jpg文件。正如我所说 - 在具有正常互联网连接的计算机上,一切正常。因此,我的硬盘上有5张,10张或5000张图片。

但是,让我举一些关于互联网连接不良的例子。假设我们每页有2页和1张图片。

step 1) downloading 1st page (def downl)
step 2) taking picture_link from it
step 3) downloading picture (def downl)
step 4) saving 1st picture to hdd 1.jpg
step 5) downloading 2nd page (def downl)
step 6) taking picture_link from it
step 7) downloading picture (def downl) and receivind error message (errmess)
step 8) saving 2nd picture to hdd 2.jpg

仅举例:第一张图片可能是正常的jpg,内容合适。第二张图片将是jpg扩展名的文件,但是会有第二页作为内容(这将是通常的html文件,保存错误的扩展名为“jpg”)

另外一句话:在第二张图片的下载过程中出现了互联网问题,程序打印了一个关于它的错误(错误),但是COUNSTESS的INSTEAD重试(在我的函数中假设)它通过try-except块以某种方式通过并返回上一个结果(第2页),保存为第2张图片。

请帮忙!如何使这个尝试 - 除了(或请求)工作FOREVER,UNTILL它下载应该下载的内容(无论互联网连接发生什么错误),而不是通过以前的结果。

非常感谢你的时间和关注。

1 个答案:

答案 0 :(得分:1)

然后你需要一个像这样的True循环:

def downl(self,addr,cook,head2,errmess):
    global result
    while(True):
        try:
            result=requests.get(addr, cookies=cook, headers=head2)
            return result
        except:
            print(errmess) # error message
            time.sleep(5)