我对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