urlopen()上的Python urllib2多个try语句

时间:2010-05-26 21:59:59

标签: python urllib2

所以,我希望能够在一个URL列表中运行for,如果一个失败,那么我想继续尝试下一个。

我尝试过使用以下内容但遗憾的是,如果第一个网址不起作用,它会抛出异常。

servers = ('http://www.google.com', 'http://www.stackoverflow.com')
for server in servers:
    try:
        u = urllib2.urlopen(server)
    except urllib2.URLError:
        continue
    else:
        break
else:
    raise

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

servers = ('http://www.google.com', 'http://www.stackoverflow.com')
for server in servers:
    try:
        u = urllib2.urlopen(server)
    except urllib2.URLError:
        continue
    else:
        break
else:
    raise

如果网址连接没有引发错误(else: break部分),则此代码会突破循环。

如果第一个失败,您是否希望第二个仅使用

编辑:我认为for循环之后的else:应该raise,因为break,但是在我的快速测试中没有用...因为我对for/else的理解是错误的

答案 1 :(得分:0)

所以问题结果是用户错误。我正在尝试像“wegwegwe.com”这样的愚蠢域名,但我从未真正在列表中拥有一个可用的域名,所以最终它只是提出了例外。

用户错误。