Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » urllib2 Запросы через разные прокси [RSS Feed]

#1 Сен. 25, 2007 16:36:18

Juster
От:
Зарегистрирован: 2007-02-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib2 Запросы через разные прокси

Здрасивуйте, подскажите как сделать для каждого вызова urllib2.urlopen свой прокси. Юзаю следуещее, как это усовершентсвовать? В доках по либе видел метод set_proxy для Request, но не понял как юзать.

def initproxy():
if PROXY is not None :
proxy_support = urllib2.ProxyHandler( {“http” : PROXY} )
opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
else:
opener = urllib2.build_opener(urllib2.HTTPHandler)
opener.addheaders =
urllib2.install_opener(opener)

request = urllib2.Request(TARGET+self.path, “”, headers)
request.set_proxy(self,PROXY)
objurl = urllib2.urlopen(request)



Офлайн

#2 Сен. 25, 2007 18:25:25

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

urllib2 Запросы через разные прокси

А именно так. Зарегистрировать свой opener. Как именно лучше всего - смотреть нужно отдельно. Твой метод тоже хорош.



Офлайн

#3 Сен. 25, 2007 18:38:10

Juster
От:
Зарегистрирован: 2007-02-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib2 Запросы через разные прокси

Абсолютно согласен, чем меньше кода тем безопасней и быстрее. Только уточнить хотел мне initproxy перед каждым вызовом urllib2.urlopen вызывать? чтобы сменить прокси. Хочу делать запросы на разные прокси и наверно из разных потоков. Как лучше?



Офлайн

#4 Сен. 25, 2007 20:18:10

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

urllib2 Запросы через разные прокси

Так ведь:

_opener = None
def urlopen(url, data=None):
global _opener
if _opener is None:
_opener = build_opener()
return _opener.open(url, data)

def install_opener(opener):
global _opener
_opener = opener

Делай свой opener как обычно, но запоминай его (в потоке, для каждого прокси - как удобней).
А потом всего лишь нужно вызвать opener.open(url_or_request, data=None)
Опять повторю совет - читай исходники!!!



Офлайн

  • Начало
  • » Web
  • » urllib2 Запросы через разные прокси[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version