Я пробую этот простой код, но проклятое повреждение не работает... что не так?
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'
Вы просто выходите из цикла for
, а не из цикла while
:
running = True
while running:
for proxy in proxylist:
try:
h = urllib.urlopen(website, proxies = {'http': proxy}).readlines()
print 'worked %s' % proxy
running = False
except:
print 'error %s' % proxy
print 'done'
Вы выходите только из цикла for
, поэтому вы никогда не покидаете цикл while и не перезапускаете итерацию по proxylist
снова и снова. Просто опустите окружающий цикл while, я вообще-то не понимаю, почему вы в первую очередь заключили код в , а True
.
break разрывает самый внутренний цикл, которым в вашем случае является цикл for
. Чтобы выйти из более чем одного цикла, у вас есть несколько вариантов:
return
но в вашем случае вам вообще не нужен внешний цикл while
. Просто удалите его.