我对 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
urllib2 缺失的手册可能会对您有所帮助