Я использую метод urllib2.urlopen
, чтобы открыть URL-адрес и получить разметку веб-страницы. Некоторые из этих сайтов перенаправляют меня, используя перенаправления 301/302. Я хотел бы узнать конечный URL, к которому я перенаправлен. Как я могу получить это?
Как я могу получить окончательный URL-адрес перенаправления при использовании urllib2.urlopen?
Ответ 1
Вызвать метод .geturl()
возвращаемого файлового объекта. На urllib2
docs:
geturl()
- вернуть URL-адрес извлеченного ресурса, который обычно используется для определения того, было ли выполнено повторное перенаправление
Пример:
import urllib2
response = urllib2.urlopen('http://tinyurl.com/5b2su2')
response.geturl() # 'http://stackoverflow.com/'
Ответ 2
Возвращаемое значение urllib2.urlopen
имеет метод geturl()
, который должен возвращать действительный (то есть последний переназначенный) URL.
Ответ 3
например.:
urllib2.urlopen('ORIGINAL LINK').geturl()
urllib2.urlopen(urllib2.Request('ORIGINAL LINK')).geturl()
Ответ 4
Вы можете использовать HttpLib2
с follow_all_redirects = True
и получить content-location
из заголовков ответов. См. мой ответ на "httplib не получает все коды переадресации" для примера.