Python: конвертировать эти TinyURL (bit.ly, tinyurl, ow.ly) в полные URL-адреса - PullRequest
13 голосов
/ 14 апреля 2009

Я только изучаю Python и интересуюсь, как это можно сделать. Во время поиска ответа я наткнулся на эту услугу: http://www.longurlplease.com

Например:

http://bit.ly/rgCbf можно преобразовать в:

http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place

Я провел некоторую проверку в Firefox и увидел, что исходный URL не указан в заголовке.

1 Ответ

33 голосов
/ 14 апреля 2009

Введите urllib2, который предлагает самый простой способ сделать это:

>>> import urllib2
>>> fp = urllib2.urlopen('http://bit.ly/rgCbf')
>>> fp.geturl()
'http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place'

Для справки, однако, обратите внимание, что это также возможно с httplib:

>>> import httplib
>>> conn = httplib.HTTPConnection('bit.ly')
>>> conn.request('HEAD', '/rgCbf')
>>> response = conn.getresponse()
>>> response.getheader('location')
'http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place'

И с PycURL, хотя я не уверен, что это лучший способ сделать это с помощью:

>>> import pycurl
>>> conn = pycurl.Curl()
>>> conn.setopt(pycurl.URL, "http://bit.ly/rgCbf")
>>> conn.setopt(pycurl.FOLLOWLOCATION, 1)
>>> conn.setopt(pycurl.CUSTOMREQUEST, 'HEAD')
>>> conn.setopt(pycurl.NOBODY, True)
>>> conn.perform()
>>> conn.getinfo(pycurl.EFFECTIVE_URL)
'http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place'
...