Как я могу получить окончательный URL перенаправления при использовании urllib2.urlopen? - PullRequest
19 голосов
/ 24 августа 2010

Я использую метод urllib2.urlopen, чтобы открыть URL-адрес и получить разметку веб-страницы.Некоторые из этих сайтов перенаправляют меня с помощью перенаправлений 301/302.Я хотел бы знать окончательный URL, на который я был перенаправлен.Как я могу получить это?

Ответы [ 4 ]

33 голосов
/ 24 августа 2010

Вызвать метод .geturl() возвращаемого объекта файла. Согласно urllib2 документам :

geturl() - возвращает URL-адрес полученного ресурса, обычно используемого для определения, был ли выполнен редирект

Пример:

import urllib2
response = urllib2.urlopen('http://tinyurl.com/5b2su2')
response.geturl() # 'http://stackoverflow.com/'
4 голосов
/ 24 августа 2010

Возвращаемое значение urllib2.urlopen имеет метод geturl(), который должен возвращать фактический (т.е. последний редирект) URL.

1 голос
/ 11 июля 2015

Например: urllib2.urlopen('ORIGINAL LINK').geturl()

urllib2.urlopen(urllib2.Request('ORIGINAL LINK')).geturl()

0 голосов
/ 23 июля 2012

Вы можете использовать HttpLib2 с follow_all_redirects = True и получить content-location из заголовков ответов. См. мой ответ 'httplib не получает все коды перенаправления' для примера.

...