3

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

我的问题是关于 urllib2 库,它是 urlopen 函数。目前我正在使用它从另一台服务器加载大量页面(它们都在同一个远程主机上)但是脚本时不时地被超时错误杀死(我假设这是来自大请求)。

有没有办法让脚本在超时后继续运行?我希望能够获取所有页面,所以我想要一个脚本,它会一直尝试直到它得到一个页面,然后继续。

附带说明一下,保持与服务器的连接是否有帮助?

4

2 回答 2

2

下次发生错误时,请记下错误消息。最后一行会告诉你异常的类型。例如,它可能是一个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
于 2010-08-18T18:03:54.907 回答
1

urllib2 缺失的手册可能会对您有所帮助

于 2010-08-18T18:13:03.363 回答