【发布时间】:2011-03-13 01:27:19
【问题描述】:
我正在尝试这个简单的代码,但是该死的 break 不起作用……出了什么问题?
while True:
for proxy in proxylist:
try:
h = urllib.urlopen(website, proxies = {'http': proxy}).readlines()
print 'worked %s' % proxy
break
except:
print 'error %s' % proxy
print 'done'
它应该在连接工作时离开,如果没有,则返回并尝试另一个代理
好的,这就是我正在做的事情
我正在尝试检查一个网站,如果它发生了变化,它必须中断一段时间才能继续执行脚本的其余部分,但是当代理未连接时,我从变量中得到错误,因为它是空的,所以我想要的是这个作为循环工作来尝试代理,如果它工作,继续脚本,脚本结束,返回并尝试下一个代理,如果下一个不起作用, 会回到最开始尝试第三个代理,以此类推....
我正在尝试这样的事情
while True:
for proxy in proxylist:
try:
h = urllib.urlopen(website, proxies = {'http': proxy})
except:
print 'error'
check_content = h.readlines()
h.close()
if check_before != '' and check_before != check_content:
break
check_before = check_content
print 'everything the same'
print 'changed'
【问题讨论】:
-
你知道
break也会跳出for循环。所以你的break不会跳出 while 循环,它会跳出直接 for 循环。 -
你永远不应该使用裸
excepts!捕获特定错误总是更好!
标签: python while-loop