在Python的urllib2 urlopen中检测超时错误

我对Python还是比较陌生,因此,如果这是一个明显的问题,我深表歉意.

我的问题是关于urllib2库,它是urlopen函数.目前,我正在使用它从另一台服务器(它们都在同一远程主机上)加载大量页面,但是该脚本有时会因超时错误而被终止(我认为这是来自大型请求).

有没有办法让脚本在超时后保持运行?我希望能够提取所有页面,所以我想要一个脚本,该脚本将一直尝试直到获取页面,然后继续前进.

顺便说一句,保持对服务器开放的连接会有帮助吗?

解决方法:

下次发生错误时,请记下错误消息.最后一行将告诉您异常的类型.例如,它可能是urllib2.HTTPError.一旦知道引发的异常类型,就可以在try … except块中捕获它.例如:

import urllib2
import time

for url in urls:
    while True:
        try:
            sock=urllib2.urlopen(url)
        except (urllib2.HTTPError, urllib2.URLError) as err:
            # You may want to count how many times you reach here and
            # do something smarter if you fail too many times.
            # If a site is down, pestering it every 10 seconds may not
            # be very fruitful or polite.
            time.sleep(10)
        else:              
            # Success  
            contents=sock.read()
            # process contents
            break                # break out of the while loop
上一篇:PySocks 代理服务和urllib urlopen 请求https


下一篇:Python3学习笔记(urllib模块的使用)