2016-05-06 2 views
0

Я выполнил несколько других вопросов в SO, чтобы найти окончательный URL-адрес перенаправления, однако для следующего URL-адреса я не могу выполнить перенаправление. Он не перенаправляется и остается на tinyurl.Найти крошечный url final перенаправленный url

import urllib2 
def getFinalUrl(start_url): 
     var = urllib2.urlopen(start_url) 
     final_url = var.geturl() 
     return final_url 


url = "http://redirect.tinyurl.com/api/click?key=a7e37b5f6ff1de9cb410158b1013e54a&out=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fprofile%2FA3B4EO22KUPKYW&loc=&cuid=0072ce987ebb47328d22e465a051ce7&opt=false&format=txt" 
redirect = getFinalUrl(url) 
print "redirect: " + redirect 

результат (который не является окончательным URL, если вы попробуете в браузере):

redirect: http://redirect.tinyurl.com/api/click?key=a7e37b5f6ff1de9cb410158b1013e54a&out=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fprofile%2FA3B4EO22KUPKYW&loc=&cuid=0072ce987ebb47328d22e465a051ce7&opt=false&format=txt 
+0

ваш url уже имеет адрес назначения .... – taesu

+1

Вам нужно javascript для перенаправления, распечатайте html, и вы увидите, что мы * не можем автоматически перенаправить вас, потому что JavaScript недоступен. * –

+0

@taesu, если вы попробуете его в браузере, он будет перенаправлен. – apadana

ответ

2
import urlparse 
url = 'http://redirect.tinyurl.com/api/click?key=a7e37b5f6ff1de9cb410158b1013e54a&out=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fprofile%2FA3B4EO22KUPKYW&loc=&cuid=0072ce987ebb47328d22e465a051ce7&opt=false&format=txt' 
try: 
    out = urlparse.parse_qs(urlparse.urlparse(url).query)['out'][0] 
    print(out) #http://www.amazon.com/gp/profile/A3B4EO22KUPKYW 
except Exception as e: # dont catch all 
    print('not found') 

Этот вид URL не должен быть свернуты, чтобы выяснить, что адресат/redirect url - это хорошо, потому что вы УЖЕ имеете их в своем URL-адресе.


Если адресат/URL переадресации не отображается, как этот парень

tinyurl.com/xxxx

то, что это совсем другая история, вы должны свернуться его узнайте, что он разрешает/304, как показано ниже:

import requests 
url = 'http://urlshortener.com/applebanana' 
t = requests.get(url) 
print(t.url) 
+0

Спасибо за ваш ответ. Он работает в этом конкретном случае, однако у меня есть тонна перенаправляемых URL-адресов, которые я не знаю, будет ли она крошечной или нет, поэтому я ищу более общее решение, так что мне не нужно разбирать URL-адрес. В любом случае спасибо за ваш ответ. На данный момент я могу добавить условие if для разбора и поиска этого url таким образом. Спасибо за Ваш ответ! – apadana

+0

Существует не общий способ решения проблемы, когда ваш ввод несовместим. Он должен будет обнаружить шаблон url и использовать применимую функцию для решения. – taesu

+0

Если я использую браузер с селеном, я могу последовательно находить URL-адреса. Проблема в том, что urllib2 не может перенаправляться. Как-то он обнаруживает, что мой запрос не поступает из браузера, и он дает html-страницу ошибки в ответе. – apadana

Смежные вопросы