urlfetch перенаправлен в бесконечный цикл в python

Я пытаюсь загрузить URL-адрес, который перенаправляет на себя. Я предполагаю, что он загружает файл cookie и ищет его, но он никогда не видит его, поэтому существует бесконечный цикл запросов.

Я пробовал urllib2, urlfetch и httplib2. Ничего не работает.

Я попробовал это:

url = "http://www.cafebonappetit.com/menu/your-cafe/collins-cmc/cafes/details/50/collins-bistro" thing = urllib2.HTTPRedirectHandler() thing2 = urllib2.HTTPCookieProcessor() opener = urllib2.build_opener(thing, thing2) url = 'http://www.nytimes.com/2005/10/26/business/26fed.html?pagewanted=print' page = opener.open(url) 

Это работает в оболочке, но не в Google App Engine. В документации для urlfetch: http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html

в разделе follow_redirects говорится: «Куки-файлы не обрабатываются при перенаправлении. Если требуется обработка файлов cookie, установите follow_redirects в False и обрабатывайте файлы cookie и перенаправляйте вручную».

Я не знаю, как это сделать, и документация, похоже, не дает никаких подсказок.

Я выбрал чертову черту из этой проблемы, и нет никаких сообщений о подобных проблемах, которые могут работать для моей проблемы.

One Solution collect form web for “urlfetch перенаправлен в бесконечный цикл в python”

Немного больше объяснений. Рад, что по крайней мере поведение веб-сайта объяснено: он хочет какой-то cookie, и если cookie не установлен, он перенаправляет себя с заголовком настройки cookie. Вероятно, вам стоит прочитать, как работают cookie; веб-сайт отправляет файл cookie с использованием заголовка Set-Cookie, и браузер должен повторить его обратно (с некоторыми вариантами) в заголовке Cookie. Python имеет библиотеку для управления коллекциями файлов cookie, cookielib, которые помогут вам в этом.

Лучше всего использовать собственный API urlfetch; его возвращаемый объект имеет объект заголовков, который является dict, предоставляющим все заголовки (например, заголовок Set-Cookie). Чтобы отправить определенные заголовки, используйте аргумент заголовков функции urlfetch.fetch (). Здесь вы будете использовать заголовок Cookie (но помните, что формат заголовка Cookie, который вы установили, не совпадает с форматом заголовка Set-Cookie, в котором вы принимаете cookieib.

Удачи!

PS. Используя curl -v, легко увидеть, что на самом деле сайт отправляет три разных заголовка Set-Cookie. Вероятно, вам придется иметь дело со всеми тремя.

  • Python `urlparse`: добавление ключевых слов GET к URL-адресу
  • Каков наилучший способ открыть URL-адрес и получить до X байтов в Python?
  • Django: получение предыдущего URL-адреса
  • Python: Загрузить возвращенный Zip-файл из URL-адреса
  • Прочтите CSV-файл из URL-адреса в Python 3.x - _csv.Error: iterator должен возвращать строки, а не байты (вы открыли файл в текстовом режиме?)
  • Исключение FormDataRoutingRedirect из URL без тренировки слэш
  • Python Найти Вопрос
  • Как передать переменные в django через URL?
  •  
    Interesting Posts for Van-Lav

    Python (List Comprehension): возврат двух (или более) элементов для каждого элемента

    Как использовать форму регистрации вне шаблона / accounts / url с помощью Django-AllAuth?

    «Огонь и забыть» python async / wait

    Как получить исходные переменные после запуска Scikit Model с использованием метода OneHotEncoding

    Отображать справочное сообщение с python argparse, когда скрипт вызывается без каких-либо аргументов

    Более быстрый способ суммировать список чисел, чем с циклом for-loop?

    Разница в последовательности запросов, сгенерированных в Django и Postgres для select_for_update

    печать нескольких списков по вертикали?

    Эффективный способ преобразования строк из функции split в int в Python

    Как явно указать строковое значение (Python DB API / Psycopg2)

    Введите подсказки в namedtuple

    Почему вызов entry.get () дает мне «недопустимое имя команды»?

    Как скомпилировать несколько множественных регулярных выражений за один раз? Это более эффективно? – python

    Может ли python setup.py устанавливать диски?

    Параметры функции печати в sys.settrace в python

    Python - лучший язык программирования в мире.