Как я предотвращаю urllib Python (2) от следующего перенаправление

Самый элегантный способ добиться того, что вы ищете в Objective-C с подклассами NSObject, это переопределить метод NSObject description.

Например (если ваш класс имеет свойство, называемое propertyX):

-(NSString *)description
{
  return [NSString stringWithFormat:@"",
                 [self objectID], [self propertyX].x, [self propertyX].y];
}

Реализация description по умолчанию description будет просто возвращать адрес памяти, указанный для объекта, например:

NSLog(@"%@", self);

2015-06-15 14: 20: 30.123 AppName [...] myCustomObject: 0x000000>

blockquote>

Однако, переопределив этот базовый метод класса, как показано выше, вы вы можете настроить это поведение, и журнал будет выглядеть следующим образом:

2015-06-15 14: 20: 30.123 AppName [...] myCustomObject: 0x000000 someProperty, Свойство: blah, blah>

blockquote>

Существует хороший учебник, в котором обсуждаются следующие здесь .

47
задан Jack Edmonds 16 February 2009 в 20:29
поделиться

3 ответа

Вы могли сделать несколько вещей:

  1. Сборка Ваш собственный HTTPRedirectHandler, который прерывает каждое перенаправление
  2. , Создает экземпляр HTTPCookieProcessor и установки, что новичок так, чтобы у Вас был доступ к cookiejar.

Это - быстрая небольшая вещь, которая показывает оба

import urllib2

#redirect_handler = urllib2.HTTPRedirectHandler()

class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
    def http_error_302(self, req, fp, code, msg, headers):
        print "Cookie Manip Right Here"
        return urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)

    http_error_301 = http_error_303 = http_error_307 = http_error_302

cookieprocessor = urllib2.HTTPCookieProcessor()

opener = urllib2.build_opener(MyHTTPRedirectHandler, cookieprocessor)
urllib2.install_opener(opener)

response =urllib2.urlopen("WHEREEVER")
print response.read()

print cookieprocessor.cookiejar
33
ответ дан pope 7 November 2019 в 23:24
поделиться

urllib2.urlopen вызовы build_opener(), который использует этот список классов обработчика:

handlers = [ProxyHandler, UnknownHandler, HTTPHandler,
HTTPDefaultErrorHandler, HTTPRedirectHandler,
FTPHandler, FileHandler, HTTPErrorProcessor]

Вы могли попытаться звонить urllib2.build_opener(handlers) сами со списком, который опускает HTTPRedirectHandler, затем звоните open() метод на результате для открытия URL. Если Вам действительно не нравятся перенаправления, Вы могли бы даже позвать urllib2.install_opener(opener) своего собственного новичка неперенаправления.

Это кажется, что Ваша настоящая проблема состоит в том, что urllib2 не делает cookie путем, Вы хотели бы. См. также , Как использовать Python, чтобы войти в веб-страницу и получить cookie для более позднего использования?

12
ответ дан Community 7 November 2019 в 23:24
поделиться

Этот вопрос задали прежде здесь .

РЕДАКТИРОВАНИЕ: , Если необходимо иметь дело с изворотливыми веб-приложениями, необходимо, вероятно, испытать , механизируют . Это - большая библиотека, которая моделирует веб-браузер. Можно управлять перенаправлением, cookie, обновлениями страницы... Если веб-сайт не положится [в большой степени] на JavaScript, то Вы будете ладить очень приятно с, механизируют.

3
ответ дан Community 7 November 2019 в 23:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: