Python urllib2 多次尝试 urlopen()

0 投票
2 回答
1829 浏览
提问于 2025-04-15 23:13

简单来说,我想要对一系列网址进行循环处理,如果其中一个网址出错了,我希望能继续尝试下一个网址。

我试过下面的代码,但可惜的是,如果第一个网址不行,就会报错。

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
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:应该会因为break而触发错误,但我做了个简单测试发现并不是这样……因为我对for/else的理解有误

0

所以问题其实是用户操作错误。我在尝试一些奇怪的域名,比如“wegwegwe.com”,但我列表里根本没有一个能用的域名,结果最后就出现了错误。

就是用户操作的问题。

撰写回答