Как реализовать подключение по разным прокси через urllib.request.urlopen?

Есть ф-я:
def get_html(url): 
  try:
    response = urllib.request.urlopen(url).read()
  except:
    print('get error')
    response = '0'
  return response


В случае ошибки подключения, нужно переподключиться через другой прокси. Как это сделать? И как вообще задавать и вызывать прокси из списка?
  • Вопрос задан
  • 1066 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Можно так например:
import urllib2
import random

http_proxies = ['http://proxy1.com', 'http://proxy2.com', 'http://proxy3.com', ... ]

need_receive_data = True
while need_receive_data:
   try:
        random_proxy = random.choice(http_proxies)
        print 'Trying {proxy}'.format(proxy=random_proxy)
        proxy_handler = urllib2.ProxyHandler({'http': random_proxy })
        proxied = urllib2.build_opener(proxy_handler)
        proxied.open('http://какой-то сайт')
    except urllib2.HTTPError, e:
        print 'Error {err}'.format(err=str(e))
    else:
        need_receive_data = False
print proxied.read()


написано наспех и не проверено, но смысл, думаю, - ясен
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы