2015-06-06 1 views
2

При этом следующее:Как получить оригинальный URL из запросов

>>> res=requests.get('http://www.hulu.com/return-of-the-one-armed-swordsman') 
>>> res.url 
u'http://www.hulu.com/watch/800769' 

Как бы я получить оригинальный URL, который был вызван из res. То есть, как бы я получил объект res для возврата http://www.hulu.com/return-of-the-one-armed-swordsman?

ответ

8

requests хранит историю запросов переадресацией ... Возьмите первый элемент из этого ...

import requests 

res=requests.get('http://www.hulu.com/return-of-the-one-armed-swordsman') 
res.url 
# http://www.hulu.com/watch/800769 
res.history[0].url 
# http://www.hulu.com/return-of-the-one-armed-swordsman 

Примечание - вы можете обслуживать, где не произошло ни одного перенаправления, например:

url = res.history[0].url if res.history else res.url 

Конечно, иначе вы должны просто сохранить свой URL в переменной и передать это requests.get - тогда вы знаете, что вы просили начать с ...

+0

Я думаю, что я бы предпочел '(res.h istory + [res]) [0] .url'. –

+0

@Stefan уверен, или даже '(res.history или [res]) [0] .url', чтобы избежать конкатенации списков, если вы действительно хотите спуститься по этому маршруту, но это не так просто понять как« условное, если "синтаксис (imho в любом случае) –

+0

Хм, да, но это теряет смысл для меня. Я нахожу 'res.history + [res]' довольно ясным, это просто полная история. –